From 1be43359334834acf01aba02fae0c335c677e043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=B6kdemir?= Date: Wed, 21 Oct 2026 21:37:38 +0300 Subject: [PATCH 1/2] feat: add baseline lifecycle and new-risk checks --- .github/workflows/action-fixture.yml | 2 +- .github/workflows/ci.yml | 5 +- CHANGELOG.md | 3 + CONTRIBUTING.md | 2 +- README.md | 15 +- ROADMAP.md | 2 +- action.yml | 13 + dist/action/index.js | 2 +- dist/baseline.js | 205 ++++++++++++++++ dist/cli.js | 200 +++++++++++++--- dist/markdown.js | 11 +- dist/summary.js | 2 + docs/architecture.md | 4 +- docs/cli.md | 17 ++ docs/ecosystem-workflow.md | 14 +- docs/examples/changeguard-baseline.json | 14 ++ docs/github-action.md | 11 + docs/support-matrix.md | 4 +- docs/threat-model.md | 2 + .../app/api/webhooks/products/route.ts | 4 + .../metafield-example/shopify.extension.toml | 13 + ecosystem-fixtures/shopify.app.toml | 12 + package-lock.json | 2 +- package.json | 3 +- scripts/ecosystem-smoke.mjs | 94 ++++++++ scripts/package-smoke.mjs | 5 + src/action.ts | 28 ++- src/baseline.ts | 223 ++++++++++++++++++ src/cli.ts | 180 +++++++++++--- src/core.ts | 1 + src/markdown.ts | 21 +- src/pr-review.ts | 2 + src/summary.ts | 2 + tests/action.test.mjs | 35 ++- tests/baseline-cli.test.mjs | 153 ++++++++++++ tests/baseline.test.mjs | 116 +++++++++ 36 files changed, 1332 insertions(+), 90 deletions(-) create mode 100644 dist/baseline.js create mode 100644 docs/examples/changeguard-baseline.json create mode 100644 ecosystem-fixtures/app/api/webhooks/products/route.ts create mode 100644 ecosystem-fixtures/extensions/metafield-example/shopify.extension.toml create mode 100644 ecosystem-fixtures/shopify.app.toml create mode 100644 scripts/ecosystem-smoke.mjs create mode 100644 src/baseline.ts create mode 100644 tests/baseline-cli.test.mjs create mode 100644 tests/baseline.test.mjs diff --git a/.github/workflows/action-fixture.yml b/.github/workflows/action-fixture.yml index 7f1b642..b83d72a 100644 --- a/.github/workflows/action-fixture.yml +++ b/.github/workflows/action-fixture.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - node: [20, 22, 24] + node: [22, 24] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd6d142..68d1dbc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ jobs: test: strategy: matrix: - node: [20, 22, 24] + node: [22, 24] runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 @@ -32,6 +32,7 @@ jobs: strategy: matrix: os: [macos-latest, windows-latest] + node: [22, 24] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 @@ -40,7 +41,7 @@ jobs: persist-credentials: false - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with: - node-version: 20 + node-version: ${{ matrix.node }} cache: npm - run: npm ci --ignore-scripts - run: npm run build diff --git a/CHANGELOG.md b/CHANGELOG.md index 9da1d59..3ac2f1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +- Add versioned, privacy-safe baselines that classify findings as new, existing, or resolved in CLI and Action reviews. +- Breaking: require Node.js 22 or newer for the CLI; Node.js 20 is no longer supported. CI covers Node.js 22 and 24; the GitHub Action remains on `node24`. + ## 0.6.0 - Report per-subscription Events change categories while ignoring equivalent query and filter formatting. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1a68e86..389b382 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,7 @@ You retain copyright in your contributions. By submitting a contribution, you ag ## Development -Requires Node.js 20 or newer. CI covers Node 20, 22, and 24. +Requires Node.js 22 or newer. CI covers Node.js 22 and 24; the bundled GitHub Action uses the Node.js 24 runtime. ```bash npm ci --ignore-scripts diff --git a/README.md b/README.md index 60d4af4..aeccc46 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ ChangeGuard is an offline, read-only semantic reviewer for `shopify.app*.toml` c Maintained by RexCode Digital Ltd. -Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. [Releases](https://github.com/RexCode-Digital/shopify-app-changeguard/releases) · [npm](https://www.npmjs.com/package/shopify-app-changeguard) · [Marketplace](https://github.com/marketplace/actions/changeguard-shopify-app-config-review) +Part of the **RexCode Shopify developer tools** suite. Requires Node.js 22 or later for the CLI. [Releases](https://github.com/RexCode-Digital/shopify-app-changeguard/releases) · [npm](https://www.npmjs.com/package/shopify-app-changeguard) · [Marketplace](https://github.com/marketplace/actions/changeguard-shopify-app-config-review) ## Quick start @@ -104,10 +104,12 @@ Use an exact patch release tag or a full commit SHA. The historical `v0.5` alias | `head_sha` | Pull request head commit SHA | | `fail_on` | Failure policy: `never`, `review`, or `unreviewed` | | `fail_on_risk` | Optional independent risk threshold: `none` (default), `low`, `medium`, or `high` | +| `baseline_path` | Optional repository-relative path to a versioned baseline JSON file | +| `fail_on_new` | Fail when the current review includes findings absent from the baseline | ### Action outputs -`outcome`, `finding_count`, `highest_severity`, `highest_risk`, `risk_threshold_exceeded`, `report`, `reviewed_file_count`, `unreviewed_count`, and `rule_ids`. +`outcome`, `finding_count`, `highest_severity`, `highest_risk`, `risk_threshold_exceeded`, `new_finding_count`, `existing_finding_count`, `resolved_finding_count`, `report`, `reviewed_file_count`, `unreviewed_count`, and `rule_ids`. The optional `fail_on_risk` policy is independent of `fail_on`: either policy can fail the job. `none` disables risk-based failure. The existing `fail_on` default and behaviour are unchanged; when it is `never`, an incomplete result remains visible as `outcome: incomplete` and is not represented as a complete review. Findings produce file-level GitHub warning annotations when a changed configuration file is known; no source line is inferred. @@ -115,6 +117,8 @@ The example above pins v0.5.2, which does not include `fail_on_risk` or `risk_th The bundled Action runs on GitHub's `node24` JavaScript Action runtime. Consumer jobs do not install project dependencies or compile ChangeGuard. +When `baseline_path` is set, the report classifies findings as `NEW`, `EXISTING`, or `RESOLVED`. `fail_on_new: true` fails only for new findings; without a baseline file, findings in the selected comparison are all new. The independent `fail_on` and `fail_on_risk` policies still apply to every current finding. Lifecycle count outputs are empty only when neither `baseline_path` nor `fail_on_new` enables classification. A missing or malformed selected baseline fails the Action instead of being treated as an empty review. + ## What it reviews | Area | Review behaviour | @@ -155,6 +159,8 @@ changeguard --before FILE --after FILE [--json] changeguard --before FILE --after FILE [--format human|json|markdown] [--fail-on ...] [--fail-on-risk none|low|medium|high] changeguard --base-ref REF --head-ref REF --file shopify.app.toml [--format human|json|markdown] [--fail-on ...] [--fail-on-risk ...] changeguard --base-ref REF --head-ref REF --all-configs [--format human|json|markdown] [--fail-on ...] [--fail-on-risk ...] +changeguard baseline create --baseline changeguard-baseline.json --base-ref main --head-ref HEAD --all-configs +changeguard baseline check --baseline changeguard-baseline.json --base-ref main --head-ref HEAD --all-configs --fail-on-new ``` Examples: @@ -178,6 +184,10 @@ npx shopify-app-changeguard --base-ref main --head-ref HEAD --all-configs --form `--fail-on never` and `--fail-on-risk none` are the defaults. `review` exits 1 when findings exist; a risk threshold exits 1 when a finding reaches that level. Input errors exit 2. In Git-range mode, incomplete reviews exit 2 under `review` or `unreviewed`; `never` reports them with an incomplete status without failing. Repository-wide reports group findings by configuration file and do not infer environment names from arbitrary filenames. +Baselines snapshot findings from one explicit comparison (`configuration-pair`, `git-file`, or `git-all`); they do not store commit IDs, timestamps, configuration values, absolute paths, or finding summaries. Check a baseline only with the same comparison kind. Fingerprints are SHA-256 digests of the rule, normalized repository-relative configuration path, field, stable risk metadata, and redacted semantic summary. A rename is a new path identity, so findings at the new path are new and findings at the old path are resolved. Baseline creation requires a complete analysis and refuses to overwrite a file. Explicit file-pair comparisons outside the repository need `--config-path` to provide a safe relative identity. + +`--fail-on-new` fails when at least one finding is new. `--fail-on` and `--fail-on-risk` remain independent and inspect all current findings, including `EXISTING` findings. Incomplete Git reviews fail with exit code 2 when `--fail-on-new` is selected. A missing, malformed, unsupported-version, symlinked, or out-of-repository baseline is an input error; it is never treated as an empty baseline. + See the [CLI reference](docs/cli.md). ## Security and privacy @@ -220,6 +230,7 @@ Building or maintaining Shopify apps? All four tools run offline and require no Shopify credentials. See the [coordinated workflow example](docs/ecosystem-workflow.md) to run all four published Actions in one pull-request workflow. +With side-by-side source checkouts, maintainers can run `node scripts/ecosystem-smoke.mjs` from ChangeGuard to exercise a synthetic consumer app against all four local CLIs under Node.js 22 or 24. ## Contributing diff --git a/ROADMAP.md b/ROADMAP.md index 85f0a4c..ea8e806 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,7 +2,7 @@ ## Now -- Keep comparisons deterministic, redacted, and well tested. +- Keep comparisons and baseline lifecycle deterministic, redacted, and well tested. - Publish a trustworthy bundled Action and smoke-tested npm CLI. - Document supported fields and limitations without implying Shopify affiliation. diff --git a/action.yml b/action.yml index 8e668e3..c2f6c37 100644 --- a/action.yml +++ b/action.yml @@ -20,6 +20,13 @@ inputs: description: 'Optional risk threshold: none, low, medium, or high' required: false default: none + baseline_path: + description: Optional repository-relative baseline JSON file to classify findings + required: false + fail_on_new: + description: Fail when the report contains findings absent from the selected baseline + required: false + default: 'false' outputs: outcome: @@ -32,6 +39,12 @@ outputs: description: Highest deterministic review risk, or none risk_threshold_exceeded: description: Whether any finding reaches fail_on_risk + new_finding_count: + description: Number of new findings when baseline classification is enabled + existing_finding_count: + description: Number of existing findings when baseline classification is enabled + resolved_finding_count: + description: Number of resolved findings when baseline classification is enabled report: description: JSON review report reviewed_file_count: diff --git a/dist/action/index.js b/dist/action/index.js index 0b5645d..acde9e9 100644 --- a/dist/action/index.js +++ b/dist/action/index.js @@ -1,3 +1,3 @@ import{createRequire as __WEBPACK_EXTERNAL_createRequire}from"module";var __webpack_modules__={8557:(e,t,A)=>{const r=A(9470);const s=global.Date;class Date extends s{constructor(e){super(e);this.isDate=true}toISOString(){return`${this.getUTCFullYear()}-${r(2,this.getUTCMonth()+1)}-${r(2,this.getUTCDate())}`}}e.exports=e=>{const t=new Date(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},9487:(e,t,A)=>{const r=A(9470);class FloatingDateTime extends Date{constructor(e){super(e+"Z");this.isFloating=true}toISOString(){const e=`${this.getUTCFullYear()}-${r(2,this.getUTCMonth()+1)}-${r(2,this.getUTCDate())}`;const t=`${r(2,this.getUTCHours())}:${r(2,this.getUTCMinutes())}:${r(2,this.getUTCSeconds())}.${r(3,this.getUTCMilliseconds())}`;return`${e}T${t}`}}e.exports=e=>{const t=new FloatingDateTime(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},6376:e=>{e.exports=e=>{const t=new Date(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},420:(e,t,A)=>{const r=A(9470);class Time extends Date{constructor(e){super(`0000-01-01T${e}Z`);this.isTime=true}toISOString(){return`${r(2,this.getUTCHours())}:${r(2,this.getUTCMinutes())}:${r(2,this.getUTCSeconds())}.${r(3,this.getUTCMilliseconds())}`}}e.exports=e=>{const t=new Time(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},9470:e=>{e.exports=(e,t)=>{t=String(t);while(t.length{const t=1114112;class ParserError extends Error{constructor(e,t,A){super("[ParserError] "+e,t,A);this.name="ParserError";this.code="ParserError";if(Error.captureStackTrace)Error.captureStackTrace(this,ParserError)}}class State{constructor(e){this.parser=e;this.buf="";this.returned=null;this.result=null;this.resultTable=null;this.resultArr=null}}class Parser{constructor(){this.pos=0;this.col=0;this.line=0;this.obj={};this.ctx=this.obj;this.stack=[];this._buf="";this.char=null;this.ii=0;this.state=new State(this.parseStart)}parse(e){if(e.length===0||e.length==null)return;this._buf=String(e);this.ii=-1;this.char=-1;let t;while(t===false||this.nextChar()){t=this.runOne()}this._buf=null}nextChar(){if(this.char===10){++this.line;this.col=-1}++this.ii;this.char=this._buf.codePointAt(this.ii);++this.pos;++this.col;return this.haveBuffer()}haveBuffer(){return this.ii{module.exports=makeParserClass(__nccwpck_require__(5991));module.exports.makeParserClass=makeParserClass;class TomlError extends Error{constructor(e){super(e);this.name="TomlError";if(Error.captureStackTrace)Error.captureStackTrace(this,TomlError);this.fromTOML=true;this.wrapped=null}}TomlError.wrap=e=>{const t=new TomlError(e.message);t.code=e.code;t.wrapped=e;return t};module.exports.TomlError=TomlError;const createDateTime=__nccwpck_require__(6376);const createDateTimeFloat=__nccwpck_require__(9487);const createDate=__nccwpck_require__(8557);const createTime=__nccwpck_require__(420);const CTRL_I=9;const CTRL_J=10;const CTRL_M=13;const CTRL_CHAR_BOUNDARY=31;const CHAR_SP=32;const CHAR_QUOT=34;const CHAR_NUM=35;const CHAR_APOS=39;const CHAR_PLUS=43;const CHAR_COMMA=44;const CHAR_HYPHEN=45;const CHAR_PERIOD=46;const CHAR_0=48;const CHAR_1=49;const CHAR_7=55;const CHAR_9=57;const CHAR_COLON=58;const CHAR_EQUALS=61;const CHAR_A=65;const CHAR_E=69;const CHAR_F=70;const CHAR_T=84;const CHAR_U=85;const CHAR_Z=90;const CHAR_LOWBAR=95;const CHAR_a=97;const CHAR_b=98;const CHAR_e=101;const CHAR_f=102;const CHAR_i=105;const CHAR_l=108;const CHAR_n=110;const CHAR_o=111;const CHAR_r=114;const CHAR_s=115;const CHAR_t=116;const CHAR_u=117;const CHAR_x=120;const CHAR_z=122;const CHAR_LCUB=123;const CHAR_RCUB=125;const CHAR_LSQB=91;const CHAR_BSOL=92;const CHAR_RSQB=93;const CHAR_DEL=127;const SURROGATE_FIRST=55296;const SURROGATE_LAST=57343;const escapes={[CHAR_b]:"\b",[CHAR_t]:"\t",[CHAR_n]:"\n",[CHAR_f]:"\f",[CHAR_r]:"\r",[CHAR_QUOT]:'"',[CHAR_BSOL]:"\\"};function isDigit(e){return e>=CHAR_0&&e<=CHAR_9}function isHexit(e){return e>=CHAR_A&&e<=CHAR_F||e>=CHAR_a&&e<=CHAR_f||e>=CHAR_0&&e<=CHAR_9}function isBit(e){return e===CHAR_1||e===CHAR_0}function isOctit(e){return e>=CHAR_0&&e<=CHAR_7}function isAlphaNumQuoteHyphen(e){return e>=CHAR_A&&e<=CHAR_Z||e>=CHAR_a&&e<=CHAR_z||e>=CHAR_0&&e<=CHAR_9||e===CHAR_APOS||e===CHAR_QUOT||e===CHAR_LOWBAR||e===CHAR_HYPHEN}function isAlphaNumHyphen(e){return e>=CHAR_A&&e<=CHAR_Z||e>=CHAR_a&&e<=CHAR_z||e>=CHAR_0&&e<=CHAR_9||e===CHAR_LOWBAR||e===CHAR_HYPHEN}const _type=Symbol("type");const _declared=Symbol("declared");const hasOwnProperty=Object.prototype.hasOwnProperty;const defineProperty=Object.defineProperty;const descriptor={configurable:true,enumerable:true,writable:true,value:undefined};function hasKey(e,t){if(hasOwnProperty.call(e,t))return true;if(t==="__proto__")defineProperty(e,"__proto__",descriptor);return false}const INLINE_TABLE=Symbol("inline-table");function InlineTable(){return Object.defineProperties({},{[_type]:{value:INLINE_TABLE}})}function isInlineTable(e){if(e===null||typeof e!=="object")return false;return e[_type]===INLINE_TABLE}const TABLE=Symbol("table");function Table(){return Object.defineProperties({},{[_type]:{value:TABLE},[_declared]:{value:false,writable:true}})}function isTable(e){if(e===null||typeof e!=="object")return false;return e[_type]===TABLE}const _contentType=Symbol("content-type");const INLINE_LIST=Symbol("inline-list");function InlineList(e){return Object.defineProperties([],{[_type]:{value:INLINE_LIST},[_contentType]:{value:e}})}function isInlineList(e){if(e===null||typeof e!=="object")return false;return e[_type]===INLINE_LIST}const LIST=Symbol("list");function List(){return Object.defineProperties([],{[_type]:{value:LIST}})}function isList(e){if(e===null||typeof e!=="object")return false;return e[_type]===LIST}let _custom;try{const utilInspect=eval("require('util').inspect");_custom=utilInspect.custom}catch(e){}const _inspect=_custom||"inspect";class BoxedBigInt{constructor(e){try{this.value=global.BigInt.asIntN(64,e)}catch(e){this.value=null}Object.defineProperty(this,_type,{value:INTEGER})}isNaN(){return this.value===null}toString(){return String(this.value)}[_inspect](){return`[BigInt: ${this.toString()}]}`}valueOf(){return this.value}}const INTEGER=Symbol("integer");function Integer(e){let t=Number(e);if(Object.is(t,-0))t=0;if(global.BigInt&&!Number.isSafeInteger(t)){return new BoxedBigInt(e)}else{return Object.defineProperties(new Number(t),{isNaN:{value:function(){return isNaN(this)}},[_type]:{value:INTEGER},[_inspect]:{value:()=>`[Integer: ${e}]`}})}}function isInteger(e){if(e===null||typeof e!=="object")return false;return e[_type]===INTEGER}const FLOAT=Symbol("float");function Float(e){return Object.defineProperties(new Number(e),{[_type]:{value:FLOAT},[_inspect]:{value:()=>`[Float: ${e}]`}})}function isFloat(e){if(e===null||typeof e!=="object")return false;return e[_type]===FLOAT}function tomlType(e){const t=typeof e;if(t==="object"){if(e===null)return"null";if(e instanceof Date)return"datetime";if(_type in e){switch(e[_type]){case INLINE_TABLE:return"inline-table";case INLINE_LIST:return"inline-list";case TABLE:return"table";case LIST:return"list";case FLOAT:return"float";case INTEGER:return"integer"}}}return t}function makeParserClass(e){class TOMLParser extends e{constructor(){super();this.ctx=this.obj=Table()}atEndOfWord(){return this.char===CHAR_NUM||this.char===CTRL_I||this.char===CHAR_SP||this.atEndOfLine()}atEndOfLine(){return this.char===e.END||this.char===CTRL_J||this.char===CTRL_M}parseStart(){if(this.char===e.END){return null}else if(this.char===CHAR_LSQB){return this.call(this.parseTableOrList)}else if(this.char===CHAR_NUM){return this.call(this.parseComment)}else if(this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M){return null}else if(isAlphaNumQuoteHyphen(this.char)){return this.callNow(this.parseAssignStatement)}else{throw this.error(new TomlError(`Unknown character "${this.char}"`))}}parseWhitespaceToEOL(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M){return null}else if(this.char===CHAR_NUM){return this.goto(this.parseComment)}else if(this.char===e.END||this.char===CTRL_J){return this.return()}else{throw this.error(new TomlError("Unexpected character, expected only whitespace or comments till end of line"))}}parseAssignStatement(){return this.callNow(this.parseAssign,this.recordAssignStatement)}recordAssignStatement(e){let t=this.ctx;let A=e.key.pop();for(let A of e.key){if(hasKey(t,A)&&(!isTable(t[A])||t[A][_declared])){throw this.error(new TomlError("Can't redefine existing key"))}t=t[A]=t[A]||Table()}if(hasKey(t,A)){throw this.error(new TomlError("Can't redefine existing key"))}if(isInteger(e.value)||isFloat(e.value)){t[A]=e.value.valueOf()}else{t[A]=e.value}return this.goto(this.parseWhitespaceToEOL)}parseAssign(){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}recordAssignKeyword(e){if(this.state.resultTable){this.state.resultTable.push(e)}else{this.state.resultTable=[e]}return this.goto(this.parseAssignKeywordPreDot)}parseAssignKeywordPreDot(){if(this.char===CHAR_PERIOD){return this.next(this.parseAssignKeywordPostDot)}else if(this.char!==CHAR_SP&&this.char!==CTRL_I){return this.goto(this.parseAssignEqual)}}parseAssignKeywordPostDot(){if(this.char!==CHAR_SP&&this.char!==CTRL_I){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}}parseAssignEqual(){if(this.char===CHAR_EQUALS){return this.next(this.parseAssignPreValue)}else{throw this.error(new TomlError('Invalid character, expected "="'))}}parseAssignPreValue(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else{return this.callNow(this.parseValue,this.recordAssignValue)}}recordAssignValue(e){return this.returnNow({key:this.state.resultTable,value:e})}parseComment(){do{if(this.char===e.END||this.char===CTRL_J){return this.return()}}while(this.nextChar())}parseTableOrList(){if(this.char===CHAR_LSQB){this.next(this.parseList)}else{return this.goto(this.parseTable)}}parseTable(){this.ctx=this.obj;return this.goto(this.parseTableNext)}parseTableNext(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else{return this.callNow(this.parseKeyword,this.parseTableMore)}}parseTableMore(e){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===CHAR_RSQB){if(hasKey(this.ctx,e)&&(!isTable(this.ctx[e])||this.ctx[e][_declared])){throw this.error(new TomlError("Can't redefine existing key"))}else{this.ctx=this.ctx[e]=this.ctx[e]||Table();this.ctx[_declared]=true}return this.next(this.parseWhitespaceToEOL)}else if(this.char===CHAR_PERIOD){if(!hasKey(this.ctx,e)){this.ctx=this.ctx[e]=Table()}else if(isTable(this.ctx[e])){this.ctx=this.ctx[e]}else if(isList(this.ctx[e])){this.ctx=this.ctx[e][this.ctx[e].length-1]}else{throw this.error(new TomlError("Can't redefine existing key"))}return this.next(this.parseTableNext)}else{throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}}parseList(){this.ctx=this.obj;return this.goto(this.parseListNext)}parseListNext(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else{return this.callNow(this.parseKeyword,this.parseListMore)}}parseListMore(e){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===CHAR_RSQB){if(!hasKey(this.ctx,e)){this.ctx[e]=List()}if(isInlineList(this.ctx[e])){throw this.error(new TomlError("Can't extend an inline array"))}else if(isList(this.ctx[e])){const t=Table();this.ctx[e].push(t);this.ctx=t}else{throw this.error(new TomlError("Can't redefine an existing key"))}return this.next(this.parseListEnd)}else if(this.char===CHAR_PERIOD){if(!hasKey(this.ctx,e)){this.ctx=this.ctx[e]=Table()}else if(isInlineList(this.ctx[e])){throw this.error(new TomlError("Can't extend an inline array"))}else if(isInlineTable(this.ctx[e])){throw this.error(new TomlError("Can't extend an inline table"))}else if(isList(this.ctx[e])){this.ctx=this.ctx[e][this.ctx[e].length-1]}else if(isTable(this.ctx[e])){this.ctx=this.ctx[e]}else{throw this.error(new TomlError("Can't redefine an existing key"))}return this.next(this.parseListNext)}else{throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}}parseListEnd(e){if(this.char===CHAR_RSQB){return this.next(this.parseWhitespaceToEOL)}else{throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}}parseValue(){if(this.char===e.END){throw this.error(new TomlError("Key without value"))}else if(this.char===CHAR_QUOT){return this.next(this.parseDoubleString)}if(this.char===CHAR_APOS){return this.next(this.parseSingleString)}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){return this.goto(this.parseNumberSign)}else if(this.char===CHAR_i){return this.next(this.parseInf)}else if(this.char===CHAR_n){return this.next(this.parseNan)}else if(isDigit(this.char)){return this.goto(this.parseNumberOrDateTime)}else if(this.char===CHAR_t||this.char===CHAR_f){return this.goto(this.parseBoolean)}else if(this.char===CHAR_LSQB){return this.call(this.parseInlineList,this.recordValue)}else if(this.char===CHAR_LCUB){return this.call(this.parseInlineTable,this.recordValue)}else{throw this.error(new TomlError("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table"))}}recordValue(e){return this.returnNow(e)}parseInf(){if(this.char===CHAR_n){return this.next(this.parseInf2)}else{throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}}parseInf2(){if(this.char===CHAR_f){if(this.state.buf==="-"){return this.return(-Infinity)}else{return this.return(Infinity)}}else{throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}}parseNan(){if(this.char===CHAR_a){return this.next(this.parseNan2)}else{throw this.error(new TomlError('Unexpected character, expected "nan"'))}}parseNan2(){if(this.char===CHAR_n){return this.return(NaN)}else{throw this.error(new TomlError('Unexpected character, expected "nan"'))}}parseKeyword(){if(this.char===CHAR_QUOT){return this.next(this.parseBasicString)}else if(this.char===CHAR_APOS){return this.next(this.parseLiteralString)}else{return this.goto(this.parseBareKey)}}parseBareKey(){do{if(this.char===e.END){throw this.error(new TomlError("Key ended without value"))}else if(isAlphaNumHyphen(this.char)){this.consume()}else if(this.state.buf.length===0){throw this.error(new TomlError("Empty bare keys are not allowed"))}else{return this.returnNow()}}while(this.nextChar())}parseSingleString(){if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiStringMaybe)}else{return this.goto(this.parseLiteralString)}}parseLiteralString(){do{if(this.char===CHAR_APOS){return this.return()}else if(this.atEndOfLine()){throw this.error(new TomlError("Unterminated string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}parseLiteralMultiStringMaybe(){if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiString)}else{return this.returnNow()}}parseLiteralMultiString(){if(this.char===CTRL_M){return null}else if(this.char===CTRL_J){return this.next(this.parseLiteralMultiStringContent)}else{return this.goto(this.parseLiteralMultiStringContent)}}parseLiteralMultiStringContent(){do{if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiEnd)}else if(this.char===e.END){throw this.error(new TomlError("Unterminated multi-line string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}parseLiteralMultiEnd(){if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiEnd2)}else{this.state.buf+="'";return this.goto(this.parseLiteralMultiStringContent)}}parseLiteralMultiEnd2(){if(this.char===CHAR_APOS){return this.return()}else{this.state.buf+="''";return this.goto(this.parseLiteralMultiStringContent)}}parseDoubleString(){if(this.char===CHAR_QUOT){return this.next(this.parseMultiStringMaybe)}else{return this.goto(this.parseBasicString)}}parseBasicString(){do{if(this.char===CHAR_BSOL){return this.call(this.parseEscape,this.recordEscapeReplacement)}else if(this.char===CHAR_QUOT){return this.return()}else if(this.atEndOfLine()){throw this.error(new TomlError("Unterminated string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}recordEscapeReplacement(e){this.state.buf+=e;return this.goto(this.parseBasicString)}parseMultiStringMaybe(){if(this.char===CHAR_QUOT){return this.next(this.parseMultiString)}else{return this.returnNow()}}parseMultiString(){if(this.char===CTRL_M){return null}else if(this.char===CTRL_J){return this.next(this.parseMultiStringContent)}else{return this.goto(this.parseMultiStringContent)}}parseMultiStringContent(){do{if(this.char===CHAR_BSOL){return this.call(this.parseMultiEscape,this.recordMultiEscapeReplacement)}else if(this.char===CHAR_QUOT){return this.next(this.parseMultiEnd)}else if(this.char===e.END){throw this.error(new TomlError("Unterminated multi-line string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}errorControlCharInString(){let e="\\u00";if(this.char<16){e+="0"}e+=this.char.toString(16);return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${e} instead`))}recordMultiEscapeReplacement(e){this.state.buf+=e;return this.goto(this.parseMultiStringContent)}parseMultiEnd(){if(this.char===CHAR_QUOT){return this.next(this.parseMultiEnd2)}else{this.state.buf+='"';return this.goto(this.parseMultiStringContent)}}parseMultiEnd2(){if(this.char===CHAR_QUOT){return this.return()}else{this.state.buf+='""';return this.goto(this.parseMultiStringContent)}}parseMultiEscape(){if(this.char===CTRL_M||this.char===CTRL_J){return this.next(this.parseMultiTrim)}else if(this.char===CHAR_SP||this.char===CTRL_I){return this.next(this.parsePreMultiTrim)}else{return this.goto(this.parseEscape)}}parsePreMultiTrim(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===CTRL_M||this.char===CTRL_J){return this.next(this.parseMultiTrim)}else{throw this.error(new TomlError("Can't escape whitespace"))}}parseMultiTrim(){if(this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M){return null}else{return this.returnNow()}}parseEscape(){if(this.char in escapes){return this.return(escapes[this.char])}else if(this.char===CHAR_u){return this.call(this.parseSmallUnicode,this.parseUnicodeReturn)}else if(this.char===CHAR_U){return this.call(this.parseLargeUnicode,this.parseUnicodeReturn)}else{throw this.error(new TomlError("Unknown escape character: "+this.char))}}parseUnicodeReturn(e){try{const t=parseInt(e,16);if(t>=SURROGATE_FIRST&&t<=SURROGATE_LAST){throw this.error(new TomlError("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved"))}return this.returnNow(String.fromCodePoint(t))}catch(e){throw this.error(TomlError.wrap(e))}}parseSmallUnicode(){if(!isHexit(this.char)){throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"))}else{this.consume();if(this.state.buf.length>=4)return this.return()}}parseLargeUnicode(){if(!isHexit(this.char)){throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"))}else{this.consume();if(this.state.buf.length>=8)return this.return()}}parseNumberSign(){this.consume();return this.next(this.parseMaybeSignedInfOrNan)}parseMaybeSignedInfOrNan(){if(this.char===CHAR_i){return this.next(this.parseInf)}else if(this.char===CHAR_n){return this.next(this.parseNan)}else{return this.callNow(this.parseNoUnder,this.parseNumberIntegerStart)}}parseNumberIntegerStart(){if(this.char===CHAR_0){this.consume();return this.next(this.parseNumberIntegerExponentOrDecimal)}else{return this.goto(this.parseNumberInteger)}}parseNumberIntegerExponentOrDecimal(){if(this.char===CHAR_PERIOD){this.consume();return this.call(this.parseNoUnder,this.parseNumberFloat)}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else{return this.returnNow(Integer(this.state.buf))}}parseNumberInteger(){if(isDigit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder)}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else if(this.char===CHAR_PERIOD){this.consume();return this.call(this.parseNoUnder,this.parseNumberFloat)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseNoUnder(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD||this.char===CHAR_E||this.char===CHAR_e){throw this.error(new TomlError("Unexpected character, expected digit"))}else if(this.atEndOfWord()){throw this.error(new TomlError("Incomplete number"))}return this.returnNow()}parseNoUnderHexOctBinLiteral(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD){throw this.error(new TomlError("Unexpected character, expected digit"))}else if(this.atEndOfWord()){throw this.error(new TomlError("Incomplete number"))}return this.returnNow()}parseNumberFloat(){if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder,this.parseNumberFloat)}else if(isDigit(this.char)){this.consume()}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else{return this.returnNow(Float(this.state.buf))}}parseNumberExponentSign(){if(isDigit(this.char)){return this.goto(this.parseNumberExponent)}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){this.consume();this.call(this.parseNoUnder,this.parseNumberExponent)}else{throw this.error(new TomlError("Unexpected character, expected -, + or digit"))}}parseNumberExponent(){if(isDigit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder)}else{return this.returnNow(Float(this.state.buf))}}parseNumberOrDateTime(){if(this.char===CHAR_0){this.consume();return this.next(this.parseNumberBaseOrDateTime)}else{return this.goto(this.parseNumberOrDateTimeOnly)}}parseNumberOrDateTimeOnly(){if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder,this.parseNumberInteger)}else if(isDigit(this.char)){this.consume();if(this.state.buf.length>4)this.next(this.parseNumberInteger)}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else if(this.char===CHAR_PERIOD){this.consume();return this.call(this.parseNoUnder,this.parseNumberFloat)}else if(this.char===CHAR_HYPHEN){return this.goto(this.parseDateTime)}else if(this.char===CHAR_COLON){return this.goto(this.parseOnlyTimeHour)}else{return this.returnNow(Integer(this.state.buf))}}parseDateTimeOnly(){if(this.state.buf.length<4){if(isDigit(this.char)){return this.consume()}else if(this.char===CHAR_COLON){return this.goto(this.parseOnlyTimeHour)}else{throw this.error(new TomlError("Expected digit while parsing year part of a date"))}}else{if(this.char===CHAR_HYPHEN){return this.goto(this.parseDateTime)}else{throw this.error(new TomlError("Expected hyphen (-) while parsing year part of date"))}}}parseNumberBaseOrDateTime(){if(this.char===CHAR_b){this.consume();return this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerBin)}else if(this.char===CHAR_o){this.consume();return this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerOct)}else if(this.char===CHAR_x){this.consume();return this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerHex)}else if(this.char===CHAR_PERIOD){return this.goto(this.parseNumberInteger)}else if(isDigit(this.char)){return this.goto(this.parseDateTimeOnly)}else{return this.returnNow(Integer(this.state.buf))}}parseIntegerHex(){if(isHexit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnderHexOctBinLiteral)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseIntegerOct(){if(isOctit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnderHexOctBinLiteral)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseIntegerBin(){if(isBit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnderHexOctBinLiteral)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseDateTime(){if(this.state.buf.length<4){throw this.error(new TomlError("Years less than 1000 must be zero padded to four characters"))}this.state.result=this.state.buf;this.state.buf="";return this.next(this.parseDateMonth)}parseDateMonth(){if(this.char===CHAR_HYPHEN){if(this.state.buf.length<2){throw this.error(new TomlError("Months less than 10 must be zero padded to two characters"))}this.state.result+="-"+this.state.buf;this.state.buf="";return this.next(this.parseDateDay)}else if(isDigit(this.char)){this.consume()}else{throw this.error(new TomlError("Incomplete datetime"))}}parseDateDay(){if(this.char===CHAR_T||this.char===CHAR_SP){if(this.state.buf.length<2){throw this.error(new TomlError("Days less than 10 must be zero padded to two characters"))}this.state.result+="-"+this.state.buf;this.state.buf="";return this.next(this.parseStartTimeHour)}else if(this.atEndOfWord()){return this.returnNow(createDate(this.state.result+"-"+this.state.buf))}else if(isDigit(this.char)){this.consume()}else{throw this.error(new TomlError("Incomplete datetime"))}}parseStartTimeHour(){if(this.atEndOfWord()){return this.returnNow(createDate(this.state.result))}else{return this.goto(this.parseTimeHour)}}parseTimeHour(){if(this.char===CHAR_COLON){if(this.state.buf.length<2){throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"))}this.state.result+="T"+this.state.buf;this.state.buf="";return this.next(this.parseTimeMin)}else if(isDigit(this.char)){this.consume()}else{throw this.error(new TomlError("Incomplete datetime"))}}parseTimeMin(){if(this.state.buf.length<2&&isDigit(this.char)){this.consume()}else if(this.state.buf.length===2&&this.char===CHAR_COLON){this.state.result+=":"+this.state.buf;this.state.buf="";return this.next(this.parseTimeSec)}else{throw this.error(new TomlError("Incomplete datetime"))}}parseTimeSec(){if(isDigit(this.char)){this.consume();if(this.state.buf.length===2){this.state.result+=":"+this.state.buf;this.state.buf="";return this.next(this.parseTimeZoneOrFraction)}}else{throw this.error(new TomlError("Incomplete datetime"))}}parseOnlyTimeHour(){if(this.char===CHAR_COLON){if(this.state.buf.length<2){throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"))}this.state.result=this.state.buf;this.state.buf="";return this.next(this.parseOnlyTimeMin)}else{throw this.error(new TomlError("Incomplete time"))}}parseOnlyTimeMin(){if(this.state.buf.length<2&&isDigit(this.char)){this.consume()}else if(this.state.buf.length===2&&this.char===CHAR_COLON){this.state.result+=":"+this.state.buf;this.state.buf="";return this.next(this.parseOnlyTimeSec)}else{throw this.error(new TomlError("Incomplete time"))}}parseOnlyTimeSec(){if(isDigit(this.char)){this.consume();if(this.state.buf.length===2){return this.next(this.parseOnlyTimeFractionMaybe)}}else{throw this.error(new TomlError("Incomplete time"))}}parseOnlyTimeFractionMaybe(){this.state.result+=":"+this.state.buf;if(this.char===CHAR_PERIOD){this.state.buf="";this.next(this.parseOnlyTimeFraction)}else{return this.return(createTime(this.state.result))}}parseOnlyTimeFraction(){if(isDigit(this.char)){this.consume()}else if(this.atEndOfWord()){if(this.state.buf.length===0)throw this.error(new TomlError("Expected digit in milliseconds"));return this.returnNow(createTime(this.state.result+"."+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}}parseTimeZoneOrFraction(){if(this.char===CHAR_PERIOD){this.consume();this.next(this.parseDateTimeFraction)}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){this.consume();this.next(this.parseTimeZoneHour)}else if(this.char===CHAR_Z){this.consume();return this.return(createDateTime(this.state.result+this.state.buf))}else if(this.atEndOfWord()){return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}}parseDateTimeFraction(){if(isDigit(this.char)){this.consume()}else if(this.state.buf.length===1){throw this.error(new TomlError("Expected digit in milliseconds"))}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){this.consume();this.next(this.parseTimeZoneHour)}else if(this.char===CHAR_Z){this.consume();return this.return(createDateTime(this.state.result+this.state.buf))}else if(this.atEndOfWord()){return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}}parseTimeZoneHour(){if(isDigit(this.char)){this.consume();if(/\d\d$/.test(this.state.buf))return this.next(this.parseTimeZoneSep)}else{throw this.error(new TomlError("Unexpected character in datetime, expected digit"))}}parseTimeZoneSep(){if(this.char===CHAR_COLON){this.consume();this.next(this.parseTimeZoneMin)}else{throw this.error(new TomlError("Unexpected character in datetime, expected colon"))}}parseTimeZoneMin(){if(isDigit(this.char)){this.consume();if(/\d\d$/.test(this.state.buf))return this.return(createDateTime(this.state.result+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected digit"))}}parseBoolean(){if(this.char===CHAR_t){this.consume();return this.next(this.parseTrue_r)}else if(this.char===CHAR_f){this.consume();return this.next(this.parseFalse_a)}}parseTrue_r(){if(this.char===CHAR_r){this.consume();return this.next(this.parseTrue_u)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseTrue_u(){if(this.char===CHAR_u){this.consume();return this.next(this.parseTrue_e)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseTrue_e(){if(this.char===CHAR_e){return this.return(true)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_a(){if(this.char===CHAR_a){this.consume();return this.next(this.parseFalse_l)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_l(){if(this.char===CHAR_l){this.consume();return this.next(this.parseFalse_s)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_s(){if(this.char===CHAR_s){this.consume();return this.next(this.parseFalse_e)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_e(){if(this.char===CHAR_e){return this.return(false)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseInlineList(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J){return null}else if(this.char===e.END){throw this.error(new TomlError("Unterminated inline array"))}else if(this.char===CHAR_NUM){return this.call(this.parseComment)}else if(this.char===CHAR_RSQB){return this.return(this.state.resultArr||InlineList())}else{return this.callNow(this.parseValue,this.recordInlineListValue)}}recordInlineListValue(e){if(this.state.resultArr){const t=this.state.resultArr[_contentType];const A=tomlType(e);if(t!==A){throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${t} and ${A}`))}}else{this.state.resultArr=InlineList(tomlType(e))}if(isFloat(e)||isInteger(e)){this.state.resultArr.push(e.valueOf())}else{this.state.resultArr.push(e)}return this.goto(this.parseInlineListNext)}parseInlineListNext(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J){return null}else if(this.char===CHAR_NUM){return this.call(this.parseComment)}else if(this.char===CHAR_COMMA){return this.next(this.parseInlineList)}else if(this.char===CHAR_RSQB){return this.goto(this.parseInlineList)}else{throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}}parseInlineTable(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===e.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M){throw this.error(new TomlError("Unterminated inline array"))}else if(this.char===CHAR_RCUB){return this.return(this.state.resultTable||InlineTable())}else{if(!this.state.resultTable)this.state.resultTable=InlineTable();return this.callNow(this.parseAssign,this.recordInlineTableValue)}}recordInlineTableValue(e){let t=this.state.resultTable;let A=e.key.pop();for(let A of e.key){if(hasKey(t,A)&&(!isTable(t[A])||t[A][_declared])){throw this.error(new TomlError("Can't redefine existing key"))}t=t[A]=t[A]||Table()}if(hasKey(t,A)){throw this.error(new TomlError("Can't redefine existing key"))}if(isInteger(e.value)||isFloat(e.value)){t[A]=e.value.valueOf()}else{t[A]=e.value}return this.goto(this.parseInlineTableNext)}parseInlineTableNext(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===e.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M){throw this.error(new TomlError("Unterminated inline array"))}else if(this.char===CHAR_COMMA){return this.next(this.parseInlineTable)}else if(this.char===CHAR_RCUB){return this.goto(this.parseInlineTable)}else{throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}}}return TOMLParser}},7072:(e,t,A)=>{e.exports=parseAsync;const r=A(2862);const s=A(7349);function parseAsync(e,t){if(!t)t={};const A=0;const n=t.blocksize||40960;const i=new r;return new Promise((e,t)=>{setImmediate(parseAsyncNext,A,n,e,t)});function parseAsyncNext(t,A,r,n){if(t>=e.length){try{return r(i.finish())}catch(t){return n(s(t,e))}}try{i.parse(e.slice(t,t+A));setImmediate(parseAsyncNext,t+A,A,r,n)}catch(t){n(s(t,e))}}}},7349:e=>{e.exports=prettyError;function prettyError(e,t){if(e.pos==null||e.line==null)return e;let A=e.message;A+=` at row ${e.line+1}, col ${e.col+1}, pos ${e.pos}:\n`;if(t&&t.split){const r=t.split(/\n/);const s=String(Math.min(r.length,e.line+3)).length;let n=" ";while(n.length "+r[t]+"\n";A+=n+" ";for(let t=0;t{e.exports=parseStream;const r=A(2203);const s=A(2862);function parseStream(e){if(e){return parseReadable(e)}else{return parseTransform(e)}}function parseReadable(e){const t=new s;e.setEncoding("utf8");return new Promise((A,r)=>{let s;let n=false;let i=false;function finish(){n=true;if(s)return;try{A(t.finish())}catch(e){r(e)}}function error(e){i=true;r(e)}e.once("end",finish);e.once("error",error);readNext();function readNext(){s=true;let A;while((A=e.read())!==null){try{t.parse(A)}catch(e){return error(e)}}s=false;if(n)return finish();if(i)return;e.once("readable",readNext)}})}function parseTransform(){const e=new s;return new r.Transform({objectMode:true,transform(t,A,r){try{e.parse(t.toString(A))}catch(e){this.emit("error",e)}r()},flush(t){try{this.push(e.finish())}catch(e){this.emit("error",e)}t()}})}},4171:(e,t,A)=>{e.exports=parseString;const r=A(2862);const s=A(7349);function parseString(e){if(global.Buffer&&global.Buffer.isBuffer(e)){e=e.toString("utf8")}const t=new r;try{t.parse(e);return t.finish()}catch(t){throw s(t,e)}}},9185:(e,t,A)=>{e.exports=A(4171);e.exports.async=A(7072);e.exports.stream=A(6874);e.exports.prettyError=A(7349)},3887:e=>{e.exports=stringify;e.exports.value=stringifyInline;function stringify(e){if(e===null)throw typeError("null");if(e===void 0)throw typeError("undefined");if(typeof e!=="object")throw typeError(typeof e);if(typeof e.toJSON==="function")e=e.toJSON();if(e==null)return null;const t=tomlType(e);if(t!=="table")throw typeError(t);return stringifyObject("","",e)}function typeError(e){return new Error("Can only stringify objects, not "+e)}function arrayOneTypeError(){return new Error("Array values can't have mixed types")}function getInlineKeys(e){return Object.keys(e).filter(t=>isInline(e[t]))}function getComplexKeys(e){return Object.keys(e).filter(t=>!isInline(e[t]))}function toJSON(e){let t=Array.isArray(e)?[]:Object.prototype.hasOwnProperty.call(e,"__proto__")?{["__proto__"]:undefined}:{};for(let A of Object.keys(e)){if(e[A]&&typeof e[A].toJSON==="function"&&!("toISOString"in e[A])){t[A]=e[A].toJSON()}else{t[A]=e[A]}}return t}function stringifyObject(e,t,A){A=toJSON(A);var r;var s;r=getInlineKeys(A);s=getComplexKeys(A);var n=[];var i=t||"";r.forEach(e=>{var t=tomlType(A[e]);if(t!=="undefined"&&t!=="null"){n.push(i+stringifyKey(e)+" = "+stringifyAnyInline(A[e],true))}});if(n.length>0)n.push("");var o=e&&r.length>0?t+" ":"";s.forEach(t=>{n.push(stringifyComplex(e,o,t,A[t]))});return n.join("\n")}function isInline(e){switch(tomlType(e)){case"undefined":case"null":case"integer":case"nan":case"float":case"boolean":case"string":case"datetime":return true;case"array":return e.length===0||tomlType(e[0])!=="table";case"table":return Object.keys(e).length===0;default:return false}}function tomlType(e){if(e===undefined){return"undefined"}else if(e===null){return"null"}else if(typeof e==="bigint"||Number.isInteger(e)&&!Object.is(e,-0)){return"integer"}else if(typeof e==="number"){return"float"}else if(typeof e==="boolean"){return"boolean"}else if(typeof e==="string"){return"string"}else if("toISOString"in e){return isNaN(e)?"undefined":"datetime"}else if(Array.isArray(e)){return"array"}else{return"table"}}function stringifyKey(e){var t=String(e);if(/^[-A-Za-z0-9_]+$/.test(t)){return t}else{return stringifyBasicString(t)}}function stringifyBasicString(e){return'"'+escapeString(e).replace(/"/g,'\\"')+'"'}function stringifyLiteralString(e){return"'"+e+"'"}function numpad(e,t){while(t.length"\\u"+numpad(4,e.codePointAt(0).toString(16)))}function stringifyMultilineString(e){let t=e.split(/\n/).map(e=>escapeString(e).replace(/"(?="")/g,'\\"')).join("\n");if(t.slice(-1)==='"')t+="\\\n";return'"""\n'+t+'"""'}function stringifyAnyInline(e,t){let A=tomlType(e);if(A==="string"){if(t&&/\n/.test(e)){A="string-multiline"}else if(!/[\b\t\n\f\r']/.test(e)&&/"/.test(e)){A="string-literal"}}return stringifyInline(e,A)}function stringifyInline(e,t){if(!t)t=tomlType(e);switch(t){case"string-multiline":return stringifyMultilineString(e);case"string":return stringifyBasicString(e);case"string-literal":return stringifyLiteralString(e);case"integer":return stringifyInteger(e);case"float":return stringifyFloat(e);case"boolean":return stringifyBoolean(e);case"datetime":return stringifyDatetime(e);case"array":return stringifyInlineArray(e.filter(e=>tomlType(e)!=="null"&&tomlType(e)!=="undefined"&&tomlType(e)!=="nan"));case"table":return stringifyInlineTable(e);default:throw typeError(t)}}function stringifyInteger(e){return String(e).replace(/\B(?=(\d{3})+(?!\d))/g,"_")}function stringifyFloat(e){if(e===Infinity){return"inf"}else if(e===-Infinity){return"-inf"}else if(Object.is(e,NaN)){return"nan"}else if(Object.is(e,-0)){return"-0.0"}var t=String(e).split(".");var A=t[0];var r=t[1]||0;return stringifyInteger(A)+"."+r}function stringifyBoolean(e){return String(e)}function stringifyDatetime(e){return e.toISOString()}function isNumber(e){return e==="float"||e==="integer"}function arrayType(e){var t=tomlType(e[0]);if(e.every(e=>tomlType(e)===t))return t;if(e.every(e=>isNumber(tomlType(e))))return"float";return"mixed"}function validateArray(e){const t=arrayType(e);if(t==="mixed"){throw arrayOneTypeError()}return t}function stringifyInlineArray(e){e=toJSON(e);const t=validateArray(e);var A="[";var r=e.map(e=>stringifyInline(e,t));if(r.join(", ").length>60||/\n/.test(r)){A+="\n "+r.join(",\n ")+"\n"}else{A+=" "+r.join(", ")+(r.length>0?" ":"")}return A+"]"}function stringifyInlineTable(e){e=toJSON(e);var t=[];Object.keys(e).forEach(A=>{t.push(stringifyKey(A)+" = "+stringifyAnyInline(e[A],false))});return"{ "+t.join(", ")+(t.length>0?" ":"")+"}"}function stringifyComplex(e,t,A,r){var s=tomlType(r);if(s==="array"){return stringifyArrayOfTables(e,t,A,r)}else if(s==="table"){return stringifyComplexTable(e,t,A,r)}else{throw typeError(s)}}function stringifyArrayOfTables(e,t,A,r){r=toJSON(r);validateArray(r);var s=tomlType(r[0]);if(s!=="table")throw typeError(s);var n=e+stringifyKey(A);var i="";r.forEach(e=>{if(i.length>0)i+="\n";i+=t+"[["+n+"]]\n";i+=stringifyObject(n+".",t,e)});return i}function stringifyComplexTable(e,t,A,r){var s=e+stringifyKey(A);var n="";if(getInlineKeys(r).length>0){n+=t+"["+s+"]\n"}return n+stringifyObject(s+".",t,r)}},4572:(e,t,A)=>{t.parse=A(9185);A(3887)},770:(e,t,A)=>{A(218)},218:(e,t,A)=>{var r;var s=A(9278);var n=A(4756);var i=A(8611);var o=A(5692);var a=A(4434);var c=A(2613);var l=A(9023);r=httpOverHttp;r=httpsOverHttp;r=httpOverHttps;r=httpsOverHttps;function httpOverHttp(e){var t=new TunnelingAgent(e);t.request=i.request;return t}function httpsOverHttp(e){var t=new TunnelingAgent(e);t.request=i.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||i.Agent.defaultMaxSockets;t.requests=[];t.sockets=[];t.on("free",function onFree(e,A,r,s){var n=toOptions(A,r,s);for(var i=0,o=t.requests.length;i=this.maxSockets){s.requests.push(n);return}s.createSocket(n,function(t){t.on("free",onFree);t.on("close",onCloseOrRemove);t.on("agentRemove",onCloseOrRemove);e.onSocket(t);function onFree(){s.emit("free",t,n)}function onCloseOrRemove(e){s.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 r={};A.sockets.push(r);var s=mergeOptions({},A.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:false,headers:{host:e.host+":"+e.port}});if(e.localAddress){s.localAddress=e.localAddress}if(s.proxyAuth){s.headers=s.headers||{};s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")}h("making CONNECT request");var n=A.request(s);n.useChunkedEncodingByDefault=false;n.once("response",onResponse);n.once("upgrade",onUpgrade);n.once("connect",onConnect);n.once("error",onError);n.end();function onResponse(e){e.upgrade=true}function onUpgrade(e,t,A){process.nextTick(function(){onConnect(e,t,A)})}function onConnect(s,i,o){n.removeAllListeners();i.removeAllListeners();if(s.statusCode!==200){h("tunneling socket could not be established, statusCode=%d",s.statusCode);i.destroy();var a=new Error("tunneling socket could not be established, "+"statusCode="+s.statusCode);a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(r);return}if(o.length>0){h("got illegal response body from proxy");i.destroy();var a=new Error("got illegal response body from proxy");a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(r);return}h("tunneling connection has established");A.sockets[A.sockets.indexOf(r)]=i;return t(i)}function onError(t){n.removeAllListeners();h("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var s=new Error("tunneling socket could not be established, "+"cause="+t.message);s.code="ECONNRESET";e.request.emit("error",s);A.removeSocket(r)}};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(r){var s=e.request.getHeader("host");var i=mergeOptions({},A.options,{socket:r,servername:s?s.replace(/:.*$/,""):e.host});var o=n.connect(0,i);A.sockets[A.sockets.indexOf(r)]=o;t(o)})}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{var r;const s=A(3701);const n=A(883);const i=A(628);const o=A(837);const a=A(7405);const c=A(6672);const l=A(3137);const h=A(50);const g=A(8707);const u=A(3440);const{InvalidArgumentError:E}=g;const Q=A(6615);const C=A(9136);const B=A(7365);const I=A(7501);const d=A(4004);const f=A(2429);const p=A(7816);const{getGlobalDispatcher:w,setGlobalDispatcher:y}=A(2581);const m=A(8155);const R=A(8754);const D=A(5092);Object.assign(n.prototype,Q);r=n;r=s;r=i;r=o;r=a;r=c;r=l;r=h;r=p;r=m;r=R;r=D;r={redirect:A(1514),retry:A(2026),dump:A(8060),dns:A(379)};r=C;r=g;r={parseHeaders:u.parseHeaders,headerNameToString:u.headerNameToString};function makeDispatcher(e){return(t,A,r)=>{if(typeof A==="function"){r=A;A=null}if(!t||typeof t!=="string"&&typeof t!=="object"&&!(t instanceof URL)){throw new E("invalid url")}if(A!=null&&typeof A!=="object"){throw new E("invalid opts")}if(A&&A.path!=null){if(typeof A.path!=="string"){throw new E("invalid opts.path")}let e=A.path;if(!A.path.startsWith("/")){e=`/${e}`}t=new URL(u.parseOrigin(t).origin+e)}else{if(!A){A=typeof t==="object"?t:{}}t=u.parseURL(t)}const{agent:s,dispatcher:n=w()}=A;if(s){throw new E("unsupported opts.agent. Did you mean opts.client?")}return e.call(n,{...A,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:A.method||(A.body?"PUT":"GET")},r)}}r=y;r=w;const b=A(4398).fetch;r=async function fetch(e,t=undefined){try{return await b(e,t)}catch(e){if(e&&typeof e==="object"){Error.captureStackTrace(e)}throw e}};A(660).Headers;A(9051).Response;A(9967).Request;A(5910).FormData;r=globalThis.File??A(4573).File;A(8355).FileReader;const{setGlobalOrigin:k,getGlobalOrigin:S}=A(1059);r=k;r=S;const{CacheStorage:F}=A(3245);const{kConstruct:N}=A(109);r=new F(N);const{deleteCookie:U,getCookies:T,getSetCookies:M,setCookie:L}=A(9061);r=U;r=T;r=M;r=L;const{parseMIMEType:v,serializeAMimeType:H}=A(1900);r=v;r=H;const{CloseEvent:x,ErrorEvent:G,MessageEvent:Y}=A(5188);A(3726).WebSocket;r=x;r=G;r=Y;r=makeDispatcher(Q.request);r=makeDispatcher(Q.stream);r=makeDispatcher(Q.pipeline);r=makeDispatcher(Q.connect);r=makeDispatcher(Q.upgrade);r=B;r=d;r=I;r=f;const{EventSource:J}=A(1238);r=J},158:(e,t,A)=>{const{addAbortListener:r}=A(3440);const{RequestAbortedError:s}=A(8707);const n=Symbol("kListener");const i=Symbol("kSignal");function abort(e){if(e.abort){e.abort(e[i]?.reason)}else{e.reason=e[i]?.reason??new s}removeSignal(e)}function addSignal(e,t){e.reason=null;e[i]=null;e[n]=null;if(!t){return}if(t.aborted){abort(e);return}e[i]=t;e[n]=()=>{abort(e)};r(e[i],e[n])}function removeSignal(e){if(!e[i]){return}if("removeEventListener"in e[i]){e[i].removeEventListener("abort",e[n])}else{e[i].removeListener("abort",e[n])}e[i]=null;e[n]=null}e.exports={addSignal:addSignal,removeSignal:removeSignal}},2279:(e,t,A)=>{const r=A(4589);const{AsyncResource:s}=A(6698);const{InvalidArgumentError:n,SocketError:i}=A(8707);const o=A(3440);const{addSignal:a,removeSignal:c}=A(158);class ConnectHandler extends s{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:r,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=r||null;this.responseHeaders=s||null;this.callback=t;this.abort=null;a(this,A)}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(){throw new i("bad connect",null)}onUpgrade(e,t,A){const{callback:r,opaque:s,context:n}=this;c(this);this.callback=null;let i=t;if(i!=null){i=this.responseHeaders==="raw"?o.parseRawHeaders(t):o.parseHeaders(t)}this.runInAsyncScope(r,null,null,{statusCode:e,headers:i,socket:A,opaque:s,context:n})}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,r)=>e?A(e):t(r))})}try{const A=new ConnectHandler(e,t);this.dispatch({...e,method:"CONNECT"},A)}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}e.exports=connect},6862:(e,t,A)=>{const{Readable:r,Duplex:s,PassThrough:n}=A(7075);const{InvalidArgumentError:i,InvalidReturnValueError:o,RequestAbortedError:a}=A(8707);const c=A(3440);const{AsyncResource:l}=A(6698);const{addSignal:h,removeSignal:g}=A(158);const u=A(4589);const E=Symbol("resume");class PipelineRequest extends r{constructor(){super({autoDestroy:true});this[E]=null}_read(){const{[E]:e}=this;if(e){this[E]=null;e()}}_destroy(e,t){this._read();t(e)}}class PipelineResponse extends r{constructor(e){super({autoDestroy:true});this[E]=e}_read(){this[E]()}_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 i("invalid opts")}if(typeof t!=="function"){throw new i("invalid handler")}const{signal:A,method:r,opaque:n,onInfo:o,responseHeaders:l}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new i("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new i("invalid method")}if(o&&typeof o!=="function"){throw new i("invalid onInfo callback")}super("UNDICI_PIPELINE");this.opaque=n||null;this.responseHeaders=l||null;this.handler=t;this.abort=null;this.context=null;this.onInfo=o||null;this.req=(new PipelineRequest).on("error",c.nop);this.ret=new s({readableObjectMode:e.objectMode,autoDestroy:true,read:()=>{const{body:e}=this;if(e?.resume){e.resume()}},write:(e,t,A)=>{const{req:r}=this;if(r.push(e,t)||r._readableState.destroyed){A()}else{r[E]=A}},destroy:(e,t)=>{const{body:A,req:r,res:s,ret:n,abort:i}=this;if(!e&&!n._readableState.endEmitted){e=new a}if(i&&e){i()}c.destroy(A,e);c.destroy(r,e);c.destroy(s,e);g(this);t(e)}}).on("prefinish",()=>{const{req:e}=this;e.push(null)});this.res=null;h(this,A)}onConnect(e,t){const{ret:A,res:r}=this;if(this.reason){e(this.reason);return}u(!r,"pipeline cannot be retried");u(!A.destroyed);this.abort=e;this.context=t}onHeaders(e,t,A){const{opaque:r,handler:s,context:n}=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 i;try{this.handler=null;const A=this.responseHeaders==="raw"?c.parseRawHeaders(t):c.parseHeaders(t);i=this.runInAsyncScope(s,null,{statusCode:e,headers:A,opaque:r,body:this.res,context:n})}catch(e){this.res.on("error",c.nop);throw e}if(!i||typeof i.on!=="function"){throw new o("expected Readable")}i.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=i}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 n).destroy(e)}}e.exports=pipeline},4043:(e,t,A)=>{const r=A(4589);const{Readable:s}=A(9927);const{InvalidArgumentError:n,RequestAbortedError:i}=A(8707);const o=A(3440);const{getResolveErrorBodyCallback:a}=A(7655);const{AsyncResource:c}=A(6698);class RequestHandler extends c{constructor(e,t){if(!e||typeof e!=="object"){throw new n("invalid opts")}const{signal:A,method:r,opaque:s,body:a,onInfo:c,responseHeaders:l,throwOnError:h,highWaterMark:g}=e;try{if(typeof t!=="function"){throw new n("invalid callback")}if(g&&(typeof g!=="number"||g<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(r==="CONNECT"){throw new n("invalid method")}if(c&&typeof c!=="function"){throw new n("invalid onInfo callback")}super("UNDICI_REQUEST")}catch(e){if(o.isStream(a)){o.destroy(a.on("error",o.nop),e)}throw e}this.method=r;this.responseHeaders=l||null;this.opaque=s||null;this.callback=t;this.res=null;this.abort=null;this.body=a;this.trailers={};this.context=null;this.onInfo=c||null;this.throwOnError=h;this.highWaterMark=g;this.signal=A;this.reason=null;this.removeAbortListener=null;if(o.isStream(a)){a.on("error",e=>{this.onError(e)})}if(this.signal){if(this.signal.aborted){this.reason=this.signal.reason??new i}else{this.removeAbortListener=o.addAbortListener(this.signal,()=>{this.reason=this.signal.reason??new i;if(this.res){o.destroy(this.res.on("error",o.nop),this.reason)}else if(this.abort){this.abort(this.reason)}if(this.removeAbortListener){this.res?.off("close",this.removeAbortListener);this.removeAbortListener();this.removeAbortListener=null}})}}}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(e,t,A,r){const{callback:n,opaque:i,abort:c,context:l,responseHeaders:h,highWaterMark:g}=this;const u=h==="raw"?o.parseRawHeaders(t):o.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:u})}return}const E=h==="raw"?o.parseHeaders(t):u;const Q=E["content-type"];const C=E["content-length"];const B=new s({resume:A,abort:c,contentType:Q,contentLength:this.method!=="HEAD"&&C?Number(C):null,highWaterMark:g});if(this.removeAbortListener){B.on("close",this.removeAbortListener)}this.callback=null;this.res=B;if(n!==null){if(this.throwOnError&&e>=400){this.runInAsyncScope(a,null,{callback:n,body:B,contentType:Q,statusCode:e,statusMessage:r,headers:u})}else{this.runInAsyncScope(n,null,null,{statusCode:e,headers:u,trailers:this.trailers,opaque:i,body:B,context:l})}}}onData(e){return this.res.push(e)}onComplete(e){o.parseHeaders(e,this.trailers);this.res.push(null)}onError(e){const{res:t,callback:A,body:r,opaque:s}=this;if(A){this.callback=null;queueMicrotask(()=>{this.runInAsyncScope(A,null,e,{opaque:s})})}if(t){this.res=null;queueMicrotask(()=>{o.destroy(t,e)})}if(r){this.body=null;o.destroy(r,e)}if(this.removeAbortListener){t?.off("close",this.removeAbortListener);this.removeAbortListener();this.removeAbortListener=null}}}function request(e,t){if(t===undefined){return new Promise((t,A)=>{request.call(this,e,(e,r)=>e?A(e):t(r))})}try{this.dispatch(e,new RequestHandler(e,t))}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}e.exports=request;e.exports.RequestHandler=RequestHandler},3560:(e,t,A)=>{const r=A(4589);const{finished:s,PassThrough:n}=A(7075);const{InvalidArgumentError:i,InvalidReturnValueError:o}=A(8707);const a=A(3440);const{getResolveErrorBodyCallback:c}=A(7655);const{AsyncResource:l}=A(6698);const{addSignal:h,removeSignal:g}=A(158);class StreamHandler extends l{constructor(e,t,A){if(!e||typeof e!=="object"){throw new i("invalid opts")}const{signal:r,method:s,opaque:n,body:o,onInfo:c,responseHeaders:l,throwOnError:g}=e;try{if(typeof A!=="function"){throw new i("invalid callback")}if(typeof t!=="function"){throw new i("invalid factory")}if(r&&typeof r.on!=="function"&&typeof r.addEventListener!=="function"){throw new i("signal must be an EventEmitter or EventTarget")}if(s==="CONNECT"){throw new i("invalid method")}if(c&&typeof c!=="function"){throw new i("invalid onInfo callback")}super("UNDICI_STREAM")}catch(e){if(a.isStream(o)){a.destroy(o.on("error",a.nop),e)}throw e}this.responseHeaders=l||null;this.opaque=n||null;this.factory=t;this.callback=A;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=o;this.onInfo=c||null;this.throwOnError=g||false;if(a.isStream(o)){o.on("error",e=>{this.onError(e)})}h(this,r)}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(e,t,A,r){const{factory:i,opaque:l,context:h,callback:g,responseHeaders:u}=this;const E=u==="raw"?a.parseRawHeaders(t):a.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:E})}return}this.factory=null;let Q;if(this.throwOnError&&e>=400){const A=u==="raw"?a.parseHeaders(t):E;const s=A["content-type"];Q=new n;this.callback=null;this.runInAsyncScope(c,null,{callback:g,body:Q,contentType:s,statusCode:e,statusMessage:r,headers:E})}else{if(i===null){return}Q=this.runInAsyncScope(i,null,{statusCode:e,headers:E,opaque:l,context:h});if(!Q||typeof Q.write!=="function"||typeof Q.end!=="function"||typeof Q.on!=="function"){throw new o("expected Writable")}s(Q,{readable:false},e=>{const{callback:t,res:A,opaque:r,trailers:s,abort:n}=this;this.res=null;if(e||!A.readable){a.destroy(A,e)}this.callback=null;this.runInAsyncScope(t,null,e||null,{opaque:r,trailers:s});if(e){n()}})}Q.on("drain",A);this.res=Q;const C=Q.writableNeedDrain!==undefined?Q.writableNeedDrain:Q._writableState?.needDrain;return C!==true}onData(e){const{res:t}=this;return t?t.write(e):true}onComplete(e){const{res:t}=this;g(this);if(!t){return}this.trailers=a.parseHeaders(e);t.end()}onError(e){const{res:t,callback:A,opaque:r,body:s}=this;g(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:r})})}if(s){this.body=null;a.destroy(s,e)}}}function stream(e,t,A){if(A===undefined){return new Promise((A,r)=>{stream.call(this,e,t,(e,t)=>e?r(e):A(t))})}try{this.dispatch(e,new StreamHandler(e,t,A))}catch(t){if(typeof A!=="function"){throw t}const r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}e.exports=stream},1882:(e,t,A)=>{const{InvalidArgumentError:r,SocketError:s}=A(8707);const{AsyncResource:n}=A(6698);const i=A(3440);const{addSignal:o,removeSignal:a}=A(158);const c=A(4589);class UpgradeHandler extends n{constructor(e,t){if(!e||typeof e!=="object"){throw new r("invalid opts")}if(typeof t!=="function"){throw new r("invalid callback")}const{signal:A,opaque:s,responseHeaders:n}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new r("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=n||null;this.opaque=s||null;this.callback=t;this.abort=null;this.context=null;o(this,A)}onConnect(e,t){if(this.reason){e(this.reason);return}c(this.callback);this.abort=e;this.context=null}onHeaders(){throw new s("bad upgrade",null)}onUpgrade(e,t,A){c(e===101);const{callback:r,opaque:s,context:n}=this;a(this);this.callback=null;const o=this.responseHeaders==="raw"?i.parseRawHeaders(t):i.parseHeaders(t);this.runInAsyncScope(r,null,null,{headers:o,socket:A,opaque:s,context:n})}onError(e){const{callback:t,opaque:A}=this;a(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,r)=>e?A(e):t(r))})}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 r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}e.exports=upgrade},6615:(e,t,A)=>{e.exports.request=A(4043);e.exports.stream=A(3560);e.exports.pipeline=A(6862);e.exports.upgrade=A(1882);e.exports.connect=A(2279)},9927:(e,t,A)=>{const r=A(4589);const{Readable:s}=A(7075);const{RequestAbortedError:n,NotSupportedError:i,InvalidArgumentError:o,AbortError:a}=A(8707);const c=A(3440);const{ReadableStreamFrom:l}=A(3440);const h=Symbol("kConsume");const g=Symbol("kReading");const u=Symbol("kBody");const E=Symbol("kAbort");const Q=Symbol("kContentType");const C=Symbol("kContentLength");const noop=()=>{};class BodyReadable extends s{constructor({resume:e,abort:t,contentType:A="",contentLength:r,highWaterMark:s=64*1024}){super({autoDestroy:true,read:e,highWaterMark:s});this._readableState.dataEmitted=false;this[E]=t;this[h]=null;this[u]=null;this[Q]=A;this[C]=r;this[g]=false}destroy(e){if(!e&&!this._readableState.endEmitted){e=new n}if(e){this[E]()}return super.destroy(e)}_destroy(e,t){if(!this[g]){setImmediate(()=>{t(e)})}else{t(e)}}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[h]&&e!==null){consumePush(this[h],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 bytes(){return consume(this,"bytes")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new i}get bodyUsed(){return c.isDisturbed(this)}get body(){if(!this[u]){this[u]=l(this);if(this[h]){this[u].getReader();r(this[u].locked)}}return this[u]}async dump(e){let t=Number.isFinite(e?.limit)?e.limit:128*1024;const A=e?.signal;if(A!=null&&(typeof A!=="object"||!("aborted"in A))){throw new o("signal must be an AbortSignal")}A?.throwIfAborted();if(this._readableState.closeEmitted){return null}return await new Promise((e,r)=>{if(this[C]>t){this.destroy(new a)}const onAbort=()=>{this.destroy(A.reason??new a)};A?.addEventListener("abort",onAbort);this.on("close",function(){A?.removeEventListener("abort",onAbort);if(A?.aborted){r(A.reason??new a)}else{e(null)}}).on("error",noop).on("data",function(e){t-=e.length;if(t<=0){this.destroy()}}).resume()})}}function isLocked(e){return e[u]&&e[u].locked===true||e[h]}function isUnusable(e){return c.isDisturbed(e)||isLocked(e)}async function consume(e,t){r(!e[h]);return new Promise((A,r)=>{if(isUnusable(e)){const t=e._readableState;if(t.destroyed&&t.closeEmitted===false){e.on("error",e=>{r(e)}).on("close",()=>{r(new TypeError("unusable"))})}else{r(t.errored??new TypeError("unusable"))}}else{queueMicrotask(()=>{e[h]={type:t,stream:e,resolve:A,reject:r,length:0,body:[]};e.on("error",function(e){consumeFinish(this[h],e)}).on("close",function(){if(this[h].body!==null){consumeFinish(this[h],new n)}});consumeStart(e[h])})}})}function consumeStart(e){if(e.body===null){return}const{_readableState:t}=e.stream;if(t.bufferIndex){const A=t.bufferIndex;const r=t.buffer.length;for(let s=A;s2&&A[0]===239&&A[1]===187&&A[2]===191?3:0;return A.utf8Slice(s,r)}function chunksConcat(e,t){if(e.length===0||t===0){return new Uint8Array(0)}if(e.length===1){return new Uint8Array(e[0])}const A=new Uint8Array(Buffer.allocUnsafeSlow(t).buffer);let r=0;for(let t=0;t{const r=A(4589);const{ResponseStatusCodeError:s}=A(8707);const{chunksDecode:n}=A(9927);const i=128*1024;async function getResolveErrorBodyCallback({callback:e,body:t,contentType:A,statusCode:o,statusMessage:a,headers:c}){r(t);let l=[];let h=0;try{for await(const e of t){l.push(e);h+=e.length;if(h>i){l=[];h=0;break}}}catch{l=[];h=0}const g=`Response status code ${o}${a?`: ${a}`:""}`;if(o===204||!A||!h){queueMicrotask(()=>e(new s(g,o,c)));return}const u=Error.stackTraceLimit;Error.stackTraceLimit=0;let E;try{if(isContentTypeApplicationJson(A)){E=JSON.parse(n(l,h))}else if(isContentTypeText(A)){E=n(l,h)}}catch{}finally{Error.stackTraceLimit=u}queueMicrotask(()=>e(new s(g,o,c,E)))}const isContentTypeApplicationJson=e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n";const isContentTypeText=e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t";e.exports={getResolveErrorBodyCallback:getResolveErrorBodyCallback,isContentTypeApplicationJson:isContentTypeApplicationJson,isContentTypeText:isContentTypeText}},9136:(e,t,A)=>{const r=A(7030);const s=A(4589);const n=A(3440);const{InvalidArgumentError:i,ConnectTimeoutError:o}=A(8707);const a=A(6603);function noop(){}let c;let l;if(global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)){l=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:o,timeout:a,session:g,...u}){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new i("maxCachedSessions must be a positive integer or zero")}const E={path:o,...u};const Q=new l(t==null?100:t);a=a==null?1e4:a;e=e!=null?e:false;return function connect({hostname:t,host:i,protocol:o,port:l,servername:u,localAddress:C,httpSocket:B},I){let d;if(o==="https:"){if(!c){c=A(1692)}u=u||E.servername||n.getServerName(i)||null;const r=u||t;s(r);const o=g||Q.get(r)||null;l=l||443;d=c.connect({highWaterMark:16384,...E,servername:u,session:o,localAddress:C,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:B,port:l,host:t});d.on("session",function(e){Q.set(r,e)})}else{s(!B,"httpSocket can only be sent on TLS update");l=l||80;d=r.connect({highWaterMark:64*1024,...E,localAddress:C,port:l,host:t})}if(E.keepAlive==null||E.keepAlive){const e=E.keepAliveInitialDelay===undefined?6e4:E.keepAliveInitialDelay;d.setKeepAlive(true,e)}const f=h(new WeakRef(d),{timeout:a,hostname:t,port:l});d.setNoDelay(true).once(o==="https:"?"secureConnect":"connect",function(){queueMicrotask(f);if(I){const e=I;I=null;e(null,this)}}).on("error",function(e){queueMicrotask(f);if(I){const t=I;I=null;t(e)}});return d}}const h=process.platform==="win32"?(e,t)=>{if(!t.timeout){return noop}let A=null;let r=null;const s=a.setFastTimeout(()=>{A=setImmediate(()=>{r=setImmediate(()=>onConnectTimeout(e.deref(),t))})},t.timeout);return()=>{a.clearFastTimeout(s);clearImmediate(A);clearImmediate(r)}}:(e,t)=>{if(!t.timeout){return noop}let A=null;const r=a.setFastTimeout(()=>{A=setImmediate(()=>{onConnectTimeout(e.deref(),t)})},t.timeout);return()=>{a.clearFastTimeout(r);clearImmediate(A)}};function onConnectTimeout(e,t){if(e==null){return}let A="Connect Timeout Error";if(Array.isArray(e.autoSelectFamilyAttemptedAddresses)){A+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`}else{A+=` (attempted address: ${t.hostname}:${t.port},`}A+=` timeout: ${t.timeout}ms)`;n.destroy(e,new o(A))}e.exports=buildConnector},735:e=>{const t={};const A=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e{const r=A(3053);const s=A(7975);const n=s.debuglog("undici");const i=s.debuglog("fetch");const o=s.debuglog("websocket");let a=false;const c={beforeConnect:r.channel("undici:client:beforeConnect"),connected:r.channel("undici:client:connected"),connectError:r.channel("undici:client:connectError"),sendHeaders:r.channel("undici:client:sendHeaders"),create:r.channel("undici:request:create"),bodySent:r.channel("undici:request:bodySent"),headers:r.channel("undici:request:headers"),trailers:r.channel("undici:request:trailers"),error:r.channel("undici:request:error"),open:r.channel("undici:websocket:open"),close:r.channel("undici:websocket:close"),socketError:r.channel("undici:websocket:socket_error"),ping:r.channel("undici:websocket:ping"),pong:r.channel("undici:websocket:pong")};if(n.enabled||i.enabled){const e=i.enabled?i:n;r.channel("undici:client:beforeConnect").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connecting to %s using %s%s",`${n}${s?`:${s}`:""}`,r,A)});r.channel("undici:client:connected").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connected to %s using %s%s",`${n}${s?`:${s}`:""}`,r,A)});r.channel("undici:client:connectError").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n},error:i}=t;e("connection to %s using %s%s errored - %s",`${n}${s?`:${s}`:""}`,r,A,i.message)});r.channel("undici:client:sendHeaders").subscribe(t=>{const{request:{method:A,path:r,origin:s}}=t;e("sending request to %s %s/%s",A,s,r)});r.channel("undici:request:headers").subscribe(t=>{const{request:{method:A,path:r,origin:s},response:{statusCode:n}}=t;e("received response to %s %s/%s - HTTP %d",A,s,r,n)});r.channel("undici:request:trailers").subscribe(t=>{const{request:{method:A,path:r,origin:s}}=t;e("trailers received from %s %s/%s",A,s,r)});r.channel("undici:request:error").subscribe(t=>{const{request:{method:A,path:r,origin:s},error:n}=t;e("request to %s %s/%s errored - %s",A,s,r,n.message)});a=true}if(o.enabled){if(!a){const e=n.enabled?n:o;r.channel("undici:client:beforeConnect").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connecting to %s%s using %s%s",n,s?`:${s}`:"",r,A)});r.channel("undici:client:connected").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connected to %s%s using %s%s",n,s?`:${s}`:"",r,A)});r.channel("undici:client:connectError").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n},error:i}=t;e("connection to %s%s using %s%s errored - %s",n,s?`:${s}`:"",r,A,i.message)});r.channel("undici:client:sendHeaders").subscribe(t=>{const{request:{method:A,path:r,origin:s}}=t;e("sending request to %s %s/%s",A,s,r)})}r.channel("undici:websocket:open").subscribe(e=>{const{address:{address:t,port:A}}=e;o("connection opened %s%s",t,A?`:${A}`:"")});r.channel("undici:websocket:close").subscribe(e=>{const{websocket:t,code:A,reason:r}=e;o("closed connection to %s - %s %s",t.url,A,r)});r.channel("undici:websocket:socket_error").subscribe(e=>{o("connection errored - %s",e.message)});r.channel("undici:websocket:ping").subscribe(e=>{o("ping received")});r.channel("undici:websocket:pong").subscribe(e=>{o("pong received")})}e.exports={channels:c}},8707:e=>{const t=Symbol.for("undici.error.UND_ERR");class UndiciError extends Error{constructor(e){super(e);this.name="UndiciError";this.code="UND_ERR"}static[Symbol.hasInstance](e){return e&&e[t]===true}[t]=true}const A=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");class ConnectTimeoutError extends UndiciError{constructor(e){super(e);this.name="ConnectTimeoutError";this.message=e||"Connect Timeout Error";this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[A]===true}[A]=true}const r=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");class HeadersTimeoutError extends UndiciError{constructor(e){super(e);this.name="HeadersTimeoutError";this.message=e||"Headers Timeout Error";this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[r]===true}[r]=true}const s=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");class HeadersOverflowError extends UndiciError{constructor(e){super(e);this.name="HeadersOverflowError";this.message=e||"Headers Overflow Error";this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](e){return e&&e[s]===true}[s]=true}const n=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");class BodyTimeoutError extends UndiciError{constructor(e){super(e);this.name="BodyTimeoutError";this.message=e||"Body Timeout Error";this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[n]===true}[n]=true}const i=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE");class ResponseStatusCodeError extends UndiciError{constructor(e,t,A,r){super(e);this.name="ResponseStatusCodeError";this.message=e||"Response Status Code Error";this.code="UND_ERR_RESPONSE_STATUS_CODE";this.body=r;this.status=t;this.statusCode=t;this.headers=A}static[Symbol.hasInstance](e){return e&&e[i]===true}[i]=true}const o=Symbol.for("undici.error.UND_ERR_INVALID_ARG");class InvalidArgumentError extends UndiciError{constructor(e){super(e);this.name="InvalidArgumentError";this.message=e||"Invalid Argument Error";this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](e){return e&&e[o]===true}[o]=true}const a=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");class InvalidReturnValueError extends UndiciError{constructor(e){super(e);this.name="InvalidReturnValueError";this.message=e||"Invalid Return Value Error";this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](e){return e&&e[a]===true}[a]=true}const c=Symbol.for("undici.error.UND_ERR_ABORT");class AbortError extends UndiciError{constructor(e){super(e);this.name="AbortError";this.message=e||"The operation was aborted";this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](e){return e&&e[c]===true}[c]=true}const l=Symbol.for("undici.error.UND_ERR_ABORTED");class RequestAbortedError extends AbortError{constructor(e){super(e);this.name="AbortError";this.message=e||"Request aborted";this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](e){return e&&e[l]===true}[l]=true}const h=Symbol.for("undici.error.UND_ERR_INFO");class InformationalError extends UndiciError{constructor(e){super(e);this.name="InformationalError";this.message=e||"Request information";this.code="UND_ERR_INFO"}static[Symbol.hasInstance](e){return e&&e[h]===true}[h]=true}const g=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");class RequestContentLengthMismatchError extends UndiciError{constructor(e){super(e);this.name="RequestContentLengthMismatchError";this.message=e||"Request body length does not match content-length header";this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](e){return e&&e[g]===true}[g]=true}const u=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");class ResponseContentLengthMismatchError extends UndiciError{constructor(e){super(e);this.name="ResponseContentLengthMismatchError";this.message=e||"Response body length does not match content-length header";this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](e){return e&&e[u]===true}[u]=true}const E=Symbol.for("undici.error.UND_ERR_DESTROYED");class ClientDestroyedError extends UndiciError{constructor(e){super(e);this.name="ClientDestroyedError";this.message=e||"The client is destroyed";this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](e){return e&&e[E]===true}[E]=true}const Q=Symbol.for("undici.error.UND_ERR_CLOSED");class ClientClosedError extends UndiciError{constructor(e){super(e);this.name="ClientClosedError";this.message=e||"The client is closed";this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](e){return e&&e[Q]===true}[Q]=true}const C=Symbol.for("undici.error.UND_ERR_SOCKET");class SocketError extends UndiciError{constructor(e,t){super(e);this.name="SocketError";this.message=e||"Socket error";this.code="UND_ERR_SOCKET";this.socket=t}static[Symbol.hasInstance](e){return e&&e[C]===true}[C]=true}const B=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");class NotSupportedError extends UndiciError{constructor(e){super(e);this.name="NotSupportedError";this.message=e||"Not supported error";this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](e){return e&&e[B]===true}[B]=true}const I=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");class BalancedPoolMissingUpstreamError extends UndiciError{constructor(e){super(e);this.name="MissingUpstreamError";this.message=e||"No upstream has been added to the BalancedPool";this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](e){return e&&e[I]===true}[I]=true}const d=Symbol.for("undici.error.UND_ERR_HTTP_PARSER");class HTTPParserError extends Error{constructor(e,t,A){super(e);this.name="HTTPParserError";this.code=t?`HPE_${t}`:undefined;this.data=A?A.toString():undefined}static[Symbol.hasInstance](e){return e&&e[d]===true}[d]=true}const f=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");class ResponseExceededMaxSizeError extends UndiciError{constructor(e){super(e);this.name="ResponseExceededMaxSizeError";this.message=e||"Response content exceeded max size";this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](e){return e&&e[f]===true}[f]=true}const p=Symbol.for("undici.error.UND_ERR_REQ_RETRY");class RequestRetryError extends UndiciError{constructor(e,t,{headers:A,data:r}){super(e);this.name="RequestRetryError";this.message=e||"Request retry error";this.code="UND_ERR_REQ_RETRY";this.statusCode=t;this.data=r;this.headers=A}static[Symbol.hasInstance](e){return e&&e[p]===true}[p]=true}const w=Symbol.for("undici.error.UND_ERR_RESPONSE");class ResponseError extends UndiciError{constructor(e,t,{headers:A,data:r}){super(e);this.name="ResponseError";this.message=e||"Response error";this.code="UND_ERR_RESPONSE";this.statusCode=t;this.data=r;this.headers=A}static[Symbol.hasInstance](e){return e&&e[w]===true}[w]=true}const y=Symbol.for("undici.error.UND_ERR_PRX_TLS");class SecureProxyConnectionError extends UndiciError{constructor(e,t,A){super(t,{cause:e,...A??{}});this.name="SecureProxyConnectionError";this.message=t||"Secure Proxy Connection failed";this.code="UND_ERR_PRX_TLS";this.cause=e}static[Symbol.hasInstance](e){return e&&e[y]===true}[y]=true}const m=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");class MessageSizeExceededError extends UndiciError{constructor(e){super(e);this.name="MessageSizeExceededError";this.message=e||"Max decompressed message size exceeded";this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](e){return e&&e[m]===true}get[m](){return true}}e.exports={AbortError:AbortError,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,RequestRetryError:RequestRetryError,ResponseError:ResponseError,SecureProxyConnectionError:SecureProxyConnectionError,MessageSizeExceededError:MessageSizeExceededError}},4655:(e,t,A)=>{const{InvalidArgumentError:r,NotSupportedError:s}=A(8707);const n=A(4589);const{isValidHTTPToken:i,isValidHeaderValue:o,isStream:a,destroy:c,isBuffer:l,isFormDataLike:h,isIterable:g,isBlobLike:u,buildURL:E,validateHandler:Q,getServerName:C,normalizedMethodRecords:B}=A(3440);const{channels:I}=A(2414);const{headerNameLowerCasedRecord:d}=A(735);const f=/[^\u0021-\u00ff]/;const p=Symbol("handler");class Request{constructor(e,{path:t,method:A,body:s,headers:n,query:d,idempotent:w,blocking:y,upgrade:m,headersTimeout:R,bodyTimeout:D,reset:b,throwOnError:k,expectContinue:S,servername:F},N){if(typeof t!=="string"){throw new r("path must be a string")}else if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&A!=="CONNECT"){throw new r("path must be an absolute URL or start with a slash")}else if(f.test(t)){throw new r("invalid request path")}if(typeof A!=="string"){throw new r("method must be a string")}else if(B[A]===undefined&&!i(A)){throw new r("invalid request method")}if(m&&typeof m!=="string"){throw new r("upgrade must be a string")}if(m&&!o(m)){throw new r("invalid upgrade header")}if(R!=null&&(!Number.isFinite(R)||R<0)){throw new r("invalid headersTimeout")}if(D!=null&&(!Number.isFinite(D)||D<0)){throw new r("invalid bodyTimeout")}if(b!=null&&typeof b!=="boolean"){throw new r("invalid reset")}if(S!=null&&typeof S!=="boolean"){throw new r("invalid expectContinue")}this.headersTimeout=R;this.bodyTimeout=D;this.throwOnError=k===true;this.method=A;this.abort=null;if(s==null){this.body=null}else if(a(s)){this.body=s;const e=this.body._readableState;if(!e||!e.autoDestroy){this.endHandler=function autoDestroy(){c(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(l(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(h(s)||g(s)||u(s)){this.body=s}else{throw new r("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable")}this.completed=false;this.aborted=false;this.upgrade=m||null;this.path=d?E(t,d):t;this.origin=e;this.idempotent=w==null?A==="HEAD"||A==="GET":w;this.blocking=y==null?false:y;this.reset=b==null?null:b;this.host=null;this.contentLength=null;this.contentType=null;this.headers=[];this.expectContinue=S!=null?S:false;if(Array.isArray(n)){if(n.length%2!==0){throw new r("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"),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"),kBody:Symbol("abstracted request body"),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"),kResume:Symbol("resume"),kOnError:Symbol("on error"),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"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}},7752:(e,t,A)=>{const{wellknownHeaderNames:r,headerNameLowerCasedRecord:s}=A(735);class TstNode{value=null;left=null;middle=null;right=null;code;constructor(e,t,A){if(A===undefined||A>=e.length){throw new TypeError("Unreachable")}const r=this.code=e.charCodeAt(A);if(r>127){throw new TypeError("key must be ascii string")}if(e.length!==++A){this.middle=new TstNode(e,t,A)}else{this.value=t}}add(e,t){const A=e.length;if(A===0){throw new TypeError("Unreachable")}let r=0;let s=this;while(true){const n=e.charCodeAt(r);if(n>127){throw new TypeError("key must be ascii string")}if(s.code===n){if(A===++r){s.value=t;break}else if(s.middle!==null){s=s.middle}else{s.middle=new TstNode(e,t,r);break}}else if(s.code=65){s|=32}while(r!==null){if(s===r.code){if(t===++A){return r}r=r.middle;break}r=r.code{const r=A(4589);const{kDestroyed:s,kBodyUsed:n,kListeners:i,kBody:o}=A(6443);const{IncomingMessage:a}=A(7067);const c=A(7075);const l=A(7030);const{Blob:h}=A(4573);const g=A(7975);const{stringify:u}=A(1792);const{EventEmitter:E}=A(8474);const{InvalidArgumentError:Q}=A(8707);const{headerNameLowerCasedRecord:C}=A(735);const{tree:B}=A(7752);const[I,d]=process.versions.node.split(".").map(e=>Number(e));class BodyAsyncIterable{constructor(e){this[o]=e;this[n]=false}async*[Symbol.asyncIterator](){r(!this[n],"disturbed");this[n]=true;yield*this[o]}}function wrapRequestBody(e){if(isStream(e)){if(bodyLength(e)===0){e.on("data",function(){r(false)})}if(typeof e.readableDidRead!=="boolean"){e[n]=false;E.prototype.on.call(e,"data",function(){this[n]=true})}return e}else if(e&&typeof e.pipeTo==="function"){return new BodyAsyncIterable(e)}else if(e&&typeof e!=="string"&&!ArrayBuffer.isView(e)&&isIterable(e)){return new BodyAsyncIterable(e)}else{return e}}function nop(){}function isStream(e){return e&&typeof e==="object"&&typeof e.pipe==="function"&&typeof e.on==="function"}function isBlobLike(e){if(e===null){return false}else if(e instanceof h){return true}else if(typeof e!=="object"){return false}else{const t=e[Symbol.toStringTag];return(t==="Blob"||t==="File")&&("stream"in e&&typeof e.stream==="function"||"arrayBuffer"in e&&typeof e.arrayBuffer==="function")}}function buildURL(e,t){if(e.includes("?")||e.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const A=u(t);if(A){e+="?"+A}return e}function isValidPort(e){const t=parseInt(e,10);return t===Number(e)&&t>=0&&t<=65535}function isHttpOrHttpsPrefixed(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function parseURL(e){if(typeof e==="string"){e=new URL(e);if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}if(!e||typeof e!=="object"){throw new Q("Invalid URL: The URL argument must be a non-null object.")}if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&isValidPort(e.port)===false){throw new Q("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 Q("Invalid URL path: the path must be a string or null/undefined.")}if(e.pathname!=null&&typeof e.pathname!=="string"){throw new Q("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(e.hostname!=null&&typeof e.hostname!=="string"){throw new Q("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(e.origin!=null&&typeof e.origin!=="string"){throw new Q("Invalid URL origin: the origin must be a string or null/undefined.")}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}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 r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;if(A[A.length-1]==="/"){A=A.slice(0,A.length-1)}if(r&&r[0]!=="/"){r=`/${r}`}return new URL(`${A}${r}`)}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}function parseOrigin(e){e=parseURL(e);if(e.pathname!=="/"||e.search||e.hash){throw new Q("invalid url")}return e}function getHostname(e){if(e[0]==="["){const t=e.indexOf("]");r(t!==-1);return e.substring(1,t)}const t=e.indexOf(":");if(t===-1)return e;return e.substring(0,t)}function getServerName(e){if(!e){return null}r(typeof e==="string");const t=getHostname(e);if(l.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[s]||c.isDestroyed?.(e))}function destroy(e,t){if(e==null||!isStream(e)||isDestroyed(e)){return}if(typeof e.destroy==="function"){if(Object.getPrototypeOf(e).constructor===a){e.socket=null}e.destroy(t)}else if(t){queueMicrotask(()=>{e.emit("error",t)})}if(e.destroyed!==true){e[s]=true}}const f=/timeout=(\d+)/;function parseKeepAliveTimeout(e){const t=e.toString().match(f);return t?parseInt(t[1],10)*1e3:null}function headerNameToString(e){return typeof e==="string"?C[e]??e.toLowerCase():B.lookup(e)??e.toString("latin1").toLowerCase()}function bufferToLowerCasedHeaderName(e){return B.lookup(e)??e.toString("latin1").toLowerCase()}function parseHeaders(e,t){if(t===undefined)t={};for(let A=0;Ae.toString("utf8")):s.toString("utf8")}}}if("content-length"in t&&"content-disposition"in t){t["content-disposition"]=Buffer.from(t["content-disposition"]).toString("latin1")}return t}function parseRawHeaders(e){const t=e.length;const A=new Array(t);let r=false;let s=-1;let n;let i;let o=0;for(let t=0;t{e.close();e.byobRequest?.respond(0)})}else{const t=Buffer.isBuffer(r)?r:Buffer.from(r);if(t.byteLength){e.enqueue(new Uint8Array(t))}}return e.desiredSize>0},async cancel(e){await t.return()},type:"bytes"})}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 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 p=typeof String.prototype.toWellFormed==="function";const w=typeof String.prototype.isWellFormed==="function";function toUSVString(e){return p?`${e}`.toWellFormed():g.toUSVString(e)}function isUSVString(e){return w?`${e}`.isWellFormed():toUSVString(e)===`${e}`}function isTokenCharCode(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return false;default:return e>=33&&e<=126}}function isValidHTTPToken(e){if(e.length===0){return false}for(let t=0;t{const{InvalidArgumentError:r}=A(8707);const{kClients:s,kRunning:n,kClose:i,kDestroy:o,kDispatch:a,kInterceptors:c}=A(6443);const l=A(1841);const h=A(628);const g=A(3701);const u=A(3440);const E=A(5092);const Q=Symbol("onConnect");const C=Symbol("onDisconnect");const B=Symbol("onConnectionError");const I=Symbol("maxRedirections");const d=Symbol("onDrain");const f=Symbol("factory");const p=Symbol("options");function defaultFactory(e,t){return t&&t.connections===1?new g(e,t):new h(e,t)}class Agent extends l{constructor({factory:e=defaultFactory,maxRedirections:t=0,connect:A,...n}={}){if(typeof e!=="function"){throw new r("factory must be a function.")}if(A!=null&&typeof A!=="function"&&typeof A!=="object"){throw new r("connect must be a function or an object")}if(!Number.isInteger(t)||t<0){throw new r("maxRedirections must be a positive number")}super(n);if(A&&typeof A!=="function"){A={...A}}this[c]=n.interceptors?.Agent&&Array.isArray(n.interceptors.Agent)?n.interceptors.Agent:[E({maxRedirections:t})];this[p]={...u.deepClone(n),connect:A};this[p].interceptors=n.interceptors?{...n.interceptors}:undefined;this[I]=t;this[f]=e;this[s]=new Map;this[d]=(e,t)=>{this.emit("drain",e,[this,...t])};this[Q]=(e,t)=>{this.emit("connect",e,[this,...t])};this[C]=(e,t,A)=>{this.emit("disconnect",e,[this,...t],A)};this[B]=(e,t,A)=>{this.emit("connectionError",e,[this,...t],A)}}get[n](){let e=0;for(const t of this[s].values()){e+=t[n]}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 r("opts.origin must be a non-empty string or URL.")}let n=this[s].get(A);if(!n){n=this[f](e.origin,this[p]).on("drain",this[d]).on("connect",this[Q]).on("disconnect",this[C]).on("connectionError",this[B]);this[s].set(A,n)}return n.dispatch(e,t)}async[i](){const e=[];for(const t of this[s].values()){e.push(t.close())}this[s].clear();await Promise.all(e)}async[o](e){const t=[];for(const A of this[s].values()){t.push(A.destroy(e))}this[s].clear();await Promise.all(t)}}e.exports=Agent},837:(e,t,A)=>{const{BalancedPoolMissingUpstreamError:r,InvalidArgumentError:s}=A(8707);const{PoolBase:n,kClients:i,kNeedDrain:o,kAddClient:a,kRemoveClient:c,kGetDispatcher:l}=A(2128);const h=A(628);const{kUrl:g,kInterceptors:u}=A(6443);const{parseOrigin:E}=A(3440);const Q=Symbol("factory");const C=Symbol("options");const B=Symbol("kGreatestCommonDivisor");const I=Symbol("kCurrentWeight");const d=Symbol("kIndex");const f=Symbol("kWeight");const p=Symbol("kMaxWeightPerServer");const w=Symbol("kErrorPenalty");function getGreatestCommonDivisor(e,t){if(e===0)return t;while(t!==0){const A=t;t=e%t;e=A}return e}function defaultFactory(e,t){return new h(e,t)}class BalancedPool extends n{constructor(e=[],{factory:t=defaultFactory,...A}={}){super();this[C]=A;this[d]=-1;this[I]=0;this[p]=this[C].maxWeightPerServer||100;this[w]=this[C].errorPenalty||15;if(!Array.isArray(e)){e=[e]}if(typeof t!=="function"){throw new s("factory must be a function.")}this[u]=A.interceptors?.BalancedPool&&Array.isArray(A.interceptors.BalancedPool)?A.interceptors.BalancedPool:[];this[Q]=t;for(const t of e){this.addUpstream(t)}this._updateBalancedPoolStats()}addUpstream(e){const t=E(e).origin;if(this[i].find(e=>e[g].origin===t&&e.closed!==true&&e.destroyed!==true)){return this}const A=this[Q](t,Object.assign({},this[C]));this[a](A);A.on("connect",()=>{A[f]=Math.min(this[p],A[f]+this[w])});A.on("connectionError",()=>{A[f]=Math.max(1,A[f]-this[w]);this._updateBalancedPoolStats()});A.on("disconnect",(...e)=>{const t=e[2];if(t&&t.code==="UND_ERR_SOCKET"){A[f]=Math.max(1,A[f]-this[w]);this._updateBalancedPoolStats()}});for(const e of this[i]){e[f]=this[p]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){let e=0;for(let t=0;te[g].origin===t&&e.closed!==true&&e.destroyed!==true);if(A){this[c](A)}return this}get upstreams(){return this[i].filter(e=>e.closed!==true&&e.destroyed!==true).map(e=>e[g].origin)}[l](){if(this[i].length===0){throw new r}const e=this[i].find(e=>!e[o]&&e.closed!==true&&e.destroyed!==true);if(!e){return}const t=this[i].map(e=>e[o]).reduce((e,t)=>e&&t,true);if(t){return}let A=0;let s=this[i].findIndex(e=>!e[o]);while(A++this[i][s][f]&&!e[o]){s=this[d]}if(this[d]===0){this[I]=this[I]-this[B];if(this[I]<=0){this[I]=this[p]}}if(e[f]>=this[I]&&!e[o]){return e}}this[I]=this[i][s][f];this[d]=s;return this[i][s]}}e.exports=BalancedPool},637:(e,t,A)=>{const r=A(4589);const s=A(3440);const{channels:n}=A(2414);const i=A(6603);const{RequestContentLengthMismatchError:o,ResponseContentLengthMismatchError:a,RequestAbortedError:c,InvalidArgumentError:l,HeadersTimeoutError:h,HeadersOverflowError:g,SocketError:u,InformationalError:E,BodyTimeoutError:Q,HTTPParserError:C,ResponseExceededMaxSizeError:B}=A(8707);const{kUrl:I,kReset:d,kClient:f,kParser:p,kBlocking:w,kRunning:y,kPending:m,kSize:R,kWriting:D,kQueue:b,kNoRef:k,kKeepAliveDefaultTimeout:S,kHostHeader:F,kPendingIdx:N,kRunningIdx:U,kError:T,kPipelining:M,kSocket:L,kKeepAliveTimeoutValue:v,kMaxHeadersSize:H,kKeepAliveMaxTimeout:x,kKeepAliveTimeoutThreshold:G,kHeadersTimeout:Y,kBodyTimeout:J,kStrictContentLength:_,kMaxRequests:V,kCounter:O,kMaxResponseSize:P,kOnError:W,kResume:q,kHTTPContext:Z}=A(6443);const z=A(2824);const K=Buffer.alloc(0);const X=Buffer[Symbol.species];const j=s.addListener;const $=s.removeAllListeners;const ee=Symbol("kIdleSocketValidation");const te=Symbol("kIdleSocketValidationTimeout");const Ae=Symbol("kSocketUsed");let re;async function lazyllhttp(){const e=process.env.JEST_WORKER_ID?A(3870):undefined;let t;try{t=await WebAssembly.compile(A(3434))}catch(r){t=await WebAssembly.compile(e||A(3870))}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(e,t,A)=>0,wasm_on_status:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onStatus(new X(oe.buffer,s,A))||0},wasm_on_message_begin:e=>{r(ie.ptr===e);return ie.onMessageBegin()||0},wasm_on_header_field:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onHeaderField(new X(oe.buffer,s,A))||0},wasm_on_header_value:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onHeaderValue(new X(oe.buffer,s,A))||0},wasm_on_headers_complete:(e,t,A,s)=>{r(ie.ptr===e);return ie.onHeadersComplete(t,Boolean(A),Boolean(s))||0},wasm_on_body:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onBody(new X(oe.buffer,s,A))||0},wasm_on_message_complete:e=>{r(ie.ptr===e);return ie.onMessageComplete()||0}}})}let se=null;let ne=lazyllhttp();ne.catch();let ie=null;let oe=null;let ae=0;let ce=null;const le=0;const he=1;const ge=2|he;const ue=4|he;const Ee=8|le;class Parser{constructor(e,t,{exports:A}){r(Number.isFinite(e[H])&&e[H]>0);this.llhttp=A;this.ptr=this.llhttp.llhttp_alloc(z.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[H];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=e[P]}setTimeout(e,t){if(e!==this.timeoutValue||t&he^this.timeoutType&he){if(this.timeout){i.clearTimeout(this.timeout);this.timeout=null}if(e){if(t&he){this.timeout=i.setFastTimeout(onParserTimeout,e,new WeakRef(this))}else{this.timeout=setTimeout(onParserTimeout,e,new WeakRef(this));this.timeout.unref()}}this.timeoutValue=e}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.timeoutType=t}resume(){if(this.socket.destroyed||!this.paused){return}r(this.ptr!=null);r(ie==null);this.llhttp.llhttp_resume(this.ptr);r(this.timeoutType===ue);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||K);this.readMore()}readMore(){while(!this.paused&&this.ptr){const e=this.socket.read();if(e===null){break}this.execute(e)}}execute(e){r(this.ptr!=null);r(ie==null);r(!this.paused);const{socket:t,llhttp:A}=this;if(e.length>ae){if(ce){A.free(ce)}ae=Math.ceil(e.length/4096)*4096;ce=A.malloc(ae)}new Uint8Array(A.memory.buffer,ce,ae).set(e);try{let r;try{oe=e;ie=this;r=A.llhttp_execute(this.ptr,ce,e.length)}catch(e){throw e}finally{ie=null;oe=null}const s=A.llhttp_get_error_pos(this.ptr)-ce;if(r!==z.ERROR.OK){const A=e.subarray(s);if(r===z.ERROR.PAUSED_UPGRADE){this.onUpgrade(A)}else if(r===z.ERROR.PAUSED){this.paused=true;t.unshift(A)}else{throw this.createError(r,A)}}}catch(e){s.destroy(t,e)}}finish(){r(ie===null);r(this.ptr!=null);r(!this.paused);const{llhttp:e}=this;let t;try{ie=this;t=e.llhttp_finish(this.ptr)}finally{ie=null}if(t===z.ERROR.OK){return null}if(t===z.ERROR.PAUSED||t===z.ERROR.PAUSED_UPGRADE){this.paused=true;return null}return this.createError(t,K)}createError(e,t){const{llhttp:A,contentLength:r,bytesRead:s}=this;if(r&&s!==parseInt(r,10)){return new a}const n=A.llhttp_get_error_reason(this.ptr);let i="";if(n){const e=new Uint8Array(A.memory.buffer,n).indexOf(0);i="Response does not match the HTTP/1.1 protocol ("+Buffer.from(A.memory.buffer,n,e).toString()+")"}return new C(i,z.ERROR[e],t)}destroy(){r(this.ptr!=null);r(ie==null);this.llhttp.llhttp_free(this.ptr);this.ptr=null;this.timeout&&i.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}if(t[y]===0){s.destroy(e,new u("bad response",s.getSocketInfo(e)));return-1}const A=t[b][t[U]];if(!A){return-1}A.onResponseStarted()}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){const t=s.bufferToLowerCasedHeaderName(A);if(t==="keep-alive"){this.keepAlive+=e.toString()}else if(t==="connection"){this.connection+=e.toString()}}else if(A.length===14&&s.bufferToLowerCasedHeaderName(A)==="content-length"){this.contentLength+=e.toString()}this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e;if(this.headersSize>=this.headersMaxSize){s.destroy(this.socket,new g)}}onUpgrade(e){const{upgrade:t,client:A,socket:n,headers:i,statusCode:o,statusText:a}=this;r(t);r(A[L]===n);r(!n.destroyed);r(!this.paused);r((i.length&1)===0);const c=A[b][A[U]];r(c);r(c.upgrade||c.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;this.headers=[];this.headersSize=0;n.unshift(e);n[p].destroy();n[p]=null;n[f]=null;n[T]=null;$(n);A[L]=null;A[Z]=null;A[b][A[U]++]=null;A.emit("disconnect",A[I],[A],new E("upgrade"));try{c.onUpgrade(o,i,n,a)}catch(e){s.errorRequest(A,c,e);s.destroy(n,e)}A[q]()}onHeadersComplete(e,t,A){const{client:n,socket:i,headers:o,statusText:a}=this;if(i.destroyed){return-1}if(n[y]===0){s.destroy(i,new u("bad response",s.getSocketInfo(i)));return-1}const c=n[b][n[U]];if(!c){return-1}r(!this.upgrade);r(this.statusCode<200);if(e===100){s.destroy(i,new u("bad response",s.getSocketInfo(i)));return-1}if(t&&!c.upgrade){s.destroy(i,new u("bad upgrade",s.getSocketInfo(i)));return-1}r(this.timeoutType===ge);this.statusCode=e;this.shouldKeepAlive=A||c.method==="HEAD"&&!i[d]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const e=c.bodyTimeout!=null?c.bodyTimeout:n[J];this.setTimeout(e,ue)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(c.method==="CONNECT"){r(n[y]===1);this.upgrade=true;return 2}if(t){r(n[y]===1);this.upgrade=true;return 2}r((this.headers.length&1)===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&n[M]){const e=this.keepAlive?s.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){const t=Math.min(e-n[G],n[x]);if(t<=0){i[d]=true}else{n[v]=t}}else{n[v]=n[S]}}else{i[d]=true}const l=c.onHeaders(e,o,this.resume,a)===false;if(c.aborted){return-1}if(c.method==="HEAD"){return 1}if(e<200){return 1}if(i[w]){i[w]=false;n[q]()}return l?z.ERROR.PAUSED:0}onBody(e){const{client:t,socket:A,statusCode:n,maxResponseSize:i}=this;if(A.destroyed){return-1}const o=t[b][t[U]];r(o);r(this.timeoutType===ue);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}r(n>=200);if(i>-1&&this.bytesRead+e.length>i){s.destroy(A,new B);return-1}this.bytesRead+=e.length;if(o.onData(e)===false){return z.ERROR.PAUSED}}onMessageComplete(){const{client:e,socket:t,statusCode:A,upgrade:n,headers:i,contentLength:o,bytesRead:c,shouldKeepAlive:l}=this;if(t.destroyed&&(!A||l)){return-1}if(n){return}r(A>=100);r((this.headers.length&1)===0);const h=e[b][e[U]];r(h);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";this.headers=[];this.headersSize=0;if(A<200){return}if(h.method!=="HEAD"&&o&&c!==parseInt(o,10)){s.destroy(t,new a);return-1}h.onComplete(i);e[b][e[U]++]=null;t[Ae]=true;if(t[D]){r(e[y]===0);s.destroy(t,new E("reset"));return z.ERROR.PAUSED}else if(!l){s.destroy(t,new E("reset"));return z.ERROR.PAUSED}else if(t[d]&&e[y]===0){s.destroy(t,new E("reset"));return z.ERROR.PAUSED}else if(e[M]==null||e[M]===1){setImmediate(()=>e[q]())}else{e[q]()}}}function onParserTimeout(e){const{socket:t,timeoutType:A,client:n,paused:i}=e.deref();if(A===ge){if(!t[D]||t.writableNeedDrain||n[y]>1){r(!i,"cannot be paused while waiting for headers");s.destroy(t,new h)}}else if(A===ue){if(!i){s.destroy(t,new Q)}}else if(A===Ee){r(n[y]===0&&n[v]);s.destroy(t,new E("socket idle timeout"))}}async function connectH1(e,t){e[L]=t;if(!se){se=await ne;ne=null}t[k]=false;t[D]=false;t[d]=false;t[w]=false;t[ee]=0;t[te]=null;t[Ae]=false;t[p]=new Parser(e,t,se);j(t,"error",function(e){r(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");const t=this[p];if(e.code==="ECONNRESET"&&t.statusCode&&!t.shouldKeepAlive){const e=t.finish();if(e){this[T]=e;this[f][W](e)}return}this[T]=e;this[f][W](e)});j(t,"readable",function(){const e=this[p];if(e){e.readMore()}});j(t,"end",function(){const e=this[p];if(e.statusCode&&!e.shouldKeepAlive){const t=e.finish();if(t){s.destroy(this,t)}return}s.destroy(this,new u("other side closed",s.getSocketInfo(this)))});j(t,"close",function(){const e=this[f];const t=this[p];clearIdleSocketValidation(this);if(t){if(!this[T]&&t.statusCode&&!t.shouldKeepAlive){this[T]=t.finish()||this[T]}this[p].destroy();this[p]=null}const A=this[T]||new u("closed",s.getSocketInfo(this));e[L]=null;e[Z]=null;if(e.destroyed){r(e[m]===0);const t=e[b].splice(e[U]);for(let r=0;r0&&A.code!=="UND_ERR_INFO"){const t=e[b][e[U]];e[b][e[U]++]=null;s.errorRequest(e,t,A)}e[N]=e[U];r(e[y]===0);e.emit("disconnect",e[I],[e],A);e[q]()});let A=false;t.on("close",()=>{A=true});return{version:"h1",defaultPipelining:1,write(...t){return writeH1(e,...t)},resume(){resumeH1(e)},destroy(e,r){if(A){queueMicrotask(r)}else{t.destroy(e).on("close",r)}},get destroyed(){return t.destroyed},busy(A){if(t[D]||t[d]||t[w]||t[ee]===1){return true}if(A){if(e[y]>0&&!A.idempotent){return true}if(e[y]>0&&(A.upgrade||A.method==="CONNECT")){return true}if(e[y]>0&&s.bodyLength(A.body)!==0&&(s.isStream(A.body)||s.isAsyncIterable(A.body)||s.isFormDataLike(A.body))){return true}}return false}}}function clearIdleSocketValidation(e){if(e[te]){clearImmediate(e[te]);e[te]=null}e[ee]=0}function scheduleIdleSocketValidation(e,t){t[ee]=1;t[te]=setImmediate(()=>{t[te]=null;t[ee]=2;if(e[L]===t&&!t.destroyed){e[q]()}})}function resumeH1(e){const t=e[L];if(t&&!t.destroyed){if(e[R]===0){if(!t[k]&&t.unref){t.unref();t[k]=true}}else if(t[k]&&t.ref){t.ref();t[k]=false}if(e[y]===0&&e[m]>0&&t[Ae]){if(t[ee]===0){scheduleIdleSocketValidation(e,t);t[p].readMore();if(t.destroyed){return}return}if(t[ee]===1){t[p].readMore();if(t.destroyed){return}return}}if(e[y]===0){t[p].readMore();if(t.destroyed){return}}if(e[R]===0){if(t[p].timeoutType!==Ee){t[p].setTimeout(e[v],Ee)}}else if(e[y]>0&&t[p].statusCode<200){if(t[p].timeoutType!==ge){const A=e[b][e[U]];const r=A.headersTimeout!=null?A.headersTimeout:e[Y];t[p].setTimeout(r,ge)}}}}function shouldSendContentLength(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function writeH1(e,t){const{method:i,path:a,host:h,upgrade:g,blocking:u,reset:Q}=t;let{body:C,headers:B,contentLength:I}=t;const f=i==="PUT"||i==="POST"||i==="PATCH"||i==="QUERY"||i==="PROPFIND"||i==="PROPPATCH";if(s.isFormDataLike(C)){if(!re){re=A(4492).extractBody}const[e,r]=re(C);if(t.contentType==null){B.push("content-type",r)}C=e.stream;I=e.length}else if(s.isBlobLike(C)&&t.contentType==null){const A=C.type;if(A){const r=`${A}`;if(!s.isValidHeaderValue(r)){s.errorRequest(e,t,new l("invalid content-type header"));return false}B.push("content-type",r)}}if(C&&typeof C.read==="function"){C.read(0)}const p=s.bodyLength(C);I=p??I;if(I===null){I=t.contentLength}if(I===0&&!f){I=null}if(shouldSendContentLength(i)&&I>0&&t.contentLength!==null&&t.contentLength!==I){if(e[_]){s.errorRequest(e,t,new o);return false}process.emitWarning(new o)}const y=e[L];clearIdleSocketValidation(y);const abort=A=>{if(t.aborted){return}if(t.completed){if(t.upgrade||t.method==="CONNECT"){s.destroy(y,new E("aborted"))}return}s.errorRequest(e,t,A||new c);s.destroy(C);s.destroy(y,new E("aborted"))};try{t.onConnect(abort)}catch(A){s.errorRequest(e,t,A)}if(t.aborted){return false}if(i==="HEAD"){y[d]=true}if(g||i==="CONNECT"){y[d]=true}if(Q!=null){y[d]=Q}if(e[V]&&y[O]++>=e[V]){y[d]=true}if(u){y[w]=true}let m=`${i} ${a} HTTP/1.1\r\n`;if(typeof h==="string"){m+=`host: ${h}\r\n`}else{m+=e[F]}if(g){m+=`connection: upgrade\r\nupgrade: ${g}\r\n`}else if(e[M]&&!y[d]){m+="connection: keep-alive\r\n"}else{m+="connection: close\r\n"}if(Array.isArray(B)){for(let e=0;e{t.removeListener("error",onFinished)});if(!h){const e=new c;queueMicrotask(()=>onFinished(e))}};const onFinished=function(e){if(h){return}h=true;r(i.destroyed||i[D]&&A[y]<=1);i.off("drain",onDrain).off("error",onFinished);t.removeListener("data",onData).removeListener("end",onFinished).removeListener("close",onClose);if(!e){try{g.end()}catch(t){e=t}}g.destroy(e);if(e&&(e.code!=="UND_ERR_INFO"||e.message!=="reset")){s.destroy(t,e)}else{s.destroy(t)}};t.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onClose);if(t.resume){t.resume()}i.on("drain",onDrain).on("error",onFinished);if(t.errorEmitted??t.errored){setImmediate(()=>onFinished(t.errored))}else if(t.endEmitted??t.readableEnded){setImmediate(()=>onFinished(null))}if(t.closeEmitted??t.closed){setImmediate(onClose)}}function writeBuffer(e,t,A,n,i,o,a,c){try{if(!t){if(o===0){i.write(`${a}content-length: 0\r\n\r\n`,"latin1")}else{r(o===null,"no body must not have content length");i.write(`${a}\r\n`,"latin1")}}else if(s.isBuffer(t)){r(o===t.byteLength,"buffer body must have content length");i.cork();i.write(`${a}content-length: ${o}\r\n\r\n`,"latin1");i.write(t);i.uncork();n.onBodySent(t);if(!c&&n.reset!==false){i[d]=true}}n.onRequestSent();A[q]()}catch(t){e(t)}}async function writeBlob(e,t,A,s,n,i,a,c){r(i===t.size,"blob body must have content length");try{if(i!=null&&i!==t.size){throw new o}const e=Buffer.from(await t.arrayBuffer());n.cork();n.write(`${a}content-length: ${i}\r\n\r\n`,"latin1");n.write(e);n.uncork();s.onBodySent(e);s.onRequestSent();if(!c&&s.reset!==false){n[d]=true}A[q]()}catch(t){e(t)}}async function writeIterable(e,t,A,s,n,i,o,a){r(i!==0||A[y]===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)=>{r(c===null);if(n[T]){t(n[T])}else{c=e}});n.on("close",onDrain).on("drain",onDrain);const l=new AsyncWriter({abort:e,socket:n,request:s,contentLength:i,client:A,expectsPayload:a,header:o});try{for await(const e of t){if(n[T]){throw n[T]}if(!l.write(e)){await waitForDrain()}}l.end()}catch(e){l.destroy(e)}finally{n.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({abort:e,socket:t,request:A,contentLength:r,client:s,expectsPayload:n,header:i}){this.socket=t;this.request=A;this.contentLength=r;this.client=s;this.bytesWritten=0;this.expectsPayload=n;this.header=i;this.abort=e;t[D]=true}write(e){const{socket:t,request:A,contentLength:r,client:s,bytesWritten:n,expectsPayload:i,header:a}=this;if(t[T]){throw t[T]}if(t.destroyed){return false}const c=Buffer.byteLength(e);if(!c){return true}if(r!==null&&n+c>r){if(s[_]){throw new o}process.emitWarning(new o)}t.cork();if(n===0){if(!i&&A.reset!==false){t[d]=true}if(r===null){t.write(`${a}transfer-encoding: chunked\r\n`,"latin1")}else{t.write(`${a}content-length: ${r}\r\n\r\n`,"latin1")}}if(r===null){t.write(`\r\n${c.toString(16)}\r\n`,"latin1")}this.bytesWritten+=c;const l=t.write(e);t.uncork();A.onBodySent(e);if(!l){if(t[p].timeout&&t[p].timeoutType===ge){if(t[p].timeout.refresh){t[p].timeout.refresh()}}}return l}end(){const{socket:e,contentLength:t,client:A,bytesWritten:r,expectsPayload:s,header:n,request:i}=this;i.onRequestSent();e[D]=false;if(e[T]){throw e[T]}if(e.destroyed){return}if(r===0){if(s){e.write(`${n}content-length: 0\r\n\r\n`,"latin1")}else{e.write(`${n}\r\n`,"latin1")}}else if(t===null){e.write("\r\n0\r\n\r\n","latin1")}if(t!==null&&r!==t){if(A[_]){throw new o}else{process.emitWarning(new o)}}if(e[p].timeout&&e[p].timeoutType===ge){if(e[p].timeout.refresh){e[p].timeout.refresh()}}A[q]()}destroy(e){const{socket:t,client:A,abort:s}=this;t[D]=false;if(e){r(A[y]<=1,"pipeline should only contain this request");s(e)}}}e.exports=connectH1},8788:(e,t,A)=>{const r=A(4589);const{errorMonitor:s}=A(8474);const{pipeline:n}=A(7075);const i=A(3440);const{RequestContentLengthMismatchError:o,RequestAbortedError:a,SocketError:c,InformationalError:l}=A(8707);const{kUrl:h,kReset:g,kClient:u,kRunning:E,kPending:Q,kQueue:C,kPendingIdx:B,kRunningIdx:I,kError:d,kSocket:f,kStrictContentLength:p,kOnError:w,kMaxConcurrentStreams:y,kHTTP2Session:m,kResume:R,kSize:D,kHTTPContext:b}=A(6443);const k=Symbol("open streams");let S;let F=false;let N;try{N=A(2467)}catch{N={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:U,HTTP2_HEADER_METHOD:T,HTTP2_HEADER_PATH:M,HTTP2_HEADER_SCHEME:L,HTTP2_HEADER_CONTENT_LENGTH:v,HTTP2_HEADER_EXPECT:H,HTTP2_HEADER_STATUS:x}}=N;function parseH2Headers(e){const t=[];for(const[A,r]of Object.entries(e)){if(Array.isArray(r)){for(const e of r){t.push(Buffer.from(A),Buffer.from(e))}}else{t.push(Buffer.from(A),Buffer.from(r))}}return t}function parseH2ResponseHeaders(e){const{[x]:t,...A}=e;return parseH2Headers(A)}async function connectH2(e,t){e[f]=t;if(!F){F=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const A=N.connect(e[h],{createConnection:()=>t,peerMaxConcurrentStreams:e[y]});A[k]=0;A[u]=e;A[f]=t;i.addListener(A,"error",onHttp2SessionError);i.addListener(A,"frameError",onHttp2FrameError);i.addListener(A,"end",onHttp2SessionEnd);i.addListener(A,"goaway",onHTTP2GoAway);i.addListener(A,"close",function(){const{[u]:e}=this;const{[f]:t}=e;const A=this[f][d]||this[d]||new c("closed",i.getSocketInfo(t));e[m]=null;if(e.destroyed){r(e[Q]===0);const t=e[C].splice(e[I]);for(let r=0;r{s=true});return{version:"h2",defaultPipelining:Infinity,write(...t){return writeH2(e,...t)},resume(){resumeH2(e)},destroy(e,A){if(s){queueMicrotask(A)}else{t.destroy(e).on("close",A)}},get destroyed(){return t.destroyed},busy(){return false}}}function resumeH2(e){const t=e[f];if(t?.destroyed===false){if(e[D]===0&&e[y]===0){t.unref();e[m].unref()}else{t.ref();e[m].ref()}}}function onHttp2SessionError(e){r(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");this[f][d]=e;this[u][w](e)}function onHttp2FrameError(e,t,A){if(A===0){const A=new l(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[f][d]=A;this[u][w](A)}}function onHttp2SessionEnd(){const e=new c("other side closed",i.getSocketInfo(this[f]));this.destroy(e);i.destroy(this[f],e)}function onHTTP2GoAway(e){const t=this[d]||new c(`HTTP/2: "GOAWAY" frame received with code ${e}`,i.getSocketInfo(this));const A=this[u];A[f]=null;A[b]=null;if(this[m]!=null){this[m].destroy(t);this[m]=null}i.destroy(this[f],t);if(A[I]{if(t.aborted){return}if(t.completed){if(c==="CONNECT"&&b!=null){i.destroy(b,A||new a)}return}A=A||new a;i.errorRequest(e,t,A);if(b!=null){i.destroy(b,A)}i.destroy(y,A);e[C][e[I]++]=null;e[R]()};try{t.onConnect(abort)}catch(A){i.errorRequest(e,t,A)}if(t.aborted){return false}if(c==="CONNECT"){n.ref();b=n.request(D,{endStream:false,signal:d});let A=false;const onResponse=e=>{A=true;b.off(s,onUpgradeError);t.onUpgradeResponse(Number(e[x]),e,parseH2ResponseHeaders)};const onUpgradeError=e=>{A=true;b.off("response",onResponse);t.onUpgradeError(e)};const onReady=()=>{try{t.onUpgrade(null,null,b)}catch(e){b.off("response",onResponse);abort(e);return}if(t.aborted){return}b.off("error",abort);b.once(s,onUpgradeError);e[C][e[I]++]=null};b.once("response",onResponse);b.once("error",abort);++n[k];onReady();b.once("close",()=>{if(!A&&t.completed){b.off("response",onResponse);b.off(s,onUpgradeError);t.onUpgradeError(new l(`HTTP/2: "stream error" received - code ${b.rstCode}`))}n[k]-=1;if(n[k]===0)n.unref()});return true}D[M]=g;D[L]="https";const G=c==="PUT"||c==="POST"||c==="PATCH";if(y&&typeof y.read==="function"){y.read(0)}let Y=i.bodyLength(y);if(i.isFormDataLike(y)){S??=A(4492).extractBody;const[e,t]=S(y);D["content-type"]=t;y=e.stream;Y=e.length}if(Y==null){Y=t.contentLength}if(Y===0||!G){Y=null}if(shouldSendContentLength(c)&&Y>0&&t.contentLength!=null&&t.contentLength!==Y){if(e[p]){i.errorRequest(e,t,new o);return false}process.emitWarning(new o)}if(Y!=null){r(y,"no body must not have content length");D[v]=`${Y}`}n.ref();const J=c==="GET"||c==="HEAD"||y===null;if(Q){D[H]="100-continue";b=n.request(D,{endStream:J,signal:d});b.once("continue",writeBodyH2)}else{b=n.request(D,{endStream:J,signal:d});writeBodyH2()}++n[k];b.once("response",A=>{const{[x]:r,...s}=A;t.onResponseStarted();if(t.aborted){const A=new a;i.errorRequest(e,t,A);i.destroy(b,A);return}if(t.onHeaders(Number(r),parseH2Headers(s),b.resume.bind(b),"")===false){b.pause()}b.on("data",e=>{if(t.onData(e)===false){b.pause()}})});b.once("end",()=>{if(b.state?.state==null||b.state.state<6){t.onComplete([])}if(n[k]===0){n.unref()}abort(new l("HTTP/2: stream half-closed (remote)"));e[C][e[I]++]=null;e[B]=e[I];e[R]()});b.once("close",()=>{n[k]-=1;if(n[k]===0){n.unref()}});b.once("error",function(e){abort(e)});b.once("frameError",(e,t)=>{abort(new l(`HTTP/2: "frameError" received - type ${e}, code ${t}`))});return true;function writeBodyH2(){if(!y||Y===0){writeBuffer(abort,b,null,e,t,e[f],Y,G)}else if(i.isBuffer(y)){writeBuffer(abort,b,y,e,t,e[f],Y,G)}else if(i.isBlobLike(y)){if(typeof y.stream==="function"){writeIterable(abort,b,y.stream(),e,t,e[f],Y,G)}else{writeBlob(abort,b,y,e,t,e[f],Y,G)}}else if(i.isStream(y)){writeStream(abort,e[f],G,b,y,e,t,Y)}else if(i.isIterable(y)){writeIterable(abort,b,y,e,t,e[f],Y,G)}else{r(false)}}}function writeBuffer(e,t,A,s,n,o,a,c){try{if(A!=null&&i.isBuffer(A)){r(a===A.byteLength,"buffer body must have content length");t.cork();t.write(A);t.uncork();t.end();n.onBodySent(A)}if(!c){o[g]=true}n.onRequestSent();s[R]()}catch(t){e(t)}}function writeStream(e,t,A,s,o,a,c,l){r(l!==0||a[E]===0,"stream body cannot be pipelined");const h=n(o,s,r=>{if(r){i.destroy(h,r);e(r)}else{i.removeAllListeners(h);c.onRequestSent();if(!A){t[g]=true}a[R]()}});i.addListener(h,"data",onPipeData);function onPipeData(e){c.onBodySent(e)}}async function writeBlob(e,t,A,s,n,i,a,c){r(a===A.size,"blob body must have content length");try{if(a!=null&&a!==A.size){throw new o}const e=Buffer.from(await A.arrayBuffer());t.cork();t.write(e);t.uncork();t.end();n.onBodySent(e);n.onRequestSent();if(!c){i[g]=true}s[R]()}catch(t){e(t)}}async function writeIterable(e,t,A,s,n,i,o,a){r(o!==0||s[E]===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)=>{r(c===null);if(i[d]){t(i[d])}else{c=e}});t.on("close",onDrain).on("drain",onDrain);try{for await(const e of A){if(i[d]){throw i[d]}const A=t.write(e);n.onBodySent(e);if(!A){await waitForDrain()}}t.end();n.onRequestSent();if(!a){i[g]=true}s[R]()}catch(t){e(t)}finally{t.off("close",onDrain).off("drain",onDrain)}}e.exports=connectH2},3701:(e,t,A)=>{const r=A(4589);const s=A(7030);const n=A(7067);const i=A(3440);const{channels:o}=A(2414);const a=A(4655);const c=A(1841);const{InvalidArgumentError:l,InformationalError:h,ClientDestroyedError:g}=A(8707);const u=A(9136);const{kUrl:E,kServerName:Q,kClient:C,kBusy:B,kConnect:I,kResuming:d,kRunning:f,kPending:p,kSize:w,kQueue:y,kConnected:m,kConnecting:R,kNeedDrain:D,kKeepAliveDefaultTimeout:b,kHostHeader:k,kPendingIdx:S,kRunningIdx:F,kError:N,kPipelining:U,kKeepAliveTimeoutValue:T,kMaxHeadersSize:M,kKeepAliveMaxTimeout:L,kKeepAliveTimeoutThreshold:v,kHeadersTimeout:H,kBodyTimeout:x,kStrictContentLength:G,kConnector:Y,kMaxRedirections:J,kMaxRequests:_,kCounter:V,kClose:O,kDestroy:P,kDispatch:W,kInterceptors:q,kLocalAddress:Z,kMaxResponseSize:z,kOnError:K,kHTTPContext:X,kMaxConcurrentStreams:j,kResume:$}=A(6443);const ee=A(637);const te=A(8788);let Ae=false;const re=Symbol("kClosedResolve");const noop=()=>{};function getPipelining(e){return e[U]??e[X]?.defaultPipelining??1}class Client extends c{constructor(e,{interceptors:t,maxHeaderSize:A,headersTimeout:r,socketTimeout:o,requestTimeout:a,connectTimeout:c,bodyTimeout:h,idleTimeout:g,keepAlive:C,keepAliveTimeout:B,maxKeepAliveTimeout:I,keepAliveMaxTimeout:f,keepAliveTimeoutThreshold:p,socketPath:w,pipelining:m,tls:R,strictContentLength:N,maxCachedSessions:V,maxRedirections:O,connect:P,maxRequestsPerClient:W,localAddress:ee,maxResponseSize:te,autoSelectFamily:ne,autoSelectFamilyAttemptTimeout:ie,maxConcurrentStreams:oe,allowH2:ae,webSocket:ce}={}){super({webSocket:ce});if(C!==undefined){throw new l("unsupported keepAlive, use pipelining=0 instead")}if(o!==undefined){throw new l("unsupported socketTimeout, use headersTimeout & bodyTimeout instead")}if(a!==undefined){throw new l("unsupported requestTimeout, use headersTimeout & bodyTimeout instead")}if(g!==undefined){throw new l("unsupported idleTimeout, use keepAliveTimeout instead")}if(I!==undefined){throw new l("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(A!=null&&!Number.isFinite(A)){throw new l("invalid maxHeaderSize")}if(w!=null&&typeof w!=="string"){throw new l("invalid socketPath")}if(c!=null&&(!Number.isFinite(c)||c<0)){throw new l("invalid connectTimeout")}if(B!=null&&(!Number.isFinite(B)||B<=0)){throw new l("invalid keepAliveTimeout")}if(f!=null&&(!Number.isFinite(f)||f<=0)){throw new l("invalid keepAliveMaxTimeout")}if(p!=null&&!Number.isFinite(p)){throw new l("invalid keepAliveTimeoutThreshold")}if(r!=null&&(!Number.isInteger(r)||r<0)){throw new l("headersTimeout must be a positive integer or zero")}if(h!=null&&(!Number.isInteger(h)||h<0)){throw new l("bodyTimeout must be a positive integer or zero")}if(P!=null&&typeof P!=="function"&&typeof P!=="object"){throw new l("connect must be a function or an object")}if(O!=null&&(!Number.isInteger(O)||O<0)){throw new l("maxRedirections must be a positive number")}if(W!=null&&(!Number.isInteger(W)||W<0)){throw new l("maxRequestsPerClient must be a positive number")}if(ee!=null&&(typeof ee!=="string"||s.isIP(ee)===0)){throw new l("localAddress must be valid string IP address")}if(te!=null&&(!Number.isInteger(te)||te<-1)){throw new l("maxResponseSize must be a positive number")}if(ie!=null&&(!Number.isInteger(ie)||ie<-1)){throw new l("autoSelectFamilyAttemptTimeout must be a positive number")}if(ae!=null&&typeof ae!=="boolean"){throw new l("allowH2 must be a valid boolean value")}if(oe!=null&&(typeof oe!=="number"||oe<1)){throw new l("maxConcurrentStreams must be a positive integer, greater than 0")}if(typeof P!=="function"){P=u({...R,maxCachedSessions:V,allowH2:ae,socketPath:w,timeout:c,...ne?{autoSelectFamily:ne,autoSelectFamilyAttemptTimeout:ie}:undefined,...P})}if(t?.Client&&Array.isArray(t.Client)){this[q]=t.Client;if(!Ae){Ae=true;process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"})}}else{this[q]=[se({maxRedirections:O})]}this[E]=i.parseOrigin(e);this[Y]=P;this[U]=m!=null?m:1;this[M]=A||n.maxHeaderSize;this[b]=B==null?4e3:B;this[L]=f==null?6e5:f;this[v]=p==null?2e3:p;this[T]=this[b];this[Q]=null;this[Z]=ee!=null?ee:null;this[d]=0;this[D]=0;this[k]=`host: ${this[E].hostname}${this[E].port?`:${this[E].port}`:""}\r\n`;this[x]=h!=null?h:3e5;this[H]=r!=null?r:3e5;this[G]=N==null?true:N;this[J]=O;this[_]=W;this[re]=null;this[z]=te>-1?te:-1;this[j]=oe!=null?oe:100;this[X]=null;this[y]=[];this[F]=0;this[S]=0;this[$]=e=>resume(this,e);this[K]=e=>onError(this,e)}get pipelining(){return this[U]}set pipelining(e){this[U]=e;this[$](true)}get[p](){return this[y].length-this[S]}get[f](){return this[S]-this[F]}get[w](){return this[y].length-this[F]}get[m](){return!!this[X]&&!this[R]&&!this[X].destroyed}get[B](){return Boolean(this[X]?.busy(null)||this[w]>=(getPipelining(this)||1)||this[p]>0)}[I](e){connect(this);this.once("connect",e)}[W](e,t){const A=e.origin||this[E].origin;const r=new a(A,e,t);this[y].push(r);if(this[d]){}else if(i.bodyLength(r.body)==null&&i.isIterable(r.body)){this[d]=1;queueMicrotask(()=>resume(this))}else{this[$](true)}if(this[d]&&this[D]!==2&&this[B]){this[D]=2}return this[D]<2}async[O](){return new Promise(e=>{if(this[w]){this[re]=e}else{e(null)}})}async[P](e){return new Promise(t=>{const A=this[y].splice(this[S]);for(let t=0;t{if(this[re]){this[re]();this[re]=null}t(null)};if(this[X]){this[X].destroy(e,callback);this[X]=null}else{queueMicrotask(callback)}this[$]()})}}const se=A(5092);function onError(e,t){if(e[f]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){r(e[S]===e[F]);const A=e[y].splice(e[F]);for(let r=0;r{e[Y]({host:t,hostname:A,protocol:n,port:a,servername:e[Q],localAddress:e[Z]},(e,t)=>{if(e){s(e)}else{r(t)}})});if(e.destroyed){i.destroy(s.on("error",noop),new g);return}r(s);try{e[X]=s.alpnProtocol==="h2"?await te(e,s):await ee(e,s)}catch(e){s.destroy().on("error",noop);throw e}e[R]=false;s[V]=0;s[_]=e[_];s[C]=e;s[N]=null;if(o.connected.hasSubscribers){o.connected.publish({connectParams:{host:t,hostname:A,protocol:n,port:a,version:e[X]?.version,servername:e[Q],localAddress:e[Z]},connector:e[Y],socket:s})}e.emit("connect",e[E],[e])}catch(s){if(e.destroyed){return}e[R]=false;if(o.connectError.hasSubscribers){o.connectError.publish({connectParams:{host:t,hostname:A,protocol:n,port:a,version:e[X]?.version,servername:e[Q],localAddress:e[Z]},connector:e[Y],error:s})}if(s.code==="ERR_TLS_CERT_ALTNAME_INVALID"){r(e[f]===0);while(e[p]>0&&e[y][e[S]].servername===e[Q]){const t=e[y][e[S]++];i.errorRequest(e,t,s)}}else{onError(e,s)}e.emit("connectionError",e[E],[e],s)}e[$]()}function emitDrain(e){e[D]=0;e.emit("drain",e[E],[e])}function resume(e,t){if(e[d]===2){return}e[d]=2;_resume(e,t);e[d]=0;if(e[F]>256){e[y].splice(0,e[F]);e[S]-=e[F];e[F]=0}}function _resume(e,t){while(true){if(e.destroyed){r(e[p]===0);return}if(e[re]&&!e[w]){e[re]();e[re]=null;return}if(e[X]){e[X].resume()}if(e[B]){e[D]=2}else if(e[D]===2){if(t){e[D]=1;queueMicrotask(()=>emitDrain(e))}else{emitDrain(e)}continue}if(e[p]===0){return}if(e[f]>=(getPipelining(e)||1)){return}const A=e[y][e[S]];if(e[E].protocol==="https:"&&e[Q]!==A.servername){if(e[f]>0){return}e[Q]=A.servername;e[X]?.destroy(new h("servername changed"),()=>{e[X]=null;resume(e)})}if(e[R]){return}if(!e[X]){connect(e);return}if(e[X].destroyed){return}if(e[X].busy(A)){return}if(!A.aborted&&e[X].write(A)){e[S]++}else{e[y].splice(e[S],1)}}}e.exports=Client},1841:(e,t,A)=>{const r=A(883);const{ClientDestroyedError:s,ClientClosedError:n,InvalidArgumentError:i}=A(8707);const{kDestroy:o,kClose:a,kClosed:c,kDestroyed:l,kDispatch:h,kInterceptors:g}=A(6443);const u=Symbol("onDestroyed");const E=Symbol("onClosed");const Q=Symbol("Intercepted Dispatch");const C=Symbol("webSocketOptions");class DispatcherBase extends r{constructor(e){super();this[l]=false;this[u]=null;this[c]=false;this[E]=[];this[C]=e?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[C].maxFragments??131072,maxPayloadSize:this[C].maxPayloadSize??128*1024*1024}}get destroyed(){return this[l]}get closed(){return this[c]}get interceptors(){return this[g]}set interceptors(e){if(e){for(let t=e.length-1;t>=0;t--){const e=this[g][t];if(typeof e!=="function"){throw new i("interceptor must be an function")}}}this[g]=e}close(e){if(e===undefined){return new Promise((e,t)=>{this.close((A,r)=>A?t(A):e(r))})}if(typeof e!=="function"){throw new i("invalid callback")}if(this[l]){queueMicrotask(()=>e(new s,null));return}if(this[c]){if(this[E]){this[E].push(e)}else{queueMicrotask(()=>e(null,null))}return}this[c]=true;this[E].push(e);const onClosed=()=>{const e=this[E];this[E]=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,r)=>e?A(e):t(r))})}if(typeof t!=="function"){throw new i("invalid callback")}if(this[l]){if(this[u]){this[u].push(t)}else{queueMicrotask(()=>t(null,null))}return}if(!e){e=new s}this[l]=true;this[u]=this[u]||[];this[u].push(t);const onDestroyed=()=>{const e=this[u];this[u]=null;for(let t=0;t{queueMicrotask(onDestroyed)})}[Q](e,t){if(!this[g]||this[g].length===0){this[Q]=this[h];return this[h](e,t)}let A=this[h].bind(this);for(let e=this[g].length-1;e>=0;e--){A=this[g][e](A)}this[Q]=A;return A(e,t)}dispatch(e,t){if(!t||typeof t!=="object"){throw new i("handler must be an object")}try{if(!e||typeof e!=="object"){throw new i("opts must be an object.")}if(this[l]||this[u]){throw new s}if(this[c]){throw new n}return this[Q](e,t)}catch(e){if(typeof t.onError!=="function"){throw new i("invalid onError method")}t.onError(e);return false}}}e.exports=DispatcherBase},883:(e,t,A)=>{const r=A(8474);class Dispatcher extends r{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...e){const t=Array.isArray(e[0])?e[0]:e;let A=this.dispatch.bind(this);for(const e of t){if(e==null){continue}if(typeof e!=="function"){throw new TypeError(`invalid interceptor, expected function received ${typeof e}`)}A=e(A);if(A==null||typeof A!=="function"||A.length!==2){throw new TypeError("invalid interceptor")}}return new ComposedDispatcher(this,A)}}class ComposedDispatcher extends Dispatcher{#A=null;#r=null;constructor(e,t){super();this.#A=e;this.#r=t}dispatch(...e){this.#r(...e)}close(...e){return this.#A.close(...e)}destroy(...e){return this.#A.destroy(...e)}}e.exports=Dispatcher},3137:(e,t,A)=>{const r=A(1841);const{kClose:s,kDestroy:n,kClosed:i,kDestroyed:o,kDispatch:a,kNoProxyAgent:c,kHttpProxyAgent:l,kHttpsProxyAgent:h}=A(6443);const g=A(6672);const u=A(7405);const E={"http:":80,"https:":443};let Q=false;class EnvHttpProxyAgent extends r{#s=null;#n=null;#i=null;constructor(e={}){super();this.#i=e;if(!Q){Q=true;process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"})}const{httpProxy:t,httpsProxy:A,noProxy:r,...s}=e;this[c]=new u(s);const n=t??process.env.http_proxy??process.env.HTTP_PROXY;if(n){this[l]=new g({...s,uri:n})}else{this[l]=this[c]}const i=A??process.env.https_proxy??process.env.HTTPS_PROXY;if(i){this[h]=new g({...s,uri:i})}else{this[h]=this[l]}this.#o()}[a](e,t){const A=new URL(e.origin);const r=this.#a(A);return r.dispatch(e,t)}async[s](){await this[c].close();if(!this[l][i]){await this[l].close()}if(!this[h][i]){await this[h].close()}}async[n](e){await this[c].destroy(e);if(!this[l][o]){await this[l].destroy(e)}if(!this[h][o]){await this[h].destroy(e)}}#a(e){let{protocol:t,host:A,port:r}=e;A=A.replace(/:\d*$/,"").toLowerCase();r=Number.parseInt(r,10)||E[t]||0;if(!this.#c(A,r)){return this[c]}if(t==="https:"){return this[h]}return this[l]}#c(e,t){if(this.#l){this.#o()}if(this.#n.length===0){return true}if(this.#s==="*"){return false}for(let A=0;A{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}}},2128:(e,t,A)=>{const r=A(1841);const s=A(4660);const{kConnected:n,kSize:i,kRunning:o,kPending:a,kQueued:c,kBusy:l,kFree:h,kUrl:g,kClose:u,kDestroy:E,kDispatch:Q}=A(6443);const C=A(3246);const B=Symbol("clients");const I=Symbol("needDrain");const d=Symbol("queue");const f=Symbol("closed resolve");const p=Symbol("onDrain");const w=Symbol("onConnect");const y=Symbol("onDisconnect");const m=Symbol("onConnectionError");const R=Symbol("get dispatcher");const D=Symbol("add client");const b=Symbol("remove client");const k=Symbol("stats");class PoolBase extends r{constructor(e){super(e);this[d]=new s;this[B]=[];this[c]=0;const t=this;this[p]=function onDrain(e,A){const r=t[d];let s=false;while(!s){const e=r.shift();if(!e){break}t[c]--;s=!this.dispatch(e.opts,e.handler)}this[I]=s;if(!this[I]&&t[I]){t[I]=false;t.emit("drain",e,[t,...A])}if(t[f]&&r.isEmpty()){Promise.all(t[B].map(e=>e.close())).then(t[f])}};this[w]=(e,A)=>{t.emit("connect",e,[t,...A])};this[y]=(e,A,r)=>{t.emit("disconnect",e,[t,...A],r)};this[m]=(e,A,r)=>{t.emit("connectionError",e,[t,...A],r)};this[k]=new C(this)}get[l](){return this[I]}get[n](){return this[B].filter(e=>e[n]).length}get[h](){return this[B].filter(e=>e[n]&&!e[I]).length}get[a](){let e=this[c];for(const{[a]:t}of this[B]){e+=t}return e}get[o](){let e=0;for(const{[o]:t}of this[B]){e+=t}return e}get[i](){let e=this[c];for(const{[i]:t}of this[B]){e+=t}return e}get stats(){return this[k]}async[u](){if(this[d].isEmpty()){await Promise.all(this[B].map(e=>e.close()))}else{await new Promise(e=>{this[f]=e})}}async[E](e){while(true){const t=this[d].shift();if(!t){break}t.handler.onError(e)}await Promise.all(this[B].map(t=>t.destroy(e)))}[Q](e,t){const A=this[R]();if(!A){this[I]=true;this[d].push({opts:e,handler:t});this[c]++}else if(!A.dispatch(e,t)){A[I]=true;this[I]=!this[R]()}return!this[I]}[D](e){e.on("drain",this[p]).on("connect",this[w]).on("disconnect",this[y]).on("connectionError",this[m]);this[B].push(e);if(this[I]){queueMicrotask(()=>{if(this[I]){this[p](e[g],[this,e])}})}return this}[b](e){e.close(()=>{const t=this[B].indexOf(e);if(t!==-1){this[B].splice(t,1)}});this[I]=this[B].some(e=>!e[I]&&e.closed!==true&&e.destroyed!==true)}}e.exports={PoolBase:PoolBase,kClients:B,kNeedDrain:I,kAddClient:D,kRemoveClient:b,kGetDispatcher:R}},3246:(e,t,A)=>{const{kFree:r,kConnected:s,kPending:n,kQueued:i,kRunning:o,kSize:a}=A(6443);const c=Symbol("pool");class PoolStats{constructor(e){this[c]=e}get connected(){return this[c][s]}get free(){return this[c][r]}get pending(){return this[c][n]}get queued(){return this[c][i]}get running(){return this[c][o]}get size(){return this[c][a]}}e.exports=PoolStats},628:(e,t,A)=>{const{PoolBase:r,kClients:s,kNeedDrain:n,kAddClient:i,kGetDispatcher:o}=A(2128);const a=A(3701);const{InvalidArgumentError:c}=A(8707);const l=A(3440);const{kUrl:h,kInterceptors:g}=A(6443);const u=A(9136);const E=Symbol("options");const Q=Symbol("connections");const C=Symbol("factory");function defaultFactory(e,t){return new a(e,t)}class Pool extends r{constructor(e,{connections:t,factory:A=defaultFactory,connect:r,connectTimeout:n,tls:i,maxCachedSessions:o,socketPath:a,autoSelectFamily:B,autoSelectFamilyAttemptTimeout:I,allowH2:d,...f}={}){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(r!=null&&typeof r!=="function"&&typeof r!=="object"){throw new c("connect must be a function or an object")}if(typeof r!=="function"){r=u({...i,maxCachedSessions:o,allowH2:d,socketPath:a,timeout:n,...B?{autoSelectFamily:B,autoSelectFamilyAttemptTimeout:I}:undefined,...r})}super(f);this[g]=f.interceptors?.Pool&&Array.isArray(f.interceptors.Pool)?f.interceptors.Pool:[];this[Q]=t||null;this[h]=l.parseOrigin(e);this[E]={...l.deepClone(f),connect:r,allowH2:d};this[E].interceptors=f.interceptors?{...f.interceptors}:undefined;this[C]=A;this.on("connectionError",(e,t,A)=>{for(const e of t){const t=this[s].indexOf(e);if(t!==-1){this[s].splice(t,1)}}})}[o](){for(const e of this[s]){if(!e[n]){return e}}if(!this[Q]||this[s].length{const{kProxy:r,kClose:s,kDestroy:n,kDispatch:i,kInterceptors:o}=A(6443);const{URL:a}=A(3136);const c=A(7405);const l=A(628);const h=A(1841);const{InvalidArgumentError:g,RequestAbortedError:u,SecureProxyConnectionError:E}=A(8707);const Q=A(9136);const C=A(3701);const B=Symbol("proxy agent");const I=Symbol("proxy client");const d=Symbol("proxy headers");const f=Symbol("request tls settings");const p=Symbol("proxy tls settings");const w=Symbol("connect endpoint function");const y=Symbol("tunnel proxy");function defaultProtocolPort(e){return e==="https:"?443:80}function defaultFactory(e,t){return new l(e,t)}const noop=()=>{};function defaultAgentFactory(e,t){if(t.connections===1){return new C(e,t)}return new l(e,t)}class Http1ProxyWrapper extends h{#g;constructor(e,{headers:t={},connect:A,factory:r}){super();if(!e){throw new g("Proxy URL is mandatory")}this[d]=t;if(r){this.#g=r(e,{connect:A})}else{this.#g=new C(e,{connect:A})}}[i](e,t){const A=t.onHeaders;t.onHeaders=function(e,r,s){if(e===407){if(typeof t.onError==="function"){t.onError(new g("Proxy Authentication Required (407)"))}return}if(A)A.call(this,e,r,s)};const{origin:r,path:s="/",headers:n={}}=e;e.path=r+s;if(!("host"in n)&&!("Host"in n)){const{host:e}=new a(r);n.host=e}e.headers={...this[d],...n};return this.#g[i](e,t)}async[s](){return this.#g.close()}async[n](e){return this.#g.destroy(e)}}class ProxyAgent extends h{constructor(e){super();if(!e||typeof e==="object"&&!(e instanceof a)&&!e.uri){throw new g("Proxy uri is mandatory")}const{clientFactory:t=defaultFactory}=e;if(typeof t!=="function"){throw new g("Proxy opts.clientFactory must be a function.")}const{proxyTunnel:A=true}=e;const s=this.#u(e);const{href:n,origin:i,port:l,protocol:h,username:C,password:m,hostname:R}=s;this[r]={uri:n,protocol:h};this[o]=e.interceptors?.ProxyAgent&&Array.isArray(e.interceptors.ProxyAgent)?e.interceptors.ProxyAgent:[];this[f]=e.requestTls;this[p]=e.proxyTls;this[d]=e.headers||{};this[y]=A;if(e.auth&&e.token){throw new g("opts.auth cannot be used in combination with opts.token")}else if(e.auth){this[d]["proxy-authorization"]=`Basic ${e.auth}`}else if(e.token){this[d]["proxy-authorization"]=e.token}else if(C&&m){this[d]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(C)}:${decodeURIComponent(m)}`).toString("base64")}`}const D=Q({...e.proxyTls});this[w]=Q({...e.requestTls});const b=e.factory||defaultAgentFactory;const factory=(e,t)=>{const{protocol:A}=new a(e);if(!this[y]&&A==="http:"&&this[r].protocol==="http:"){return new Http1ProxyWrapper(this[r].uri,{headers:this[d],connect:D,factory:b})}return b(e,t)};this[I]=t(s,{connect:D});this[B]=new c({...e,factory:factory,connect:async(e,t)=>{let A=e.host;if(!e.port){A+=`:${defaultProtocolPort(e.protocol)}`}try{const{socket:r,statusCode:s}=await this[I].connect({origin:i,port:l,path:A,signal:e.signal,headers:{...this[d],host:e.host},servername:this[p]?.servername||R});if(s!==200){r.on("error",noop).destroy();t(new u(`Proxy response (${s}) !== 200 when HTTP Tunneling`))}if(e.protocol!=="https:"){t(null,r);return}let n;if(this[f]){n=this[f].servername}else{n=e.servername}this[w]({...e,servername:n,httpSocket:r},t)}catch(e){if(e.code==="ERR_TLS_CERT_ALTNAME_INVALID"){t(new E(e))}else{t(e)}}}})}dispatch(e,t){const A=buildHeaders(e.headers);throwIfProxyAuthIsSent(A);if(A&&!("host"in A)&&!("Host"in A)){const{host:t}=new a(e.origin);A.host=t}return this[B].dispatch({...e,headers:A},t)}#u(e){if(typeof e==="string"){return new a(e)}else if(e instanceof a){return e}else{return new a(e.uri)}}async[s](){await this[B].close();await this[I].close()}async[n](){await this[B].destroy();await this[I].destroy()}}function buildHeaders(e){if(Array.isArray(e)){const t={};for(let A=0;Ae.toLowerCase()==="proxy-authorization");if(t){throw new g("Proxy-Authorization should be sent in ProxyAgent constructor")}}e.exports=ProxyAgent},50:(e,t,A)=>{const r=A(883);const s=A(7816);class RetryAgent extends r{#E=null;#Q=null;constructor(e,t={}){super(t);this.#E=e;this.#Q=t}dispatch(e,t){const A=new s({...e,retryOptions:this.#Q},{dispatch:this.#E.dispatch.bind(this.#E),handler:t});return this.#E.dispatch(e,A)}close(){return this.#E.close()}destroy(){return this.#E.destroy()}}e.exports=RetryAgent},2581:(e,t,A)=>{const r=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:s}=A(8707);const n=A(7405);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new n)}function setGlobalDispatcher(e){if(!e||typeof e.dispatch!=="function"){throw new s("Argument agent must implement Agent")}Object.defineProperty(globalThis,r,{value:e,writable:true,enumerable:false,configurable:false})}function getGlobalDispatcher(){return globalThis[r]}e.exports={setGlobalDispatcher:setGlobalDispatcher,getGlobalDispatcher:getGlobalDispatcher}},8155:e=>{e.exports=class DecoratorHandler{#C;constructor(e){if(typeof e!=="object"||e===null){throw new TypeError("handler must be an object")}this.#C=e}onConnect(...e){return this.#C.onConnect?.(...e)}onError(...e){return this.#C.onError?.(...e)}onUpgrade(...e){return this.#C.onUpgrade?.(...e)}onResponseStarted(...e){return this.#C.onResponseStarted?.(...e)}onHeaders(...e){return this.#C.onHeaders?.(...e)}onData(...e){return this.#C.onData?.(...e)}onComplete(...e){return this.#C.onComplete?.(...e)}onBodySent(...e){return this.#C.onBodySent?.(...e)}}},8754:(e,t,A)=>{const r=A(3440);const{kBodyUsed:s}=A(6443);const n=A(4589);const{InvalidArgumentError:i}=A(8707);const o=A(8474);const a=[300,301,302,303,307,308];const c=Symbol("body");class BodyAsyncIterable{constructor(e){this[c]=e;this[s]=false}async*[Symbol.asyncIterator](){n(!this[s],"disturbed");this[s]=true;yield*this[c]}}class RedirectHandler{constructor(e,t,A,a){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new i("maxRedirections must be a positive number")}r.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=[];this.redirectionLimitReached=false;if(r.isStream(this.opts.body)){if(r.bodyLength(this.opts.body)===0){this.opts.body.on("data",function(){n(false)})}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[s]=false;o.prototype.on.call(this.opts.body,"data",function(){this[s]=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)&&r.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,s){this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)?null:parseLocation(e,t);if(this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){if(this.request){this.request.abort(new Error("max redirects"))}this.redirectionLimitReached=true;this.abort(new Error("max redirects"));return}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,s)}const{origin:n,pathname:i,search:o}=r.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin)));const a=o?`${i}${o}`:i;this.opts.headers=cleanRequestHeaders(this.opts.headers,e===303,this.opts.origin!==n);this.opts.path=a;this.opts.origin=n;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 r=A(4589);const{kRetryHandlerDefaultRetry:s}=A(6443);const{RequestRetryError:n}=A(8707);const{isDisturbed:i,parseHeaders:o,parseRangeHeader:a,wrapRequestBody:c}=A(3440);function calculateRetryAfterHeader(e){const t=Date.now();return new Date(e).getTime()-t}function validatePartialResponseContentLength(e,t,A,r){const s=e["content-length"];if(s==null){return null}if(!Number.isFinite(t.start)||!Number.isFinite(t.end)){return null}const i=Number(s);const o=t.end-t.start+1;if(!Number.isFinite(i)||i!==o){return new n("Content-Length mismatch",A,{headers:e,data:{count:r}})}return null}class RetryHandler{constructor(e,t){const{retryOptions:A,...r}=e;const{retry:n,maxRetries:i,maxTimeout:o,minTimeout:a,timeoutFactor:l,methods:h,errorCodes:g,retryAfter:u,statusCodes:E}=A??{};this.dispatch=t.dispatch;this.handler=t.handler;this.opts={...r,body:c(e.body)};this.abort=null;this.aborted=false;this.retryOpts={retry:n??RetryHandler[s],retryAfter:u??true,maxTimeout:o??30*1e3,minTimeout:a??500,timeoutFactor:l??2,maxRetries:i??5,methods:h??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:E??[500,502,503,504,429],errorCodes:g??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]};this.retryCount=0;this.retryCountCheckpoint=0;this.start=0;this.end=null;this.etag=null;this.resume=null;this.headersSent=false;this.handler.onConnect(e=>{this.aborted=true;if(this.abort){this.abort(e)}else{this.reason=e}})}checkpointResponseEnd(e,t){if(this.end==null&&this.opts.method!=="HEAD"){const t=e["content-length"];this.end=t!=null?Number(t)-1:null;r(this.end==null||Number.isFinite(this.end),"invalid content-length")}this.resume=this.end!=null?t:null}onRequestSent(){if(this.handler.onRequestSent){this.handler.onRequestSent()}}onUpgrade(e,t,A){if(this.handler.onUpgrade){this.handler.onUpgrade(e,t,A)}}onConnect(e){if(this.aborted){e(this.reason)}else{this.abort=e}}onBodySent(e){if(this.handler.onBodySent)return this.handler.onBodySent(e)}static[s](e,{state:t,opts:A},r){const{statusCode:s,code:n,headers:i}=e;const{method:o,retryOptions:a}=A;const{maxRetries:c,minTimeout:l,maxTimeout:h,timeoutFactor:g,statusCodes:u,errorCodes:E,methods:Q}=a;const{counter:C}=t;if(n&&n!=="UND_ERR_REQ_RETRY"&&!E.includes(n)){r(e);return}if(Array.isArray(Q)&&!Q.includes(o)){r(e);return}if(s!=null&&Array.isArray(u)&&!u.includes(s)){r(e);return}if(C>c){r(e);return}let B=i?.["retry-after"];if(B){B=Number(B);B=Number.isNaN(B)?calculateRetryAfterHeader(B):B*1e3}const I=B>0?Math.min(B,h):Math.min(l*g**(C-1),h);setTimeout(()=>r(null),I)}onHeaders(e,t,A,s){const i=o(t);this.retryCount+=1;if(e>=300){if(!this.headersSent&&this.retryOpts.statusCodes.includes(e)===false){this.headersSent=true;this.checkpointResponseEnd(i,A);return this.handler.onHeaders(e,t,A,s)}else{this.abort(new n("Request failed",e,{headers:i,data:{count:this.retryCount}}));return false}}if(this.resume!=null){this.resume=null;if(e!==206&&(this.start>0||e!==200)){this.abort(new n("server does not support the range header and the payload was partially consumed",e,{headers:i,data:{count:this.retryCount}}));return false}const t=a(i["content-range"]);if(!t){this.abort(new n("Content-Range mismatch",e,{headers:i,data:{count:this.retryCount}}));return false}if(this.etag!=null&&this.etag!==i.etag){this.abort(new n("ETag mismatch",e,{headers:i,data:{count:this.retryCount}}));return false}const r=validatePartialResponseContentLength(i,t,e,this.retryCount);if(r!=null){this.abort(r);return false}const{start:s,size:o,end:c=o-1}=t;if(this.start!==s||this.end!=null&&this.end!==c){this.abort(new n("Content-Range mismatch",e,{headers:i,data:{count:this.retryCount}}));return false}this.resume=A;return true}if(this.end==null){if(e===206){const n=a(i["content-range"]);if(n==null){this.headersSent=true;return this.handler.onHeaders(e,t,A,s)}const o=validatePartialResponseContentLength(i,n,e,this.retryCount);if(o!=null){this.abort(o);return false}const{start:c,size:l,end:h=l-1}=n;r(c!=null&&Number.isFinite(c),"content-range mismatch");r(h!=null&&Number.isFinite(h),"invalid content-length");this.start=c;this.end=h}if(this.end==null){const e=i["content-length"];this.end=e!=null?Number(e)-1:null}r(Number.isFinite(this.start));r(this.end==null||Number.isFinite(this.end),"invalid content-length");this.resume=A;this.headersSent=true;this.etag=i.etag!=null?i.etag:null;if(this.etag!=null&&this.etag.startsWith("W/")){this.etag=null}return this.handler.onHeaders(e,t,A,s)}const c=new n("Request failed",e,{headers:i,data:{count:this.retryCount}});this.abort(c);return false}onData(e){this.start+=e.length;return this.handler.onData(e)}onComplete(e){this.retryCount=0;return this.handler.onComplete(e)}onError(e){if(this.aborted||i(this.opts.body)||this.headersSent&&this.resume==null){return this.handler.onError(e)}if(this.retryCount-this.retryCountCheckpoint>0){this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint)}else{this.retryCount+=1}this.retryOpts.retry(e,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},onRetry.bind(this));function onRetry(e){if(e!=null||this.aborted||i(this.opts.body)){return this.handler.onError(e)}if(this.start!==0){const e={range:`bytes=${this.start}-${this.end??""}`};if(this.etag!=null){e["if-match"]=this.etag}this.opts={...this.opts,headers:{...this.opts.headers,...e}}}try{this.retryCountCheckpoint=this.retryCount;this.dispatch(this.opts,this)}catch(e){this.handler.onError(e)}}}}e.exports=RetryHandler},379:(e,t,A)=>{const{isIP:r}=A(7030);const{lookup:s}=A(610);const n=A(8155);const{InvalidArgumentError:i,InformationalError:o}=A(8707);const a=Math.pow(2,31)-1;class DNSInstance{#B=0;#I=0;#d=new Map;dualStack=true;affinity=null;lookup=null;pick=null;constructor(e){this.#B=e.maxTTL;this.#I=e.maxItems;this.dualStack=e.dualStack;this.affinity=e.affinity;this.lookup=e.lookup??this.#f;this.pick=e.pick??this.#p}get full(){return this.#d.size===this.#I}runLookup(e,t,A){const r=this.#d.get(e.hostname);if(r==null&&this.full){A(null,e.origin);return}const s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#B,maxItems:this.#I};if(r==null){this.lookup(e,s,(t,r)=>{if(t||r==null||r.length===0){A(t??new o("No DNS entries found"));return}this.setRecords(e,r);const n=this.#d.get(e.hostname);const i=this.pick(e,n,s.affinity);let a;if(typeof i.port==="number"){a=`:${i.port}`}else if(e.port!==""){a=`:${e.port}`}else{a=""}A(null,`${e.protocol}//${i.family===6?`[${i.address}]`:i.address}${a}`)})}else{const n=this.pick(e,r,s.affinity);if(n==null){this.#d.delete(e.hostname);this.runLookup(e,t,A);return}let i;if(typeof n.port==="number"){i=`:${n.port}`}else if(e.port!==""){i=`:${e.port}`}else{i=""}A(null,`${e.protocol}//${n.family===6?`[${n.address}]`:n.address}${i}`)}}#f(e,t,A){s(e.hostname,{all:true,family:this.dualStack===false?this.affinity:0,order:"ipv4first"},(e,t)=>{if(e){return A(e)}const r=new Map;for(const e of t){r.set(`${e.address}:${e.family}`,e)}A(null,r.values())})}#p(e,t,A){let r=null;const{records:s,offset:n}=t;let i;if(this.dualStack){if(A==null){if(n==null||n===a){t.offset=0;A=4}else{t.offset++;A=(t.offset&1)===1?6:4}}if(s[A]!=null&&s[A].ips.length>0){i=s[A]}else{i=s[A===4?6:4]}}else{i=s[A]}if(i==null||i.ips.length===0){return r}if(i.offset==null||i.offset===a){i.offset=0}else{i.offset++}const o=i.offset%i.ips.length;r=i.ips[o]??null;if(r==null){return r}if(Date.now()-r.timestamp>r.ttl){i.ips.splice(o,1);return this.pick(e,t,A)}return r}setRecords(e,t){const A=Date.now();const r={records:{4:null,6:null}};for(const e of t){e.timestamp=A;if(typeof e.ttl==="number"){e.ttl=Math.min(e.ttl,this.#B)}else{e.ttl=this.#B}const t=r.records[e.family]??{ips:[]};t.ips.push(e);r.records[e.family]=t}this.#d.set(e.hostname,r)}getHandler(e,t){return new DNSDispatchHandler(this,e,t)}}class DNSDispatchHandler extends n{#w=null;#i=null;#r=null;#C=null;#y=null;constructor(e,{origin:t,handler:A,dispatch:r},s){super(A);this.#y=t;this.#C=A;this.#i={...s};this.#w=e;this.#r=r}onError(e){switch(e.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#w.dualStack){this.#w.runLookup(this.#y,this.#i,(e,t)=>{if(e){return this.#C.onError(e)}const A={...this.#i,origin:t};this.#r(A,this)});return}this.#C.onError(e);return}case"ENOTFOUND":this.#w.deleteRecord(this.#y);default:this.#C.onError(e);break}}}e.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!=="number"||e?.maxTTL<0)){throw new i("Invalid maxTTL. Must be a positive number")}if(e?.maxItems!=null&&(typeof e?.maxItems!=="number"||e?.maxItems<1)){throw new i("Invalid maxItems. Must be a positive number and greater than zero")}if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6){throw new i("Invalid affinity. Must be either 4 or 6")}if(e?.dualStack!=null&&typeof e?.dualStack!=="boolean"){throw new i("Invalid dualStack. Must be a boolean")}if(e?.lookup!=null&&typeof e?.lookup!=="function"){throw new i("Invalid lookup. Must be a function")}if(e?.pick!=null&&typeof e?.pick!=="function"){throw new i("Invalid pick. Must be a function")}const t=e?.dualStack??true;let A;if(t){A=e?.affinity??null}else{A=e?.affinity??4}const s={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:t,affinity:A,maxItems:e?.maxItems??Infinity};const n=new DNSInstance(s);return e=>function dnsInterceptor(t,A){const s=t.origin.constructor===URL?t.origin:new URL(t.origin);if(r(s.hostname)!==0){return e(t,A)}n.runLookup(s,t,(r,i)=>{if(r){return A.onError(r)}let o=null;o={...t,servername:s.hostname,origin:i,headers:{host:s.hostname,...t.headers}};e(o,n.getHandler({origin:s,dispatch:e,handler:A},t))});return true}}},8060:(e,t,A)=>{const r=A(3440);const{InvalidArgumentError:s,RequestAbortedError:n}=A(8707);const i=A(8155);class DumpHandler extends i{#m=1024*1024;#R=null;#D=false;#b=false;#k=0;#S=null;#C=null;constructor({maxSize:e},t){super(t);if(e!=null&&(!Number.isFinite(e)||e<1)){throw new s("maxSize must be a number greater than 0")}this.#m=e??this.#m;this.#C=t}onConnect(e){this.#R=e;this.#C.onConnect(this.#F.bind(this))}#F(e){this.#b=true;this.#S=e}onHeaders(e,t,A,s){const i=r.parseHeaders(t);const o=i["content-length"];if(o!=null&&o>this.#m){throw new n(`Response size (${o}) larger than maxSize (${this.#m})`)}if(this.#b){return true}return this.#C.onHeaders(e,t,A,s)}onError(e){if(this.#D){return}e=this.#S??e;this.#C.onError(e)}onData(e){this.#k=this.#k+e.length;if(this.#k>=this.#m){this.#D=true;if(this.#b){this.#C.onError(this.#S)}else{this.#C.onComplete([])}}return true}onComplete(e){if(this.#D){return}if(this.#b){this.#C.onError(this.reason);return}this.#C.onComplete(e)}}function createDumpInterceptor({maxSize:e}={maxSize:1024*1024}){return t=>function Intercept(A,r){const{dumpMaxSize:s=e}=A;const n=new DumpHandler({maxSize:s},r);return t(A,n)}}e.exports=createDumpInterceptor},5092:(e,t,A)=>{const r=A(8754);function createRedirectInterceptor({maxRedirections:e}){return t=>function Intercept(A,s){const{maxRedirections:n=e}=A;if(!n){return t(A,s)}const i=new r(t,n,A,s);A={...A,maxRedirections:0};return t(A,i)}}e.exports=createRedirectInterceptor},1514:(e,t,A)=>{const r=A(8754);e.exports=e=>{const t=e?.maxRedirections;return e=>function redirectInterceptor(A,s){const{maxRedirections:n=t,...i}=A;if(!n){return e(A,s)}const o=new r(e,n,A,s);return e(i,o)}}},2026:(e,t,A)=>{const r=A(7816);e.exports=e=>t=>function retryInterceptor(A,s){return t(A,new r({...A,retryOptions:{...e,...A.retryOptions}},{handler:s,dispatch:t}))}},2824:(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 r=A(172);var s;(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"})(s=t.ERROR||(t.ERROR={}));var n;(function(e){e[e["BOTH"]=0]="BOTH";e[e["REQUEST"]=1]="REQUEST";e[e["RESPONSE"]=2]="RESPONSE"})(n=t.TYPE||(t.TYPE={}));var i;(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"})(i=t.FLAGS||(t.FLAGS={}));var o;(function(e){e[e["HEADERS"]=1]="HEADERS";e[e["CHUNKED_LENGTH"]=2]="CHUNKED_LENGTH";e[e["KEEP_ALIVE"]=4]="KEEP_ALIVE"})(o=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=r.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}},3870:(e,t,A)=>{const{Buffer:r}=A(4573);e.exports=r.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")},3434:(e,t,A)=>{const{Buffer:r}=A(4573);e.exports=r.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEVDF8LQZIBIQMgASAERg2aAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGhzwBqLQAARw1dIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAybAgsgAkEANgIAIAZBAWohAUEeDF4LIAEgBEYEQEGTASEDDJoCCyABLQAAQcwARw1bIAFBAWohAUEKDF0LIAEgBEYEQEGUASEDDJkCCwJAAkAgAS0AAEHBAGsODwBcXFxcXFxcXFxcXFxcAVwLIAFBAWohAUH+ACEDDIACCyABQQFqIQFB/wAhAwz/AQsgASAERgRAQZUBIQMMmAILAkACQCABLQAAQcEAaw4DAFsBWwsgAUEBaiEBQf0AIQMM/wELIAFBAWohAUGAASEDDP4BC0GWASEDIAEgBEYNlgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBp88Aai0AAEcNWSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlwILIAJBADYCACAGQQFqIQFBCwxaCyABIARGBEBBlwEhAwyWAgsCQAJAAkACQCABLQAAQS1rDiMAW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1sBW1tbW1sCW1tbA1sLIAFBAWohAUH7ACEDDP8BCyABQQFqIQFB/AAhAwz+AQsgAUEBaiEBQYEBIQMM/QELIAFBAWohAUGCASEDDPwBC0GYASEDIAEgBEYNlAIgAigCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBqc8Aai0AAEcNVyAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlQILIAJBADYCACAGQQFqIQFBGQxYC0GZASEDIAEgBEYNkwIgAigCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBrs8Aai0AAEcNViAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlAILIAJBADYCACAGQQFqIQFBBgxXC0GaASEDIAEgBEYNkgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBtM8Aai0AAEcNVSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkwILIAJBADYCACAGQQFqIQFBHAxWC0GbASEDIAEgBEYNkQIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBts8Aai0AAEcNVCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkgILIAJBADYCACAGQQFqIQFBJwxVCyABIARGBEBBnAEhAwyRAgsCQAJAIAEtAABB1ABrDgIAAVQLIAFBAWohAUGGASEDDPgBCyABQQFqIQFBhwEhAwz3AQtBnQEhAyABIARGDY8CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjPAGotAABHDVIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADJACCyACQQA2AgAgBkEBaiEBQSYMUwtBngEhAyABIARGDY4CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbrPAGotAABHDVEgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI8CCyACQQA2AgAgBkEBaiEBQQMMUgtBnwEhAyABIARGDY0CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDVAgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI4CCyACQQA2AgAgBkEBaiEBQQwMUQtBoAEhAyABIARGDYwCIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQbzPAGotAABHDU8gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI0CCyACQQA2AgAgBkEBaiEBQQ0MUAsgASAERgRAQaEBIQMMjAILAkACQCABLQAAQcYAaw4LAE9PT09PT09PTwFPCyABQQFqIQFBiwEhAwzzAQsgAUEBaiEBQYwBIQMM8gELIAEgBEYEQEGiASEDDIsCCyABLQAAQdAARw1MIAFBAWohAQxGCyABIARGBEBBowEhAwyKAgsCQAJAIAEtAABByQBrDgcBTU1NTU0ATQsgAUEBaiEBQY4BIQMM8QELIAFBAWohAUEiDE0LQaQBIQMgASAERg2IAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHAzwBqLQAARw1LIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyJAgsgAkEANgIAIAZBAWohAUEdDEwLIAEgBEYEQEGlASEDDIgCCwJAAkAgAS0AAEHSAGsOAwBLAUsLIAFBAWohAUGQASEDDO8BCyABQQFqIQFBBAxLCyABIARGBEBBpgEhAwyHAgsCQAJAAkACQAJAIAEtAABBwQBrDhUATU1NTU1NTU1NTQFNTQJNTQNNTQRNCyABQQFqIQFBiAEhAwzxAQsgAUEBaiEBQYkBIQMM8AELIAFBAWohAUGKASEDDO8BCyABQQFqIQFBjwEhAwzuAQsgAUEBaiEBQZEBIQMM7QELQacBIQMgASAERg2FAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHtzwBqLQAARw1IIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyGAgsgAkEANgIAIAZBAWohAUERDEkLQagBIQMgASAERg2EAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHCzwBqLQAARw1HIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyFAgsgAkEANgIAIAZBAWohAUEsDEgLQakBIQMgASAERg2DAiACKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHFzwBqLQAARw1GIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyEAgsgAkEANgIAIAZBAWohAUErDEcLQaoBIQMgASAERg2CAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHKzwBqLQAARw1FIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyDAgsgAkEANgIAIAZBAWohAUEUDEYLIAEgBEYEQEGrASEDDIICCwJAAkACQAJAIAEtAABBwgBrDg8AAQJHR0dHR0dHR0dHRwNHCyABQQFqIQFBkwEhAwzrAQsgAUEBaiEBQZQBIQMM6gELIAFBAWohAUGVASEDDOkBCyABQQFqIQFBlgEhAwzoAQsgASAERgRAQawBIQMMgQILIAEtAABBxQBHDUIgAUEBaiEBDD0LQa0BIQMgASAERg3/ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHNzwBqLQAARw1CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyAAgsgAkEANgIAIAZBAWohAUEODEMLIAEgBEYEQEGuASEDDP8BCyABLQAAQdAARw1AIAFBAWohAUElDEILQa8BIQMgASAERg39ASACKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEHQzwBqLQAARw1AIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz+AQsgAkEANgIAIAZBAWohAUEqDEELIAEgBEYEQEGwASEDDP0BCwJAAkAgAS0AAEHVAGsOCwBAQEBAQEBAQEABQAsgAUEBaiEBQZoBIQMM5AELIAFBAWohAUGbASEDDOMBCyABIARGBEBBsQEhAwz8AQsCQAJAIAEtAABBwQBrDhQAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/AT8LIAFBAWohAUGZASEDDOMBCyABQQFqIQFBnAEhAwziAQtBsgEhAyABIARGDfoBIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQdnPAGotAABHDT0gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPsBCyACQQA2AgAgBkEBaiEBQSEMPgtBswEhAyABIARGDfkBIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQd3PAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPoBCyACQQA2AgAgBkEBaiEBQRoMPQsgASAERgRAQbQBIQMM+QELAkACQAJAIAEtAABBxQBrDhEAPT09PT09PT09AT09PT09Aj0LIAFBAWohAUGdASEDDOEBCyABQQFqIQFBngEhAwzgAQsgAUEBaiEBQZ8BIQMM3wELQbUBIQMgASAERg33ASACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHkzwBqLQAARw06IABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz4AQsgAkEANgIAIAZBAWohAUEoDDsLQbYBIQMgASAERg32ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHqzwBqLQAARw05IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz3AQsgAkEANgIAIAZBAWohAUEHDDoLIAEgBEYEQEG3ASEDDPYBCwJAAkAgAS0AAEHFAGsODgA5OTk5OTk5OTk5OTkBOQsgAUEBaiEBQaEBIQMM3QELIAFBAWohAUGiASEDDNwBC0G4ASEDIAEgBEYN9AEgAigCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB7c8Aai0AAEcNNyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9QELIAJBADYCACAGQQFqIQFBEgw4C0G5ASEDIAEgBEYN8wEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8M8Aai0AAEcNNiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9AELIAJBADYCACAGQQFqIQFBIAw3C0G6ASEDIAEgBEYN8gEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8s8Aai0AAEcNNSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8wELIAJBADYCACAGQQFqIQFBDww2CyABIARGBEBBuwEhAwzyAQsCQAJAIAEtAABByQBrDgcANTU1NTUBNQsgAUEBaiEBQaUBIQMM2QELIAFBAWohAUGmASEDDNgBC0G8ASEDIAEgBEYN8AEgAigCACIAIAQgAWtqIQUgASAAa0EHaiEGAkADQCABLQAAIABB9M8Aai0AAEcNMyAAQQdGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8QELIAJBADYCACAGQQFqIQFBGww0CyABIARGBEBBvQEhAwzwAQsCQAJAAkAgAS0AAEHCAGsOEgA0NDQ0NDQ0NDQBNDQ0NDQ0AjQLIAFBAWohAUGkASEDDNgBCyABQQFqIQFBpwEhAwzXAQsgAUEBaiEBQagBIQMM1gELIAEgBEYEQEG+ASEDDO8BCyABLQAAQc4ARw0wIAFBAWohAQwsCyABIARGBEBBvwEhAwzuAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQcEAaw4VAAECAz8EBQY/Pz8HCAkKCz8MDQ4PPwsgAUEBaiEBQegAIQMM4wELIAFBAWohAUHpACEDDOIBCyABQQFqIQFB7gAhAwzhAQsgAUEBaiEBQfIAIQMM4AELIAFBAWohAUHzACEDDN8BCyABQQFqIQFB9gAhAwzeAQsgAUEBaiEBQfcAIQMM3QELIAFBAWohAUH6ACEDDNwBCyABQQFqIQFBgwEhAwzbAQsgAUEBaiEBQYQBIQMM2gELIAFBAWohAUGFASEDDNkBCyABQQFqIQFBkgEhAwzYAQsgAUEBaiEBQZgBIQMM1wELIAFBAWohAUGgASEDDNYBCyABQQFqIQFBowEhAwzVAQsgAUEBaiEBQaoBIQMM1AELIAEgBEcEQCACQRA2AgggAiABNgIEQasBIQMM1AELQcABIQMM7AELQQAhAAJAIAIoAjgiA0UNACADKAI0IgNFDQAgAiADEQAAIQALIABFDV4gAEEVRw0HIAJB0QA2AhwgAiABNgIUIAJBsBc2AhAgAkEVNgIMQQAhAwzrAQsgAUEBaiABIARHDQgaQcIBIQMM6gELA0ACQCABLQAAQQprDgQIAAALAAsgBCABQQFqIgFHDQALQcMBIQMM6QELIAEgBEcEQCACQRE2AgggAiABNgIEQQEhAwzQAQtBxAEhAwzoAQsgASAERgRAQcUBIQMM6AELAkACQCABLQAAQQprDgQBKCgAKAsgAUEBagwJCyABQQFqDAULIAEgBEYEQEHGASEDDOcBCwJAAkAgAS0AAEEKaw4XAQsLAQsLCwsLCwsLCwsLCwsLCwsLCwALCyABQQFqIQELQbABIQMMzQELIAEgBEYEQEHIASEDDOYBCyABLQAAQSBHDQkgAkEAOwEyIAFBAWohAUGzASEDDMwBCwNAIAEhAAJAIAEgBEcEQCABLQAAQTBrQf8BcSIDQQpJDQEMJwtBxwEhAwzmAQsCQCACLwEyIgFBmTNLDQAgAiABQQpsIgU7ATIgBUH+/wNxIANB//8Dc0sNACAAQQFqIQEgAiADIAVqIgM7ATIgA0H//wNxQegHSQ0BCwtBACEDIAJBADYCHCACQcEJNgIQIAJBDTYCDCACIABBAWo2AhQM5AELIAJBADYCHCACIAE2AhQgAkHwDDYCECACQRs2AgxBACEDDOMBCyACKAIEIQAgAkEANgIEIAIgACABECYiAA0BIAFBAWoLIQFBrQEhAwzIAQsgAkHBATYCHCACIAA2AgwgAiABQQFqNgIUQQAhAwzgAQsgAigCBCEAIAJBADYCBCACIAAgARAmIgANASABQQFqCyEBQa4BIQMMxQELIAJBwgE2AhwgAiAANgIMIAIgAUEBajYCFEEAIQMM3QELIAJBADYCHCACIAE2AhQgAkGXCzYCECACQQ02AgxBACEDDNwBCyACQQA2AhwgAiABNgIUIAJB4xA2AhAgAkEJNgIMQQAhAwzbAQsgAkECOgAoDKwBC0EAIQMgAkEANgIcIAJBrws2AhAgAkECNgIMIAIgAUEBajYCFAzZAQtBAiEDDL8BC0ENIQMMvgELQSYhAwy9AQtBFSEDDLwBC0EWIQMMuwELQRghAwy6AQtBHCEDDLkBC0EdIQMMuAELQSAhAwy3AQtBISEDDLYBC0EjIQMMtQELQcYAIQMMtAELQS4hAwyzAQtBPSEDDLIBC0HLACEDDLEBC0HOACEDDLABC0HYACEDDK8BC0HZACEDDK4BC0HbACEDDK0BC0HxACEDDKwBC0H0ACEDDKsBC0GNASEDDKoBC0GXASEDDKkBC0GpASEDDKgBC0GvASEDDKcBC0GxASEDDKYBCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB8Rs2AhAgAkEGNgIMDL0BCyACQQA2AgAgBkEBaiEBQSQLOgApIAIoAgQhACACQQA2AgQgAiAAIAEQJyIARQRAQeUAIQMMowELIAJB+QA2AhwgAiABNgIUIAIgADYCDEEAIQMMuwELIABBFUcEQCACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwy7AQsgAkH4ADYCHCACIAE2AhQgAkHKGDYCECACQRU2AgxBACEDDLoBCyACQQA2AhwgAiABNgIUIAJBjhs2AhAgAkEGNgIMQQAhAwy5AQsgAkEANgIcIAIgATYCFCACQf4RNgIQIAJBBzYCDEEAIQMMuAELIAJBADYCHCACIAE2AhQgAkGMHDYCECACQQc2AgxBACEDDLcBCyACQQA2AhwgAiABNgIUIAJBww82AhAgAkEHNgIMQQAhAwy2AQsgAkEANgIcIAIgATYCFCACQcMPNgIQIAJBBzYCDEEAIQMMtQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")},172:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.enumToMap=void 0;function enumToMap(e){const t={};Object.keys(e).forEach(A=>{const r=e[A];if(typeof r==="number"){t[A]=r}});return t}t.enumToMap=enumToMap},7501:(e,t,A)=>{const{kClients:r}=A(6443);const s=A(7405);const{kAgent:n,kMockAgentSet:i,kMockAgentGet:o,kDispatches:a,kIsMockActive:c,kNetConnect:l,kGetNetConnect:h,kOptions:g,kFactory:u}=A(1117);const E=A(7365);const Q=A(4004);const{matchValue:C,buildMockOptions:B}=A(3397);const{InvalidArgumentError:I,UndiciError:d}=A(8707);const f=A(883);const p=A(1529);const w=A(6142);class MockAgent extends f{constructor(e){super(e);this[l]=true;this[c]=true;if(e?.agent&&typeof e.agent.dispatch!=="function"){throw new I("Argument opts.agent must implement Agent")}const t=e?.agent?e.agent:new s(e);this[n]=t;this[r]=t[r];this[g]=B(e)}get(e){let t=this[o](e);if(!t){t=this[u](e);this[i](e,t)}return t}dispatch(e,t){this.get(e.origin);return this[n].dispatch(e,t)}async close(){await this[n].close();this[r].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 I("Unsupported matcher. Must be one of String|Function|RegExp.")}}disableNetConnect(){this[l]=false}get isMockActive(){return this[c]}[i](e,t){this[r].set(e,t)}[u](e){const t=Object.assign({agent:this},this[g]);return this[g]&&this[g].connections===1?new E(e,t):new Q(e,t)}[o](e){const t=this[r].get(e);if(t){return t}if(typeof e!=="string"){const t=this[u]("http://localhost:9999");this[i](e,t);return t}for(const[t,A]of Array.from(this[r])){if(A&&typeof t!=="string"&&C(t,e)){const t=this[u](e);this[i](e,t);t[a]=A[a];return t}}}[h](){return this[l]}pendingInterceptors(){const e=this[r];return Array.from(e.entries()).flatMap(([e,t])=>t[a].map(t=>({...t,origin:e}))).filter(({pending:e})=>e)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new w}={}){const t=this.pendingInterceptors();if(t.length===0){return}const A=new p("interceptor","interceptors").pluralize(t.length);throw new d(`\n${A.count} ${A.noun} ${A.is} pending:\n\n${e.format(t)}\n`.trim())}}e.exports=MockAgent},7365:(e,t,A)=>{const{promisify:r}=A(7975);const s=A(3701);const{buildMockDispatch:n}=A(3397);const{kDispatches:i,kMockAgent:o,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:h,kConnected:g}=A(1117);const{MockInterceptor:u}=A(1511);const E=A(6443);const{InvalidArgumentError:Q}=A(8707);class MockClient extends s{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new Q("Argument opts.agent must implement Agent")}this[o]=t.agent;this[l]=e;this[i]=[];this[g]=1;this[h]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=n.call(this);this.close=this[a]}get[E.kConnected](){return this[g]}intercept(e){return new u(e,this[i])}async[a](){await r(this[c])();this[g]=0;this[o][E.kClients].delete(this[l])}}e.exports=MockClient},2429:(e,t,A)=>{const{UndiciError:r}=A(8707);const s=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");class MockNotMatchedError extends r{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"}static[Symbol.hasInstance](e){return e&&e[s]===true}[s]=true}e.exports={MockNotMatchedError:MockNotMatchedError}},1511:(e,t,A)=>{const{getResponseData:r,buildKey:s,addMockDispatch:n}=A(3397);const{kDispatches:i,kDispatchKey:o,kDefaultHeaders:a,kDefaultTrailers:c,kContentLength:l,kMockDispatch:h}=A(1117);const{InvalidArgumentError:g}=A(8707);const{buildURL:u}=A(3440);class MockScope{constructor(e){this[h]=e}delay(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new g("waitInMs must be a valid integer > 0")}this[h].delay=e;return this}persist(){this[h].persist=true;return this}times(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new g("repeatTimes must be a valid integer > 0")}this[h].times=e;return this}}class MockInterceptor{constructor(e,t){if(typeof e!=="object"){throw new g("opts must be an object")}if(typeof e.path==="undefined"){throw new g("opts.path must be defined")}if(typeof e.method==="undefined"){e.method="GET"}if(typeof e.path==="string"){if(e.query){e.path=u(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[o]=s(e);this[i]=t;this[a]={};this[c]={};this[l]=false}createMockScopeDispatchData({statusCode:e,data:t,responseOptions:A}){const s=r(t);const n=this[l]?{"content-length":s.length}:{};const i={...this[a],...n,...A.headers};const o={...this[c],...A.trailers};return{statusCode:e,data:t,headers:i,trailers:o}}validateReplyParameters(e){if(typeof e.statusCode==="undefined"){throw new g("statusCode must be defined")}if(typeof e.responseOptions!=="object"||e.responseOptions===null){throw new g("responseOptions must be an object")}}reply(e){if(typeof e==="function"){const wrappedDefaultsCallback=t=>{const A=e(t);if(typeof A!=="object"||A===null){throw new g("reply options callback must return an object")}const r={data:"",responseOptions:{},...A};this.validateReplyParameters(r);return{...this.createMockScopeDispatchData(r)}};const t=n(this[i],this[o],wrappedDefaultsCallback);return new MockScope(t)}const t={statusCode:e,data:arguments[1]===undefined?"":arguments[1],responseOptions:arguments[2]===undefined?{}:arguments[2]};this.validateReplyParameters(t);const A=this.createMockScopeDispatchData(t);const r=n(this[i],this[o],A);return new MockScope(r)}replyWithError(e){if(typeof e==="undefined"){throw new g("error must be defined")}const t=n(this[i],this[o],{error:e});return new MockScope(t)}defaultReplyHeaders(e){if(typeof e==="undefined"){throw new g("headers must be defined")}this[a]=e;return this}defaultReplyTrailers(e){if(typeof e==="undefined"){throw new g("trailers must be defined")}this[c]=e;return this}replyContentLength(){this[l]=true;return this}}e.exports.MockInterceptor=MockInterceptor;e.exports.MockScope=MockScope},4004:(e,t,A)=>{const{promisify:r}=A(7975);const s=A(628);const{buildMockDispatch:n}=A(3397);const{kDispatches:i,kMockAgent:o,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:h,kConnected:g}=A(1117);const{MockInterceptor:u}=A(1511);const E=A(6443);const{InvalidArgumentError:Q}=A(8707);class MockPool extends s{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new Q("Argument opts.agent must implement Agent")}this[o]=t.agent;this[l]=e;this[i]=[];this[g]=1;this[h]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=n.call(this);this.close=this[a]}get[E.kConnected](){return this[g]}intercept(e){return new u(e,this[i])}async[a](){await r(this[c])();this[g]=0;this[o][E.kClients].delete(this[l])}}e.exports=MockPool},1117: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")}},3397:(e,t,A)=>{const{MockNotMatchedError:r}=A(2429);const{kDispatches:s,kMockAgent:n,kOriginalDispatch:i,kOrigin:o,kGetNetConnect:a}=A(1117);const{buildURL:c}=A(3440);const{STATUS_CODES:l}=A(7067);const{types:{isPromise:h}}=A(7975);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),s));if(n.length===0){throw new r(`Mock dispatch not matched for path '${s}'`)}n=n.filter(({method:e})=>matchValue(e,t.method));if(n.length===0){throw new r(`Mock dispatch not matched for method '${t.method}' on path '${s}'`)}n=n.filter(({body:e})=>typeof e!=="undefined"?matchValue(e,t.body):true);if(n.length===0){throw new r(`Mock dispatch not matched for body '${t.body}' on path '${s}'`)}n=n.filter(e=>matchHeaders(e,t.headers));if(n.length===0){const e=typeof t.headers==="object"?JSON.stringify(t.headers):t.headers;throw new r(`Mock dispatch not matched for headers '${e}' on path '${s}'`)}return n[0]}function addMockDispatch(e,t,A){const r={timesInvoked:0,times:1,persist:false,consumed:false};const s=typeof A==="function"?{callback:A}:{...A};const n={...r,...t,pending:true,data:{error:null,...s}};e.push(n);return n}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:r,headers:s,query:n}=e;return{path:t,method:A,body:r,headers:s,query:n}}function generateKeyValues(e){const t=Object.keys(e);const A=[];for(let r=0;r=E;r.pending=u0){setTimeout(()=>{handleReply(this[s])},l)}else{handleReply(this[s])}function handleReply(r,s=i){const c=Array.isArray(e.headers)?buildHeadersFromArray(e.headers):e.headers;const l=typeof s==="function"?s({...e,headers:c}):s;if(h(l)){l.then(e=>handleReply(r,e));return}const g=getResponseData(l);const u=generateKeyValues(o);const E=generateKeyValues(a);t.onConnect?.(e=>t.onError(e),null);t.onHeaders?.(n,u,resume,getStatusText(n));t.onData?.(Buffer.from(g));t.onComplete?.(E);deleteMockDispatch(r,A)}function resume(){}return true}function buildMockDispatch(){const e=this[n];const t=this[o];const A=this[i];return function dispatch(s,n){if(e.isMockActive){try{mockDispatch.call(this,s,n)}catch(i){if(i instanceof r){const o=e[a]();if(o===false){throw new r(`${i.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)`)}if(checkNetConnect(o,t)){A.call(this,s,n)}else{throw new r(`${i.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)`)}}else{throw i}}}else{A.call(this,s,n)}}}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,buildHeadersFromArray:buildHeadersFromArray}},6142:(e,t,A)=>{const{Transform:r}=A(7075);const{Console:s}=A(7540);const n=process.versions.icu?"✅":"Y ";const i=process.versions.icu?"❌":"N ";e.exports=class PendingInterceptorsFormatter{constructor({disableColors:e}={}){this.transform=new r({transform(e,t,A){A(null,e)}});this.logger=new s({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){const t=e.map(({method:e,path:t,data:{statusCode:A},persist:r,times:s,timesInvoked:o,origin:a})=>({Method:e,Origin:a,Path:t,"Status code":A,Persistent:r?n:i,Invocations:o,Remaining:r?Infinity:s-o}));this.logger.table(t);return this.transform.read().toString()}}},1529: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 r=e===1;const s=r?t:A;const n=r?this.singular:this.plural;return{...s,count:e,noun:n}}}},6603:e=>{let t=0;const A=1e3;const r=(A>>1)-1;let s;const n=Symbol("kFastTimer");const i=[];const o=-2;const a=-1;const c=0;const l=1;function onTick(){t+=r;let e=0;let A=i.length;while(e=s._idleStart+s._idleTimeout){s._state=a;s._idleStart=-1;s._onTimeout(s._timerArg)}if(s._state===a){s._state=o;if(--A!==0){i[e]=i[A]}}else{++e}}i.length=A;if(i.length!==0){refreshTimeout()}}function refreshTimeout(){if(s){s.refresh()}else{clearTimeout(s);s=setTimeout(onTick,r);if(s.unref){s.unref()}}}class FastTimer{[n]=true;_state=o;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(e,t,A){this._onTimeout=e;this._idleTimeout=t;this._timerArg=A;this.refresh()}refresh(){if(this._state===o){i.push(this)}if(!s||i.length===1){refreshTimeout()}this._state=c}clear(){this._state=a;this._idleStart=-1}}e.exports={setTimeout(e,t,r){return t<=A?setTimeout(e,t,r):new FastTimer(e,t,r)},clearTimeout(e){if(e[n]){e.clear()}else{clearTimeout(e)}},setFastTimeout(e,t,A){return new FastTimer(e,t,A)},clearFastTimeout(e){e.clear()},now(){return t},tick(e=0){t+=e-A+1;onTick();onTick()},reset(){t=0;i.length=0;clearTimeout(s);s=null},kFastTimer:n}},9634:(e,t,A)=>{const{kConstruct:r}=A(109);const{urlEquals:s,getFieldValues:n}=A(6798);const{kEnumerableProperty:i,isDisturbed:o}=A(3440);const{webidl:a}=A(5893);const{Response:c,cloneResponse:l,fromInnerResponse:h}=A(9051);const{Request:g,fromInnerRequest:u}=A(9967);const{kState:E}=A(3627);const{fetching:Q}=A(4398);const{urlIsHttpHttpsScheme:C,createDeferredPromise:B,readAllBytes:I}=A(3168);const d=A(4589);class Cache{#N;constructor(){if(arguments[0]!==r){a.illegalConstructor()}a.util.markAsUncloneable(this);this.#N=arguments[1]}async match(e,t={}){a.brandCheck(this,Cache);const A="Cache.match";a.argumentLengthCheck(arguments,1,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");const r=this.#U(e,t,1);if(r.length===0){return}return r[0]}async matchAll(e=undefined,t={}){a.brandCheck(this,Cache);const A="Cache.matchAll";if(e!==undefined)e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");return this.#U(e,t)}async add(e){a.brandCheck(this,Cache);const t="Cache.add";a.argumentLengthCheck(arguments,1,t);e=a.converters.RequestInfo(e,t,"request");const A=[e];const r=this.addAll(A);return await r}async addAll(e){a.brandCheck(this,Cache);const t="Cache.addAll";a.argumentLengthCheck(arguments,1,t);const A=[];const r=[];for(let A of e){if(A===undefined){throw a.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]})}A=a.converters.RequestInfo(A);if(typeof A==="string"){continue}const e=A[E];if(!C(e.url)||e.method!=="GET"){throw a.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}}const s=[];for(const i of e){const e=new g(i)[E];if(!C(e.url)){throw a.errors.exception({header:t,message:"Expected http/s scheme."})}e.initiator="fetch";e.destination="subresource";r.push(e);const o=B();s.push(Q({request:e,processResponse(e){if(e.type==="error"||e.status===206||e.status<200||e.status>299){o.reject(a.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(e.headersList.contains("vary")){const t=n(e.headersList.get("vary"));for(const e of t){if(e==="*"){o.reject(a.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const e of s){e.abort()}return}}}},processResponseEndOfBody(e){if(e.aborted){o.reject(new DOMException("aborted","AbortError"));return}o.resolve(e)}}));A.push(o.promise)}const i=Promise.all(A);const o=await i;const c=[];let l=0;for(const e of o){const t={type:"put",request:r[l],response:e};c.push(t);l++}const h=B();let u=null;try{this.#T(c)}catch(e){u=e}queueMicrotask(()=>{if(u===null){h.resolve(undefined)}else{h.reject(u)}});return h.promise}async put(e,t){a.brandCheck(this,Cache);const A="Cache.put";a.argumentLengthCheck(arguments,2,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.Response(t,A,"response");let r=null;if(e instanceof g){r=e[E]}else{r=new g(e)[E]}if(!C(r.url)||r.method!=="GET"){throw a.errors.exception({header:A,message:"Expected an http/s scheme when method is not GET"})}const s=t[E];if(s.status===206){throw a.errors.exception({header:A,message:"Got 206 status"})}if(s.headersList.contains("vary")){const e=n(s.headersList.get("vary"));for(const t of e){if(t==="*"){throw a.errors.exception({header:A,message:"Got * vary field value"})}}}if(s.body&&(o(s.body.stream)||s.body.stream.locked)){throw a.errors.exception({header:A,message:"Response body is locked or disturbed"})}const i=l(s);const c=B();if(s.body!=null){const e=s.body.stream;const t=e.getReader();I(t).then(c.resolve,c.reject)}else{c.resolve(undefined)}const h=[];const u={type:"put",request:r,response:i};h.push(u);const Q=await c.promise;if(i.body!=null){i.body.source=Q}const d=B();let f=null;try{this.#T(h)}catch(e){f=e}queueMicrotask(()=>{if(f===null){d.resolve()}else{d.reject(f)}});return d.promise}async delete(e,t={}){a.brandCheck(this,Cache);const A="Cache.delete";a.argumentLengthCheck(arguments,1,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");let r=null;if(e instanceof g){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return false}}else{d(typeof e==="string");r=new g(e)[E]}const s=[];const n={type:"delete",request:r,options:t};s.push(n);const i=B();let o=null;let c;try{c=this.#T(s)}catch(e){o=e}queueMicrotask(()=>{if(o===null){i.resolve(!!c?.length)}else{i.reject(o)}});return i.promise}async keys(e=undefined,t={}){a.brandCheck(this,Cache);const A="Cache.keys";if(e!==undefined)e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");let r=null;if(e!==undefined){if(e instanceof g){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){r=new g(e)[E]}}const s=B();const n=[];if(e===undefined){for(const e of this.#N){n.push(e[0])}}else{const e=this.#M(r,t);for(const t of e){n.push(t[0])}}queueMicrotask(()=>{const e=[];for(const t of n){const A=u(t,(new AbortController).signal,"immutable");e.push(A)}s.resolve(Object.freeze(e))});return s.promise}#T(e){const t=this.#N;const A=[...t];const r=[];const s=[];try{for(const A of e){if(A.type!=="delete"&&A.type!=="put"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(A.type==="delete"&&A.response!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#M(A.request,A.options,r).length){throw new DOMException("???","InvalidStateError")}let e;if(A.type==="delete"){e=this.#M(A.request,A.options);if(e.length===0){return[]}for(const A of e){const e=t.indexOf(A);d(e!==-1);t.splice(e,1)}}else if(A.type==="put"){if(A.response==null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const s=A.request;if(!C(s.url)){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(s.method!=="GET"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(A.options!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}e=this.#M(A.request);for(const A of e){const e=t.indexOf(A);d(e!==-1);t.splice(e,1)}t.push([A.request,A.response]);r.push([A.request,A.response])}s.push([A.request,A.response])}return s}catch(e){this.#N.length=0;this.#N=A;throw e}}#M(e,t,A){const r=[];const s=A??this.#N;for(const A of s){const[s,n]=A;if(this.#L(e,s,n,t)){r.push(A)}}return r}#L(e,t,A=null,r){const i=new URL(e.url);const o=new URL(t.url);if(r?.ignoreSearch){o.search="";i.search=""}if(!s(i,o,true)){return false}if(A==null||r?.ignoreVary||!A.headersList.contains("vary")){return true}const a=n(A.headersList.get("vary"));for(const A of a){if(A==="*"){return false}const r=t.headersList.get(A);const s=e.headersList.get(A);if(r!==s){return false}}return true}#U(e,t,A=Infinity){let r=null;if(e!==undefined){if(e instanceof g){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){r=new g(e)[E]}}const s=[];if(e===undefined){for(const e of this.#N){s.push(e[1])}}else{const e=this.#M(r,t);for(const t of e){s.push(t[1])}}const n=[];for(const e of s){const t=h(e,"immutable");n.push(t.clone());if(n.length>=A){break}}return Object.freeze(n)}}Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:i,matchAll:i,add:i,addAll:i,put:i,delete:i,keys:i});const f=[{key:"ignoreSearch",converter:a.converters.boolean,defaultValue:()=>false},{key:"ignoreMethod",converter:a.converters.boolean,defaultValue:()=>false},{key:"ignoreVary",converter:a.converters.boolean,defaultValue:()=>false}];a.converters.CacheQueryOptions=a.dictionaryConverter(f);a.converters.MultiCacheQueryOptions=a.dictionaryConverter([...f,{key:"cacheName",converter:a.converters.DOMString}]);a.converters.Response=a.interfaceConverter(c);a.converters["sequence"]=a.sequenceConverter(a.converters.RequestInfo);e.exports={Cache:Cache}},3245:(e,t,A)=>{const{kConstruct:r}=A(109);const{Cache:s}=A(9634);const{webidl:n}=A(5893);const{kEnumerableProperty:i}=A(3440);class CacheStorage{#v=new Map;constructor(){if(arguments[0]!==r){n.illegalConstructor()}n.util.markAsUncloneable(this)}async match(e,t={}){n.brandCheck(this,CacheStorage);n.argumentLengthCheck(arguments,1,"CacheStorage.match");e=n.converters.RequestInfo(e);t=n.converters.MultiCacheQueryOptions(t);if(t.cacheName!=null){if(this.#v.has(t.cacheName)){const A=this.#v.get(t.cacheName);const n=new s(r,A);return await n.match(e,t)}}else{for(const A of this.#v.values()){const n=new s(r,A);const i=await n.match(e,t);if(i!==undefined){return i}}}}async has(e){n.brandCheck(this,CacheStorage);const t="CacheStorage.has";n.argumentLengthCheck(arguments,1,t);e=n.converters.DOMString(e,t,"cacheName");return this.#v.has(e)}async open(e){n.brandCheck(this,CacheStorage);const t="CacheStorage.open";n.argumentLengthCheck(arguments,1,t);e=n.converters.DOMString(e,t,"cacheName");if(this.#v.has(e)){const t=this.#v.get(e);return new s(r,t)}const A=[];this.#v.set(e,A);return new s(r,A)}async delete(e){n.brandCheck(this,CacheStorage);const t="CacheStorage.delete";n.argumentLengthCheck(arguments,1,t);e=n.converters.DOMString(e,t,"cacheName");return this.#v.delete(e)}async keys(){n.brandCheck(this,CacheStorage);const e=this.#v.keys();return[...e]}}Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:i,has:i,open:i,delete:i,keys:i});e.exports={CacheStorage:CacheStorage}},109:(e,t,A)=>{e.exports={kConstruct:A(6443).kConstruct}},6798:(e,t,A)=>{const r=A(4589);const{URLSerializer:s}=A(1900);const{isValidHeaderName:n}=A(3168);function urlEquals(e,t,A=false){const r=s(e,A);const n=s(t,A);return r===n}function getFieldValues(e){r(e!==null);const t=[];for(let A of e.split(",")){A=A.trim();if(n(A)){t.push(A)}}return t}e.exports={urlEquals:urlEquals,getFieldValues:getFieldValues}},1276:e=>{const t=1024;const A=4096;e.exports={maxAttributeValueSize:t,maxNameValuePairSize:A}},9061:(e,t,A)=>{const{parseSetCookie:r}=A(1978);const{stringify:s}=A(7797);const{webidl:n}=A(5893);const{Headers:i}=A(660);function getCookies(e){n.argumentLengthCheck(arguments,1,"getCookies");n.brandCheck(e,i,{strict:false});const t=e.get("cookie");const A={};if(!t){return A}for(const e of t.split(";")){const[t,...r]=e.split("=");A[t.trim()]=r.join("=")}return A}function deleteCookie(e,t,A){n.brandCheck(e,i,{strict:false});const r="deleteCookie";n.argumentLengthCheck(arguments,2,r);t=n.converters.DOMString(t,r,"name");A=n.converters.DeleteCookieAttributes(A);setCookie(e,{name:t,value:"",expires:new Date(0),...A})}function getSetCookies(e){n.argumentLengthCheck(arguments,1,"getSetCookies");n.brandCheck(e,i,{strict:false});const t=e.getSetCookie();if(!t){return[]}return t.map(e=>r(e))}function setCookie(e,t){n.argumentLengthCheck(arguments,2,"setCookie");n.brandCheck(e,i,{strict:false});t=n.converters.Cookie(t);const A=s(t);if(A){e.append("Set-Cookie",A)}}n.converters.DeleteCookieAttributes=n.dictionaryConverter([{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null}]);n.converters.Cookie=n.dictionaryConverter([{converter:n.converters.DOMString,key:"name"},{converter:n.converters.DOMString,key:"value"},{converter:n.nullableConverter(e=>{if(typeof e==="number"){return n.converters["unsigned long long"](e)}return new Date(e)}),key:"expires",defaultValue:()=>null},{converter:n.nullableConverter(n.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"secure",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:n.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:n.sequenceConverter(n.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);e.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},1978:(e,t,A)=>{const{maxNameValuePairSize:r,maxAttributeValueSize:s}=A(1276);const{isCTLExcludingHtab:n}=A(7797);const{collectASequenceOfCodePointsFast:i}=A(1900);const o=A(4589);function parseSetCookie(e){if(n(e)){return null}let t="";let A="";let s="";let o="";if(e.includes(";")){const r={position:0};t=i(";",e,r);A=e.slice(r.position)}else{t=e}if(!t.includes("=")){o=t}else{const e={position:0};s=i("=",t,e);o=t.slice(e.position+1)}s=s.trim();o=o.trim();if(s.length+o.length>r){return null}return{name:s,value:o,...parseUnparsedAttributes(A)}}function parseUnparsedAttributes(e,t={}){if(e.length===0){return t}o(e[0]===";");e=e.slice(1);let A="";if(e.includes(";")){A=i(";",e,{position:0});e=e.slice(A.length)}else{A=e;e=""}let r="";let n="";if(A.includes("=")){const e={position:0};r=i("=",A,e);n=A.slice(e.position+1)}else{r=A}r=r.trim();n=n.trim();if(n.length>s){return parseUnparsedAttributes(e,t)}const a=r.toLowerCase();if(a==="expires"){const e=new Date(n);t.expires=e}else if(a==="max-age"){const A=n.charCodeAt(0);if((A<48||A>57)&&n[0]!=="-"){return parseUnparsedAttributes(e,t)}if(!/^\d+$/.test(n)){return parseUnparsedAttributes(e,t)}const r=Number(n);t.maxAge=r}else if(a==="domain"){let e=n;if(e[0]==="."){e=e.slice(1)}e=e.toLowerCase();t.domain=e}else if(a==="path"){let e="";if(n.length===0||n[0]!=="/"){e="/"}else{e=n}t.path=e}else if(a==="secure"){t.secure=true}else if(a==="httponly"){t.httpOnly=true}else if(a==="samesite"){const e=n.toLowerCase();if(e==="none"){t.sameSite="None"}else if(e==="strict"){t.sameSite="Strict"}else if(e==="lax"){t.sameSite="Lax"}}else{t.unparsed??=[];t.unparsed.push(`${r}=${n}`)}return parseUnparsedAttributes(e,t)}e.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},7797:e=>{function isCTLExcludingHtab(e){for(let t=0;t=0&&A<=8||A>=10&&A<=31||A===127){return true}}return false}function validateCookieName(e){for(let t=0;t126||A===34||A===40||A===41||A===60||A===62||A===64||A===44||A===59||A===58||A===92||A===47||A===91||A===93||A===63||A===61||A===123||A===125){throw new Error("Invalid cookie name")}}}function validateCookieValue(e){let t=e.length;let A=0;if(e[0]==='"'){if(t===1||e[t-1]!=='"'){throw new Error("Invalid cookie value")}--t;++A}while(A126||t===34||t===44||t===59||t===92){throw new Error("Invalid cookie value")}}}function validateCookiePath(e){for(let t=0;t126||A===59){throw new Error("Invalid cookie path")}}}function isLetterOrDigit(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function validateCookieDomain(e){if(e===" "){return}if(e.length>255){throw new Error("Invalid cookie domain")}let t=0;for(let A=0;A63){throw new Error("Invalid cookie domain")}}if(t===0||e.charCodeAt(e.length-1)===45){throw new Error("Invalid cookie domain")}}const t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const r=Array(61).fill(0).map((e,t)=>t.toString().padStart(2,"0"));function toIMFDate(e){if(typeof e==="number"){e=new Date(e)}return`${t[e.getUTCDay()]}, ${r[e.getUTCDate()]} ${A[e.getUTCMonth()]} ${e.getUTCFullYear()} ${r[e.getUTCHours()]}:${r[e.getUTCMinutes()]}:${r[e.getUTCSeconds()]} 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,...r]=A.split("=");const s=e.trim();const n=r.join("=");validateCookieName(s);validateCookieValue(n);t.push(`${s}=${n}`)}return t.join("; ")}e.exports={isCTLExcludingHtab:isCTLExcludingHtab,validateCookieName:validateCookieName,validateCookiePath:validateCookiePath,validateCookieValue:validateCookieValue,toIMFDate:toIMFDate,stringify:stringify}},4031:(e,t,A)=>{const{Transform:r}=A(7075);const{isASCIINumber:s,isValidLastEventId:n}=A(4811);const i=[239,187,191];const o=10;const a=13;const c=58;const l=32;const h=Buffer.from("data");const g=Buffer.from("event");const u=Buffer.from("id");const E=Buffer.from("retry");function isASCIINumberBytes(e,t){if(t>=e.length){return false}for(let A=t;A57){return false}}return true}function isValidLastEventIdBytes(e,t){for(let A=t;A0){t.event=A}}}processEvent(e){if(e.retry&&s(e.retry)){this.state.reconnectionTime=parseInt(e.retry,10)}if(e.id&&n(e.id)){this.state.lastEventId=e.id}if(e.data!==undefined){this.push({type:e.event||"message",options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}}clearEvent(){this.event.data=undefined;this.event.event=undefined;this.event.id=undefined;this.event.retry=undefined}hasPendingEvent(){return this.event.data!==undefined||this.event.event!==undefined||this.event.id!==undefined||this.event.retry!==undefined}hasCurrentByte(){return this.chunkIndex=this.chunks[this.chunkIndex].length){this.chunkIndex++;this.pos=0}}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex;this.linePos=this.pos;this.dropConsumedChunks()}dropConsumedChunks(){while(this.lineChunkIndex>0){this.chunks.shift();this.lineChunkIndex--;this.chunkIndex--}if(this.chunkIndex===this.chunks.length){this.chunks.length=0;this.chunkIndex=0;this.pos=0;this.lineChunkIndex=0;this.linePos=0}}readLine(){if(this.lineChunkIndex===this.chunkIndex){return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos)}const e=[];let t=0;for(let A=this.lineChunkIndex;A<=this.chunkIndex;A++){const r=this.chunks[A];const s=A===this.lineChunkIndex?this.linePos:0;const n=A===this.chunkIndex?this.pos:r.length;const i=r.subarray(s,n);t+=i.length;e.push(i)}return Buffer.concat(e,t)}peekBufferedByte(e){let t=this.lineChunkIndex;let A=this.linePos;while(t0&&this.lineChunkIndex{const{pipeline:r}=A(7075);const{fetching:s}=A(4398);const{makeRequest:n}=A(9967);const{webidl:i}=A(5893);const{EventSourceStream:o}=A(4031);const{parseMIMEType:a}=A(1900);const{createFastMessageEvent:c}=A(5188);const{isNetworkError:l}=A(9051);const{delay:h}=A(4811);const{kEnumerableProperty:g}=A(3440);const{environmentSettingsObject:u}=A(3168);let E=false;const Q=3e3;const C=0;const B=1;const I=2;const d="anonymous";const f="use-credentials";class EventSource extends EventTarget{#H={open:null,error:null,message:null};#x=null;#G=false;#Y=C;#J=null;#_=null;#A;#w;constructor(e,t={}){super();i.util.markAsUncloneable(this);const A="EventSource constructor";i.argumentLengthCheck(arguments,1,A);if(!E){E=true;process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})}e=i.converters.USVString(e,A,"url");t=i.converters.EventSourceInitDict(t,A,"eventSourceInitDict");this.#A=t.dispatcher;this.#w={lastEventId:"",reconnectionTime:Q};const r=u;let s;try{s=new URL(e,r.settingsObject.baseUrl);this.#w.origin=s.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#x=s.href;let o=d;if(t.withCredentials){o=f;this.#G=true}const a={redirect:"follow",keepalive:true,mode:"cors",credentials:o==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};a.client=u.settingsObject;a.headersList=[["accept",{name:"accept",value:"text/event-stream"}]];a.cache="no-store";a.initiator="other";a.urlList=[new URL(this.#x)];this.#J=n(a);this.#V()}get readyState(){return this.#Y}get url(){return this.#x}get withCredentials(){return this.#G}#V(){if(this.#Y===I)return;this.#Y=C;const e={request:this.#J,dispatcher:this.#A};const processEventSourceEndOfBody=e=>{if(l(e)){this.dispatchEvent(new Event("error"));this.close()}this.#O()};e.processResponseEndOfBody=processEventSourceEndOfBody;e.processResponse=e=>{if(l(e)){if(e.aborted){this.close();this.dispatchEvent(new Event("error"));return}else{this.#O();return}}const t=e.headersList.get("content-type",true);const A=t!==null?a(t):"failure";const s=A!=="failure"&&A.essence==="text/event-stream";if(e.status!==200||s===false){this.close();this.dispatchEvent(new Event("error"));return}this.#Y=B;this.dispatchEvent(new Event("open"));this.#w.origin=e.urlList[e.urlList.length-1].origin;const n=new o({eventSourceSettings:this.#w,push:e=>{this.dispatchEvent(c(e.type,e.options))}});r(e.body.stream,n,e=>{if(e?.aborted===false){this.close();this.dispatchEvent(new Event("error"))}})};this.#_=s(e)}async#O(){if(this.#Y===I)return;this.#Y=C;this.dispatchEvent(new Event("error"));await h(this.#w.reconnectionTime);if(this.#Y!==C)return;if(this.#w.lastEventId.length){this.#J.headersList.set("last-event-id",this.#w.lastEventId,true)}this.#V()}close(){i.brandCheck(this,EventSource);if(this.#Y===I)return;this.#Y=I;this.#_.abort();this.#J=null}get onopen(){return this.#H.open}set onopen(e){if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onmessage(){return this.#H.message}set onmessage(e){if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get onerror(){return this.#H.error}set onerror(e){if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}}const p={CONNECTING:{__proto__:null,configurable:false,enumerable:true,value:C,writable:false},OPEN:{__proto__:null,configurable:false,enumerable:true,value:B,writable:false},CLOSED:{__proto__:null,configurable:false,enumerable:true,value:I,writable:false}};Object.defineProperties(EventSource,p);Object.defineProperties(EventSource.prototype,p);Object.defineProperties(EventSource.prototype,{close:g,onerror:g,onmessage:g,onopen:g,readyState:g,url:g,withCredentials:g});i.converters.EventSourceInitDict=i.dictionaryConverter([{key:"withCredentials",converter:i.converters.boolean,defaultValue:()=>false},{key:"dispatcher",converter:i.converters.any}]);e.exports={EventSource:EventSource,defaultReconnectionTime:Q}},4811:e=>{function isValidLastEventId(e){return e.indexOf("\0")===-1}function isASCIINumber(e){if(e.length===0)return false;for(let t=0;t57)return false}return true}function delay(e){return new Promise(t=>{setTimeout(t,e).unref()})}e.exports={isValidLastEventId:isValidLastEventId,isASCIINumber:isASCIINumber,delay:delay}},4492:(e,t,A)=>{const r=A(3440);const{ReadableStreamFrom:s,isBlobLike:n,isReadableStreamLike:i,readableStreamClose:o,createDeferredPromise:a,fullyReadBody:c,extractMimeType:l,utf8DecodeBytes:h}=A(3168);const{FormData:g}=A(5910);const{kState:u}=A(3627);const{webidl:E}=A(5893);const{Blob:Q}=A(4573);const C=A(4589);const{isErrored:B,isDisturbed:I}=A(7075);const{isArrayBuffer:d}=A(3429);const{serializeAMimeType:f}=A(1900);const{multipartFormDataParser:p}=A(116);let w;try{const e=A(7598);w=t=>e.randomInt(0,t)}catch{w=e=>Math.floor(Math.random(e))}const y=new TextEncoder;function noop(){}const m=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0;let R;if(m){R=new FinalizationRegistry(e=>{const t=e.deref();if(t&&!t.locked&&!I(t)&&!B(t)){t.cancel("Response object has been garbage collected").catch(noop)}})}function extractBody(e,t=false){let A=null;if(e instanceof ReadableStream){A=e}else if(n(e)){A=e.stream()}else{A=new ReadableStream({async pull(e){const t=typeof c==="string"?y.encode(c):c;if(t.byteLength){e.enqueue(t)}queueMicrotask(()=>o(e))},start(){},type:"bytes"})}C(i(A));let a=null;let c=null;let l=null;let h=null;if(typeof e==="string"){c=e;h="text/plain;charset=UTF-8"}else if(e instanceof URLSearchParams){c=e.toString();h="application/x-www-form-urlencoded;charset=UTF-8"}else if(d(e)){c=new Uint8Array(e.slice())}else if(ArrayBuffer.isView(e)){c=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength))}else if(r.isFormDataLike(e)){const t=`----formdata-undici-0${`${w(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 r=[];const s=new Uint8Array([13,10]);l=0;let n=false;for(const[t,i]of e){if(typeof i==="string"){const e=y.encode(A+`; name="${escape(normalizeLinefeeds(t))}"`+`\r\n\r\n${normalizeLinefeeds(i)}\r\n`);r.push(e);l+=e.byteLength}else{const e=y.encode(`${A}; name="${escape(normalizeLinefeeds(t))}"`+(i.name?`; filename="${escape(i.name)}"`:"")+"\r\n"+`Content-Type: ${i.type||"application/octet-stream"}\r\n\r\n`);r.push(e,i,s);if(typeof i.size==="number"){l+=e.byteLength+i.size+s.byteLength}else{n=true}}}const i=y.encode(`--${t}--\r\n`);r.push(i);l+=i.byteLength;if(n){l=null}c=e;a=async function*(){for(const e of r){if(e.stream){yield*e.stream()}else{yield e}}};h=`multipart/form-data; boundary=${t}`}else if(n(e)){c=e;l=e.size;if(e.type){h=e.type}}else if(typeof e[Symbol.asyncIterator]==="function"){if(t){throw new TypeError("keepalive")}if(r.isDisturbed(e)||e.locked){throw new TypeError("Response body object should not be disturbed or locked")}A=e instanceof ReadableStream?e:s(e)}if(typeof c==="string"||r.isBuffer(c)){l=Buffer.byteLength(c)}if(a!=null){let t;A=new ReadableStream({async start(){t=a(e)[Symbol.asyncIterator]()},async pull(e){const{value:r,done:s}=await t.next();if(s){queueMicrotask(()=>{e.close();e.byobRequest?.respond(0)})}else{if(!B(A)){const t=new Uint8Array(r);if(t.byteLength){e.enqueue(t)}}}return e.desiredSize>0},async cancel(e){await t.return()},type:"bytes"})}const g={stream:A,source:c,length:l};return[g,h]}function safelyExtractBody(e,t=false){if(e instanceof ReadableStream){C(!r.isDisturbed(e),"The body has already been consumed.");C(!e.locked,"The stream is locked.")}return extractBody(e,t)}function cloneBody(e,t){const[A,r]=t.stream.tee();t.stream=A;return{stream:r,length:t.length,source:t.source}}function throwIfAborted(e){if(e.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(e){const t={blob(){return consumeBody(this,e=>{let t=bodyMimeType(this);if(t===null){t=""}else if(t){t=f(t)}return new Q([e],{type:t})},e)},arrayBuffer(){return consumeBody(this,e=>new Uint8Array(e).buffer,e)},text(){return consumeBody(this,h,e)},json(){return consumeBody(this,parseJSONFromBytes,e)},formData(){return consumeBody(this,e=>{const t=bodyMimeType(this);if(t!==null){switch(t.essence){case"multipart/form-data":{const A=p(e,t);if(A==="failure"){throw new TypeError("Failed to parse body as FormData.")}const r=new g;r[u]=A;return r}case"application/x-www-form-urlencoded":{const t=new URLSearchParams(e.toString());const A=new g;for(const[e,r]of t){A.append(e,r)}return A}}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return consumeBody(this,e=>new Uint8Array(e),e)}};return t}function mixinBody(e){Object.assign(e.prototype,bodyMixinMethods(e))}async function consumeBody(e,t,A){E.brandCheck(e,A);if(bodyUnusable(e)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(e[u]);const r=a();const errorSteps=e=>r.reject(e);const successSteps=e=>{try{r.resolve(t(e))}catch(e){errorSteps(e)}};if(e[u].body==null){successSteps(Buffer.allocUnsafe(0));return r.promise}await c(e[u].body,successSteps,errorSteps);return r.promise}function bodyUnusable(e){const t=e[u].body;return t!=null&&(t.stream.locked||r.isDisturbed(t.stream))}function parseJSONFromBytes(e){return JSON.parse(h(e))}function bodyMimeType(e){const t=e[u].headersList;const A=l(t);if(A==="failure"){return null}return A}e.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:R,hasFinalizationRegistry:m,bodyUnusable:bodyUnusable}},4495:e=>{const t=["GET","HEAD","POST"];const A=new Set(t);const r=[101,204,205,304];const s=[301,302,303,307,308];const n=new Set(s);const i=["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","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"];const o=new Set(i);const a=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const c=new Set(a);const l=["follow","manual","error"];const h=["GET","HEAD","OPTIONS","TRACE"];const g=new Set(h);const u=["navigate","same-origin","no-cors","cors"];const E=["omit","same-origin","include"];const Q=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const C=["content-encoding","content-language","content-location","content-type","content-length"];const B=["half"];const I=["CONNECT","TRACE","TRACK"];const d=new Set(I);const f=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""];const p=new Set(f);e.exports={subresource:f,forbiddenMethods:I,requestBodyHeader:C,referrerPolicy:a,requestRedirect:l,requestMode:u,requestCredentials:E,requestCache:Q,redirectStatus:s,corsSafeListedMethods:t,nullBodyStatus:r,safeMethods:h,badPorts:i,requestDuplex:B,subresourceSet:p,badPortsSet:o,redirectStatusSet:n,corsSafeListedMethodsSet:A,safeMethodsSet:g,forbiddenMethodsSet:d,referrerPolicySet:c}},1900:(e,t,A)=>{const r=A(4589);const s=new TextEncoder;const n=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;const i=/[\u000A\u000D\u0009\u0020]/;const o=/[\u0009\u000A\u000C\u000D\u0020]/g;const a=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function dataURLProcessor(e){r(e.protocol==="data:");let t=URLSerializer(e,true);t=t.slice(5);const A={position:0};let s=collectASequenceOfCodePointsFast(",",t,A);const n=s.length;s=removeASCIIWhitespace(s,true,true);if(A.position>=t.length){return"failure"}A.position++;const i=t.slice(n+1);let o=stringPercentDecode(i);if(/;(\u0020){0,}base64$/i.test(s)){const e=isomorphicDecode(o);o=forgivingBase64(e);if(o==="failure"){return"failure"}s=s.slice(0,-6);s=s.replace(/(\u0020)+$/,"");s=s.slice(0,-1)}if(s.startsWith(";")){s="text/plain"+s}let a=parseMIMEType(s);if(a==="failure"){a=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:a,body:o}}function URLSerializer(e,t=false){if(!t){return e.href}const A=e.href;const r=e.hash.length;const s=r===0?A:A.substring(0,A.length-r);if(!r&&A.endsWith("#")){return s.slice(0,-1)}return s}function collectASequenceOfCodePoints(e,t,A){let r="";while(A.position=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function hexByteToNumber(e){return e>=48&&e<=57?e-48:(e&223)-55}function percentDecode(e){const t=e.length;const A=new Uint8Array(t);let r=0;for(let s=0;se.length){return"failure"}t.position++;let r=collectASequenceOfCodePointsFast(";",e,t);r=removeHTTPWhitespace(r,false,true);if(r.length===0||!n.test(r)){return"failure"}const s=A.toLowerCase();const o=r.toLowerCase();const c={type:s,subtype:o,parameters:new Map,essence:`${s}/${o}`};while(t.positioni.test(e),e,t);let A=collectASequenceOfCodePoints(e=>e!==";"&&e!=="=",e,t);A=A.toLowerCase();if(t.positione.length){break}let r=null;if(e[t.position]==='"'){r=collectAnHTTPQuotedString(e,t,true);collectASequenceOfCodePointsFast(";",e,t)}else{r=collectASequenceOfCodePointsFast(";",e,t);r=removeHTTPWhitespace(r,false,true);if(r.length===0){continue}}if(A.length!==0&&n.test(A)&&(r.length===0||a.test(r))&&!c.parameters.has(A)){c.parameters.set(A,r)}}return c}function forgivingBase64(e){e=e.replace(o,"");let t=e.length;if(t%4===0){if(e.charCodeAt(t-1)===61){--t;if(e.charCodeAt(t-1)===61){--t}}}if(t%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(e.length===t?e:e.substring(0,t))){return"failure"}const A=Buffer.from(e,"base64");return new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}function collectAnHTTPQuotedString(e,t,A){const s=t.position;let n="";r(e[t.position]==='"');t.position++;while(true){n+=collectASequenceOfCodePoints(e=>e!=='"'&&e!=="\\",e,t);if(t.position>=e.length){break}const A=e[t.position];t.position++;if(A==="\\"){if(t.position>=e.length){n+="\\";break}n+=e[t.position];t.position++}else{r(A==='"');break}}if(A){return n}return e.slice(s,t.position)}function serializeAMimeType(e){r(e!=="failure");const{parameters:t,essence:A}=e;let s=A;for(let[e,A]of t.entries()){s+=";";s+=e;s+="=";if(!n.test(A)){A=A.replace(/(\\|")/g,"\\$1");A='"'+A;A+='"'}s+=A}return s}function isHTTPWhiteSpace(e){return e===13||e===10||e===9||e===32}function removeHTTPWhitespace(e,t=true,A=true){return removeChars(e,t,A,isHTTPWhiteSpace)}function isASCIIWhitespace(e){return e===13||e===10||e===9||e===12||e===32}function removeASCIIWhitespace(e,t=true,A=true){return removeChars(e,t,A,isASCIIWhitespace)}function removeChars(e,t,A,r){let s=0;let n=e.length-1;if(t){while(s0&&r(e.charCodeAt(n)))n--}return s===0&&n===e.length-1?e:e.slice(s,n+1)}function isomorphicDecode(e){const t=e.length;if((2<<15)-1>t){return String.fromCharCode.apply(null,e)}let A="";let r=0;let s=(2<<15)-1;while(rt){s=t-r}A+=String.fromCharCode.apply(null,e.subarray(r,r+=s))}return A}function minimizeSupportedMimeType(e){switch(e.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}if(e.subtype.endsWith("+json")){return"application/json"}if(e.subtype.endsWith("+xml")){return"application/xml"}return""}e.exports={dataURLProcessor:dataURLProcessor,URLSerializer:URLSerializer,collectASequenceOfCodePoints:collectASequenceOfCodePoints,collectASequenceOfCodePointsFast:collectASequenceOfCodePointsFast,stringPercentDecode:stringPercentDecode,parseMIMEType:parseMIMEType,collectAnHTTPQuotedString:collectAnHTTPQuotedString,serializeAMimeType:serializeAMimeType,removeChars:removeChars,removeHTTPWhitespace:removeHTTPWhitespace,minimizeSupportedMimeType:minimizeSupportedMimeType,HTTP_TOKEN_CODEPOINTS:n,isomorphicDecode:isomorphicDecode}},6653:(e,t,A)=>{const{kConnected:r,kSize:s}=A(6443);class CompatWeakRef{constructor(e){this.value=e}deref(){return this.value[r]===0&&this.value[s]===0?undefined:this.value}}class CompatFinalizer{constructor(e){this.finalizer=e}register(e,t){if(e.on){e.on("disconnect",()=>{if(e[r]===0&&e[s]===0){this.finalizer(t)}})}}unregister(e){}}e.exports=function(){if(process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")){process._rawDebug("Using compatibility WeakRef and FinalizationRegistry");return{WeakRef:CompatWeakRef,FinalizationRegistry:CompatFinalizer}}return{WeakRef:WeakRef,FinalizationRegistry:FinalizationRegistry}}},7114:(e,t,A)=>{const{Blob:r,File:s}=A(4573);const{kState:n}=A(3627);const{webidl:i}=A(5893);class FileLike{constructor(e,t,A={}){const r=t;const s=A.type;const i=A.lastModified??Date.now();this[n]={blobLike:e,name:r,type:s,lastModified:i}}stream(...e){i.brandCheck(this,FileLike);return this[n].blobLike.stream(...e)}arrayBuffer(...e){i.brandCheck(this,FileLike);return this[n].blobLike.arrayBuffer(...e)}slice(...e){i.brandCheck(this,FileLike);return this[n].blobLike.slice(...e)}text(...e){i.brandCheck(this,FileLike);return this[n].blobLike.text(...e)}get size(){i.brandCheck(this,FileLike);return this[n].blobLike.size}get type(){i.brandCheck(this,FileLike);return this[n].blobLike.type}get name(){i.brandCheck(this,FileLike);return this[n].name}get lastModified(){i.brandCheck(this,FileLike);return this[n].lastModified}get[Symbol.toStringTag](){return"File"}}i.converters.Blob=i.interfaceConverter(r);function isFileLike(e){return e instanceof s||e&&(typeof e.stream==="function"||typeof e.arrayBuffer==="function")&&e[Symbol.toStringTag]==="File"}e.exports={FileLike:FileLike,isFileLike:isFileLike}},116:(e,t,A)=>{const{isUSVString:r,bufferToLowerCasedHeaderName:s}=A(3440);const{utf8DecodeBytes:n}=A(3168);const{HTTP_TOKEN_CODEPOINTS:i,isomorphicDecode:o}=A(1900);const{isFileLike:a}=A(7114);const{makeEntry:c}=A(5910);const l=A(4589);const{File:h}=A(4573);const g=globalThis.File??h;const u=Buffer.from('form-data; name="');const E=Buffer.from("; filename");const Q=Buffer.from("--");const C=Buffer.from("--\r\n");function isAsciiString(e){for(let t=0;t70){return false}for(let A=0;A=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===39||t===45||t===95)){return false}}return true}function multipartFormDataParser(e,t){l(t!=="failure"&&t.essence==="multipart/form-data");const A=t.parameters.get("boundary");if(A===undefined){return"failure"}const s=Buffer.from(`--${A}`,"utf8");const i=[];const o={position:0};while(e[o.position]===13&&e[o.position+1]===10){o.position+=2}let h=e.length;while(e[h-1]===10&&e[h-2]===13){h-=2}if(h!==e.length){e=e.subarray(0,h)}while(true){if(e.subarray(o.position,o.position+s.length).equals(s)){o.position+=s.length}else{return"failure"}if(o.position===e.length-2&&bufferStartsWith(e,Q,o)||o.position===e.length-4&&bufferStartsWith(e,C,o)){return i}if(e[o.position]!==13||e[o.position+1]!==10){return"failure"}o.position+=2;const t=parseMultipartFormDataHeaders(e,o);if(t==="failure"){return"failure"}let{name:A,filename:h,contentType:u,encoding:E}=t;o.position+=2;let B;{const t=e.indexOf(s.subarray(2),o.position);if(t===-1){return"failure"}B=e.subarray(o.position,t-4);o.position+=B.length;if(E==="base64"){B=Buffer.from(B.toString(),"base64")}}if(e[o.position]!==13||e[o.position+1]!==10){return"failure"}else{o.position+=2}let I;if(h!==null){u??="text/plain";if(!isAsciiString(u)){u=""}I=new g([B],h,{type:u})}else{I=n(Buffer.from(B))}l(r(A));l(typeof I==="string"&&r(I)||a(I));i.push(c(A,I,h))}}function parseMultipartFormDataHeaders(e,t){let A=null;let r=null;let n=null;let a=null;while(true){if(e[t.position]===13&&e[t.position+1]===10){if(A===null){return"failure"}return{name:A,filename:r,contentType:n,encoding:a}}let c=collectASequenceOfBytes(e=>e!==10&&e!==13&&e!==58,e,t);c=removeChars(c,true,true,e=>e===9||e===32);if(!i.test(c.toString())){return"failure"}if(e[t.position]!==58){return"failure"}t.position++;collectASequenceOfBytes(e=>e===32||e===9,e,t);switch(s(c)){case"content-disposition":{A=r=null;if(!bufferStartsWith(e,u,t)){return"failure"}t.position+=17;A=parseMultipartFormDataName(e,t);if(A===null){return"failure"}if(bufferStartsWith(e,E,t)){let A=t.position+E.length;if(e[A]===42){t.position+=1;A+=1}if(e[A]!==61||e[A+1]!==34){return"failure"}t.position+=12;r=parseMultipartFormDataName(e,t);if(r===null){return"failure"}}break}case"content-type":{let A=collectASequenceOfBytes(e=>e!==10&&e!==13,e,t);A=removeChars(A,false,true,e=>e===9||e===32);n=o(A);break}case"content-transfer-encoding":{let A=collectASequenceOfBytes(e=>e!==10&&e!==13,e,t);A=removeChars(A,false,true,e=>e===9||e===32);a=o(A);break}default:{collectASequenceOfBytes(e=>e!==10&&e!==13,e,t)}}if(e[t.position]!==13&&e[t.position+1]!==10){return"failure"}else{t.position+=2}}}function parseMultipartFormDataName(e,t){l(e[t.position-1]===34);let A=collectASequenceOfBytes(e=>e!==10&&e!==13&&e!==34,e,t);if(e[t.position]!==34){return null}else{t.position++}A=(new TextDecoder).decode(A).replace(/%0A/gi,"\n").replace(/%0D/gi,"\r").replace(/%22/g,'"');return A}function collectASequenceOfBytes(e,t,A){let r=A.position;while(r0&&r(e[n]))n--}return s===0&&n===e.length-1?e:e.subarray(s,n+1)}function bufferStartsWith(e,t,A){if(e.length{const{isBlobLike:r,iteratorMixin:s}=A(3168);const{kState:n}=A(3627);const{kEnumerableProperty:i}=A(3440);const{FileLike:o,isFileLike:a}=A(7114);const{webidl:c}=A(5893);const{File:l}=A(4573);const h=A(7975);const g=globalThis.File??l;class FormData{constructor(e){c.util.markAsUncloneable(this);if(e!==undefined){throw c.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}this[n]=[]}append(e,t,A=undefined){c.brandCheck(this,FormData);const s="FormData.append";c.argumentLengthCheck(arguments,2,s);if(arguments.length===3&&!r(t)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,s,"name");t=r(t)?c.converters.Blob(t,s,"value",{strict:false}):c.converters.USVString(t,s,"value");A=arguments.length===3?c.converters.USVString(A,s,"filename"):undefined;const i=makeEntry(e,t,A);this[n].push(i)}delete(e){c.brandCheck(this,FormData);const t="FormData.delete";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");this[n]=this[n].filter(t=>t.name!==e)}get(e){c.brandCheck(this,FormData);const t="FormData.get";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");const A=this[n].findIndex(t=>t.name===e);if(A===-1){return null}return this[n][A].value}getAll(e){c.brandCheck(this,FormData);const t="FormData.getAll";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");return this[n].filter(t=>t.name===e).map(e=>e.value)}has(e){c.brandCheck(this,FormData);const t="FormData.has";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");return this[n].findIndex(t=>t.name===e)!==-1}set(e,t,A=undefined){c.brandCheck(this,FormData);const s="FormData.set";c.argumentLengthCheck(arguments,2,s);if(arguments.length===3&&!r(t)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,s,"name");t=r(t)?c.converters.Blob(t,s,"name",{strict:false}):c.converters.USVString(t,s,"name");A=arguments.length===3?c.converters.USVString(A,s,"name"):undefined;const i=makeEntry(e,t,A);const o=this[n].findIndex(t=>t.name===e);if(o!==-1){this[n]=[...this[n].slice(0,o),i,...this[n].slice(o+1).filter(t=>t.name!==e)]}else{this[n].push(i)}}[h.inspect.custom](e,t){const A=this[n].reduce((e,t)=>{if(e[t.name]){if(Array.isArray(e[t.name])){e[t.name].push(t.value)}else{e[t.name]=[e[t.name],t.value]}}else{e[t.name]=t.value}return e},{__proto__:null});t.depth??=e;t.colors??=true;const r=h.formatWithOptions(t,A);return`FormData ${r.slice(r.indexOf("]")+2)}`}}s("FormData",FormData,n,"name","value");Object.defineProperties(FormData.prototype,{append:i,delete:i,get:i,getAll:i,has:i,set:i,[Symbol.toStringTag]:{value:"FormData",configurable:true}});function makeEntry(e,t,A){if(typeof t==="string"){}else{if(!a(t)){t=t instanceof Blob?new g([t],"blob",{type:t.type}):new o(t,"blob",{type:t.type})}if(A!==undefined){const e={type:t.type,lastModified:t.lastModified};t=t instanceof l?new g([t],A,e):new o(t,A,e)}}return{name:e,value:t}}e.exports={FormData:FormData,makeEntry:makeEntry}},1059: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}},660:(e,t,A)=>{const{kConstruct:r}=A(6443);const{kEnumerableProperty:s}=A(3440);const{iteratorMixin:n,isValidHeaderName:i,isValidHeaderValue:o}=A(3168);const{webidl:a}=A(5893);const c=A(4589);const l=A(7975);const h=Symbol("headers map");const g=Symbol("headers map sorted");function isHTTPWhiteSpaceCharCode(e){return e===10||e===13||e===9||e===32}function headerValueNormalize(e){let t=0;let A=e.length;while(A>t&&isHTTPWhiteSpaceCharCode(e.charCodeAt(A-1)))--A;while(A>t&&isHTTPWhiteSpaceCharCode(e.charCodeAt(t)))++t;return t===0&&A===e.length?e:e.substring(t,A)}function fill(e,t){if(Array.isArray(t)){for(let A=0;A>","record"]})}}function appendHeader(e,t,A){A=headerValueNormalize(A);if(!i(t)){throw a.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header name"})}else if(!o(A)){throw a.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header value"})}if(u(e)==="immutable"){throw new TypeError("immutable")}return Q(e).append(t,A,false)}function compareHeaderName(e,t){return e[0]>1);if(t[o][0]<=a[0]){i=o+1}else{n=o}}if(r!==o){s=r;while(s>i){t[s]=t[--s]}t[i]=a}}if(!A.next().done){throw new TypeError("Unreachable")}return t}else{let e=0;for(const{0:A,1:{value:r}}of this[h]){t[e++]=[A,r];c(r!==null)}return t.sort(compareHeaderName)}}}class Headers{#P;#W;constructor(e=undefined){a.util.markAsUncloneable(this);if(e===r){return}this.#W=new HeadersList;this.#P="none";if(e!==undefined){e=a.converters.HeadersInit(e,"Headers contructor","init");fill(this,e)}}append(e,t){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.append");const A="Headers.append";e=a.converters.ByteString(e,A,"name");t=a.converters.ByteString(t,A,"value");return appendHeader(this,e,t)}delete(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.delete");const t="Headers.delete";e=a.converters.ByteString(e,t,"name");if(!i(e)){throw a.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"})}if(this.#P==="immutable"){throw new TypeError("immutable")}if(!this.#W.contains(e,false)){return}this.#W.delete(e,false)}get(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.get");const t="Headers.get";e=a.converters.ByteString(e,t,"name");if(!i(e)){throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"})}return this.#W.get(e,false)}has(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.has");const t="Headers.has";e=a.converters.ByteString(e,t,"name");if(!i(e)){throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"})}return this.#W.contains(e,false)}set(e,t){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.set");const A="Headers.set";e=a.converters.ByteString(e,A,"name");t=a.converters.ByteString(t,A,"value");t=headerValueNormalize(t);if(!i(e)){throw a.errors.invalidArgument({prefix:A,value:e,type:"header name"})}else if(!o(t)){throw a.errors.invalidArgument({prefix:A,value:t,type:"header value"})}if(this.#P==="immutable"){throw new TypeError("immutable")}this.#W.set(e,t,false)}getSetCookie(){a.brandCheck(this,Headers);const e=this.#W.cookies;if(e){return[...e]}return[]}get[g](){if(this.#W[g]){return this.#W[g]}const e=[];const t=this.#W.toSortedArray();const A=this.#W.cookies;if(A===null||A.length===1){return this.#W[g]=t}for(let r=0;r>"](e,t,A,r.bind(e))}return a.converters["record"](e,t,A)}throw a.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};e.exports={fill:fill,compareHeaderName:compareHeaderName,Headers:Headers,HeadersList:HeadersList,getHeadersGuard:u,setHeadersGuard:E,setHeadersList:C,getHeadersList:Q}},4398:(e,t,A)=>{const{makeNetworkError:r,makeAppropriateNetworkError:s,filterResponse:n,makeResponse:i,fromInnerResponse:o}=A(9051);const{HeadersList:a}=A(660);const{Request:c,cloneRequest:l}=A(9967);const h=A(8522);const{bytesMatch:g,makePolicyContainer:u,clonePolicyContainer:E,requestBadPort:Q,TAOCheck:C,appendRequestOriginHeader:B,responseLocationURL:I,requestCurrentURL:d,setRequestReferrerPolicyOnRedirect:f,tryUpgradeRequestToAPotentiallyTrustworthyURL:p,createOpaqueTimingInfo:w,appendFetchMetadata:y,corsCheck:m,crossOriginResourcePolicyCheck:R,determineRequestsReferrer:D,coarsenedSharedCurrentTime:b,createDeferredPromise:k,isBlobLike:S,sameOrigin:F,isCancelled:N,isAborted:U,isErrorLike:T,fullyReadBody:M,readableStreamClose:L,isomorphicEncode:v,urlIsLocal:H,urlIsHttpHttpsScheme:x,urlHasHttpsScheme:G,clampAndCoarsenConnectionTimingInfo:Y,simpleRangeHeaderValue:J,buildContentRange:_,createInflate:V,extractMimeType:O}=A(3168);const{kState:P,kDispatcher:W}=A(3627);const q=A(4589);const{safelyExtractBody:Z,extractBody:z}=A(4492);const{redirectStatusSet:K,nullBodyStatus:X,safeMethodsSet:j,requestBodyHeader:$,subresourceSet:ee}=A(4495);const te=A(8474);const{Readable:Ae,pipeline:re,finished:se}=A(7075);const{addAbortListener:ne,isErrored:ie,isReadable:oe,bufferToLowerCasedHeaderName:ae}=A(3440);const{dataURLProcessor:ce,serializeAMimeType:le,minimizeSupportedMimeType:he}=A(1900);const{getGlobalDispatcher:ge}=A(2581);const{webidl:ue}=A(5893);const{STATUS_CODES:Ee}=A(7067);const Qe=["GET","HEAD"];const Ce=typeof __UNDICI_IS_NODE__!=="undefined"||typeof esbuildDetection!=="undefined"?"node":"undici";let Be;class Fetch extends te{constructor(e){super();this.dispatcher=e;this.connection=null;this.dump=false;this.state="ongoing"}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 DOMException("The operation was aborted.","AbortError")}this.serializedAbortReason=e;this.connection?.destroy(e);this.emit("terminated",e)}}function handleFetchDone(e){finalizeAndReportTiming(e,"fetch")}function fetch(e,t=undefined){ue.argumentLengthCheck(arguments,1,"globalThis.fetch");let A=k();let r;try{r=new c(e,t)}catch(e){A.reject(e);return A.promise}const s=r[P];if(r.signal.aborted){abortFetch(A,s,null,r.signal.reason);return A.promise}const n=s.client.globalObject;if(n?.constructor?.name==="ServiceWorkerGlobalScope"){s.serviceWorkers="none"}let i=null;let a=false;let l=null;ne(r.signal,()=>{a=true;q(l!=null);l.abort(r.signal.reason);const e=i?.deref();abortFetch(A,s,e,r.signal.reason)});const processResponse=e=>{if(a){return}if(e.aborted){abortFetch(A,s,i,l.serializedAbortReason);return}if(e.type==="error"){A.reject(new TypeError("fetch failed",{cause:e.error}));return}i=new WeakRef(o(e,"immutable"));A.resolve(i.deref());A=null};l=fetching({request:s,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:r[W]});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 r=e.timingInfo;let s=e.cacheState;if(!x(A)){return}if(r===null){return}if(!e.timingAllowPassed){r=w({startTime:r.startTime});s=""}r.endTime=b();e.timingInfo=r;Ie(r,A.href,t,globalThis,s)}const Ie=performance.markResourceTiming;function abortFetch(e,t,A,r){if(e){e.reject(r)}if(t.body!=null&&oe(t.body?.stream)){t.body.stream.cancel(r).catch(e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e})}if(A==null){return}const s=A[P];if(s.body!=null&&oe(s.body?.stream)){s.body.stream.cancel(r).catch(e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e})}}function fetching({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseEndOfBody:s,processResponseConsumeBody:n,useParallelQueue:i=false,dispatcher:o=ge()}){q(o);let a=null;let c=false;if(e.client!=null){a=e.client.globalObject;c=e.client.crossOriginIsolatedCapability}const l=b(c);const h=w({startTime:l});const g={controller:new Fetch(o),request:e,timingInfo:h,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseConsumeBody:n,processResponseEndOfBody:s,taskDestination:a,crossOriginIsolatedCapability:c};q(!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=E(e.client.policyContainer)}else{e.policyContainer=u()}}if(!e.headersList.contains("accept",true)){const t="*/*";e.headersList.append("accept",t,true)}if(!e.headersList.contains("accept-language",true)){e.headersList.append("accept-language","*",true)}if(e.priority===null){}if(ee.has(e.destination)){}mainFetch(g).catch(e=>{g.controller.terminate(e)});return g.controller}async function mainFetch(e,t=false){const A=e.request;let s=null;if(A.localURLsOnly&&!H(d(A))){s=r("local URLs only")}p(A);if(Q(A)==="blocked"){s=r("bad port")}if(A.referrerPolicy===""){A.referrerPolicy=A.policyContainer.referrerPolicy}if(A.referrer!=="no-referrer"){A.referrer=D(A)}if(s===null){s=await(async()=>{const t=d(A);if(F(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 r('request mode cannot be "same-origin"')}if(A.mode==="no-cors"){if(A.redirect!=="follow"){return r('redirect mode cannot be "follow" for "no-cors" request')}A.responseTainting="opaque";return await schemeFetch(e)}if(!x(d(A))){return r("URL scheme must be a HTTP(S) scheme")}A.responseTainting="cors";return await httpFetch(e)})()}if(t){return s}if(s.status!==0&&!s.internalResponse){if(A.responseTainting==="cors"){}if(A.responseTainting==="basic"){s=n(s,"basic")}else if(A.responseTainting==="cors"){s=n(s,"cors")}else if(A.responseTainting==="opaque"){s=n(s,"opaque")}else{q(false)}}let i=s.status===0?s:s.internalResponse;if(i.urlList.length===0){i.urlList.push(...A.urlList)}if(!A.timingAllowFailed){s.timingAllowPassed=true}if(s.type==="opaque"&&i.status===206&&i.rangeRequested&&!A.headers.contains("range",true)){s=i=r()}if(s.status!==0&&(A.method==="HEAD"||A.method==="CONNECT"||X.includes(i.status))){i.body=null;e.controller.dump=true}if(A.integrity){const processBodyError=t=>fetchFinale(e,r(t));if(A.responseTainting==="opaque"||s.body==null){processBodyError(s.error);return}const processBody=t=>{if(!g(t,A.integrity)){processBodyError("integrity mismatch");return}s.body=Z(t)[0];fetchFinale(e,s)};await M(s.body,processBody,processBodyError)}else{fetchFinale(e,s)}}function schemeFetch(e){if(N(e)&&e.request.redirectCount===0){return Promise.resolve(s(e))}const{request:t}=e;const{protocol:n}=d(t);switch(n){case"about:":{return Promise.resolve(r("about scheme is not supported"))}case"blob:":{if(!Be){Be=A(4573).resolveObjectURL}const e=d(t);if(e.search.length!==0){return Promise.resolve(r("NetworkError when attempting to fetch resource."))}const s=Be(e.toString());if(t.method!=="GET"||!S(s)){return Promise.resolve(r("invalid method"))}const n=i();const o=s.size;const a=v(`${o}`);const c=s.type;if(!t.headersList.contains("range",true)){const e=z(s);n.statusText="OK";n.body=e[0];n.headersList.set("content-length",a,true);n.headersList.set("content-type",c,true)}else{n.rangeRequested=true;const e=t.headersList.get("range",true);const A=J(e,true);if(A==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}let{rangeStartValue:i,rangeEndValue:a}=A;if(i===null){i=o-a;a=i+a-1}else{if(i>=o){return Promise.resolve(r("Range start is greater than the blob's size."))}if(a===null||a>=o){a=o-1}}const l=s.slice(i,a,c);const h=z(l);n.body=h[0];const g=v(`${l.size}`);const u=_(i,a,o);n.status=206;n.statusText="Partial Content";n.headersList.set("content-length",g,true);n.headersList.set("content-type",c,true);n.headersList.set("content-range",u,true)}return Promise.resolve(n)}case"data:":{const e=d(t);const A=ce(e);if(A==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}const s=le(A.mimeType);return Promise.resolve(i({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:Z(A.body)[0]}))}case"file:":{return Promise.resolve(r("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(e).catch(e=>r(e))}default:{return Promise.resolve(r("unknown scheme"))}}}function finalizeResponse(e,t){e.request.done=true;if(e.processResponseDone!=null){queueMicrotask(()=>e.processResponseDone(t))}}function fetchFinale(e,t){let A=e.timingInfo;const processResponseEndOfBody=()=>{const r=Date.now();if(e.request.destination==="document"){e.controller.fullTimingInfo=A}e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:"){return}A.endTime=r;let s=t.cacheState;const n=t.bodyInfo;if(!t.timingAllowPassed){A=w(A);s=""}let i=0;if(e.request.mode!=="navigator"||!t.hasCrossOriginRedirects){i=t.status;const e=O(t.headersList);if(e!=="failure"){n.contentType=he(e)}}if(e.request.initiatorType!=null){Ie(A,e.request.url.href,e.request.initiatorType,globalThis,s,n,i)}};const processResponseEndOfBodyTask=()=>{e.request.done=true;if(e.processResponseEndOfBody!=null){queueMicrotask(()=>e.processResponseEndOfBody(t))}if(e.request.initiatorType!=null){e.controller.reportTimingSteps()}};queueMicrotask(()=>processResponseEndOfBodyTask())};if(e.processResponse!=null){queueMicrotask(()=>{e.processResponse(t);e.processResponse=null})}const r=t.type==="error"?t:t.internalResponse??t;if(r.body==null){processResponseEndOfBody()}else{se(r.body.stream,()=>{processResponseEndOfBody()})}}async function httpFetch(e){const t=e.request;let A=null;let s=null;const n=e.timingInfo;if(t.serviceWorkers==="all"){}if(A===null){if(t.redirect==="follow"){t.serviceWorkers="none"}s=A=await httpNetworkOrCacheFetch(e);if(t.responseTainting==="cors"&&m(t,A)==="failure"){return r("cors failure")}if(C(t,A)==="failure"){t.timingAllowFailed=true}}if((t.responseTainting==="opaque"||A.type==="opaque")&&R(t.origin,t.client,t.destination,s)==="blocked"){return r("blocked")}if(K.has(s.status)){if(t.redirect!=="manual"){e.controller.connection.destroy(undefined,false)}if(t.redirect==="error"){A=r("unexpected redirect")}else if(t.redirect==="manual"){A=s}else if(t.redirect==="follow"){A=await httpRedirectFetch(e,A)}else{q(false)}}A.timingInfo=n;return A}function httpRedirectFetch(e,t){const A=e.request;const s=t.internalResponse?t.internalResponse:t;let n;try{n=I(s,d(A).hash);if(n==null){return t}}catch(e){return Promise.resolve(r(e))}if(!x(n)){return Promise.resolve(r("URL scheme must be a HTTP(S) scheme"))}if(A.redirectCount===20){return Promise.resolve(r("redirect count exceeded"))}A.redirectCount+=1;if(A.mode==="cors"&&(n.username||n.password)&&!F(A,n)){return Promise.resolve(r('cross origin not allowed for request mode "cors"'))}if(A.responseTainting==="cors"&&(n.username||n.password)){return Promise.resolve(r('URL cannot contain credentials for request mode "cors"'))}if(s.status!==303&&A.body!=null&&A.body.source==null){return Promise.resolve(r())}if([301,302].includes(s.status)&&A.method==="POST"||s.status===303&&!Qe.includes(A.method)){A.method="GET";A.body=null;for(const e of $){A.headersList.delete(e)}}if(!F(d(A),n)){A.headersList.delete("authorization",true);A.headersList.delete("proxy-authorization",true);A.headersList.delete("cookie",true);A.headersList.delete("host",true)}if(A.body!=null){q(A.body.source!=null);A.body=Z(A.body.source)[0]}const i=e.timingInfo;i.redirectEndTime=i.postRedirectStartTime=b(e.crossOriginIsolatedCapability);if(i.redirectStartTime===0){i.redirectStartTime=i.startTime}A.urlList.push(n);f(A,s);return mainFetch(e,true)}async function httpNetworkOrCacheFetch(e,t=false,A=false){const n=e.request;let i=null;let o=null;let a=null;const c=null;const h=false;if(n.window==="no-window"&&n.redirect==="error"){i=e;o=n}else{o=l(n);i={...e};i.request=o}const g=n.credentials==="include"||n.credentials==="same-origin"&&n.responseTainting==="basic";const u=o.body?o.body.length:null;let E=null;if(o.body==null&&["POST","PUT"].includes(o.method)){E="0"}if(u!=null){E=v(`${u}`)}if(E!=null){o.headersList.append("content-length",E,true)}if(u!=null&&o.keepalive){}if(o.referrer instanceof URL){o.headersList.append("referer",v(o.referrer.href),true)}B(o);y(o);if(!o.headersList.contains("user-agent",true)){o.headersList.append("user-agent",Ce)}if(o.cache==="default"&&(o.headersList.contains("if-modified-since",true)||o.headersList.contains("if-none-match",true)||o.headersList.contains("if-unmodified-since",true)||o.headersList.contains("if-match",true)||o.headersList.contains("if-range",true))){o.cache="no-store"}if(o.cache==="no-cache"&&!o.preventNoCacheCacheControlHeaderModification&&!o.headersList.contains("cache-control",true)){o.headersList.append("cache-control","max-age=0",true)}if(o.cache==="no-store"||o.cache==="reload"){if(!o.headersList.contains("pragma",true)){o.headersList.append("pragma","no-cache",true)}if(!o.headersList.contains("cache-control",true)){o.headersList.append("cache-control","no-cache",true)}}if(o.headersList.contains("range",true)){o.headersList.append("accept-encoding","identity",true)}if(!o.headersList.contains("accept-encoding",true)){if(G(d(o))){o.headersList.append("accept-encoding","br, gzip, deflate",true)}else{o.headersList.append("accept-encoding","gzip, deflate",true)}}o.headersList.delete("host",true);if(g){}if(c==null){o.cache="no-store"}if(o.cache!=="no-store"&&o.cache!=="reload"){}if(a==null){if(o.cache==="only-if-cached"){return r("only if cached")}const e=await httpNetworkFetch(i,g,A);if(!j.has(o.method)&&e.status>=200&&e.status<=399){}if(h&&e.status===304){}if(a==null){a=e}}a.urlList=[...o.urlList];if(o.headersList.contains("range",true)){a.rangeRequested=true}a.requestIncludesCredentials=g;if(a.status===407){if(n.window==="no-window"){return r()}if(N(e)){return s(e)}return r("proxy authentication required")}if(a.status===421&&!A&&(n.body==null||n.body.source!=null)){if(N(e)){return s(e)}e.controller.connection.destroy();a=await httpNetworkOrCacheFetch(e,t,true)}if(t){}return a}async function httpNetworkFetch(e,t=false,A=false){q(!e.controller.connection||e.controller.connection.destroyed);e.controller.connection={abort:null,destroyed:false,destroy(e,t=true){if(!this.destroyed){this.destroyed=true;if(t){this.abort?.(e??new DOMException("The operation was aborted.","AbortError"))}}}};const n=e.request;let o=null;const c=e.timingInfo;const l=null;if(l==null){n.cache="no-store"}const g=A?"yes":"no";if(n.mode==="websocket"){}else{}let u=null;if(n.body==null&&e.processRequestEndOfBody){queueMicrotask(()=>e.processRequestEndOfBody())}else if(n.body!=null){const processBodyChunk=async function*(t){if(N(e)){return}yield t;e.processRequestBodyChunkLength?.(t.byteLength)};const processEndOfBody=()=>{if(N(e)){return}if(e.processRequestEndOfBody){e.processRequestEndOfBody()}};const processBodyError=t=>{if(N(e)){return}if(t.name==="AbortError"){e.controller.abort()}else{e.controller.terminate(t)}};u=async function*(){try{for await(const e of n.body.stream){yield*processBodyChunk(e)}processEndOfBody()}catch(e){processBodyError(e)}}()}try{const{body:t,status:A,statusText:r,headersList:s,socket:n}=await dispatch({body:u});if(n){o=i({status:A,statusText:r,headersList:s,socket:n})}else{const n=t[Symbol.asyncIterator]();e.controller.next=()=>n.next();o=i({status:A,statusText:r,headersList:s})}}catch(t){if(t.name==="AbortError"){e.controller.connection.destroy();return s(e,t)}return r(t)}const pullAlgorithm=async()=>{await e.controller.resume()};const cancelAlgorithm=t=>{if(!N(e)){e.controller.abort(t)}};const E=new ReadableStream({async start(t){e.controller.controller=t},async pull(e){await pullAlgorithm(e)},async cancel(e){await cancelAlgorithm(e)},type:"bytes"});o.body={stream:E,source:null,length:null};e.controller.onAborted=onAborted;e.controller.on("terminated",onAborted);e.controller.resume=async()=>{while(true){let t;let A;try{const{done:A,value:r}=await e.controller.next();if(U(e)){break}t=A?undefined:r}catch(r){if(e.controller.ended&&!c.encodedBodySize){t=undefined}else{t=r;A=true}}if(t===undefined){L(e.controller.controller);finalizeResponse(e,o);return}c.decodedBodySize+=t?.byteLength??0;if(A){e.controller.terminate(t);return}const r=new Uint8Array(t);if(r.byteLength){e.controller.controller.enqueue(r)}if(ie(E)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0){return}}};function onAborted(t){if(U(e)){o.aborted=true;if(oe(E)){e.controller.controller.error(e.controller.serializedAbortReason)}}else{if(oe(E)){e.controller.controller.error(new TypeError("terminated",{cause:T(t)?t:undefined}))}}e.controller.connection.destroy()}return o;function dispatch({body:t}){const A=d(n);const r=e.controller.dispatcher;return new Promise((s,i)=>r.dispatch({path:A.pathname+A.search,origin:A.origin,method:n.method,body:r.isMockActive?n.body&&(n.body.source||n.body.stream):t,headers:n.headersList.entries,maxRedirections:0,upgrade:n.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(t){const{connection:A}=e.controller;c.finalConnectionTimingInfo=Y(undefined,c.postRedirectStartTime,e.crossOriginIsolatedCapability);if(A.destroyed){t(new DOMException("The operation was aborted.","AbortError"))}else{e.controller.on("terminated",t);this.abort=A.abort=t}c.finalNetworkRequestStartTime=b(e.crossOriginIsolatedCapability)},onResponseStarted(){c.finalNetworkResponseStartTime=b(e.crossOriginIsolatedCapability)},onHeaders(e,t,A,r){if(e<200){return}let o="";const c=new a;for(let e=0;eA){i(new Error(`too many content-encodings in response: ${t.length}, maximum allowed is ${A}`));return true}for(let e=t.length-1;e>=0;--e){const A=t[e].trim();if(A==="x-gzip"||A==="gzip"){l.push(h.createGunzip({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}))}else if(A==="deflate"){l.push(V({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}))}else if(A==="br"){l.push(h.createBrotliDecompress({flush:h.constants.BROTLI_OPERATION_FLUSH,finishFlush:h.constants.BROTLI_OPERATION_FLUSH}))}else{l.length=0;break}}}const u=this.onError.bind(this);s({status:e,statusText:r,headersList:c,body:l.length?re(this.body,...l,e=>{if(e){this.onError(e)}}).on("error",u):this.body.on("error",u)});return true},onData(t){if(e.controller.dump){return}const A=t;c.encodedBodySize+=A.byteLength;return this.body.push(A)},onComplete(){if(this.abort){e.controller.off("terminated",this.abort)}if(e.controller.onAborted){e.controller.off("terminated",e.controller.onAborted)}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);i(t)},onUpgrade(e,t,A){if(e!==101){return}const r=new a;for(let e=0;e{const{extractBody:r,mixinBody:s,cloneBody:n,bodyUnusable:i}=A(4492);const{Headers:o,fill:a,HeadersList:c,setHeadersGuard:l,getHeadersGuard:h,setHeadersList:g,getHeadersList:u}=A(660);const{FinalizationRegistry:E}=A(6653)();const Q=A(3440);const C=A(7975);const{isValidHTTPToken:B,sameOrigin:I,environmentSettingsObject:d}=A(3168);const{forbiddenMethodsSet:f,corsSafeListedMethodsSet:p,referrerPolicy:w,requestRedirect:y,requestMode:m,requestCredentials:R,requestCache:D,requestDuplex:b}=A(4495);const{kEnumerableProperty:k,normalizedMethodRecordsBase:S,normalizedMethodRecords:F}=Q;const{kHeaders:N,kSignal:U,kState:T,kDispatcher:M}=A(3627);const{webidl:L}=A(5893);const{URLSerializer:v}=A(1900);const{kConstruct:H}=A(6443);const x=A(4589);const{getMaxListeners:G,setMaxListeners:Y,getEventListeners:J,defaultMaxListeners:_}=A(8474);const V=Symbol("abortController");const O=new E(({signal:e,abort:t})=>{e.removeEventListener("abort",t)});const P=new WeakMap;function buildAbort(e){return abort;function abort(){const t=e.deref();if(t!==undefined){O.unregister(abort);this.removeEventListener("abort",abort);t.abort(this.reason);const e=P.get(t.signal);if(e!==undefined){if(e.size!==0){for(const t of e){const e=t.deref();if(e!==undefined){e.abort(this.reason)}}e.clear()}P.delete(t.signal)}}}}let W=false;class Request{constructor(e,t={}){L.util.markAsUncloneable(this);if(e===H){return}const A="Request constructor";L.argumentLengthCheck(arguments,1,A);e=L.converters.RequestInfo(e,A,"input");t=L.converters.RequestInit(t,A,"init");let s=null;let n=null;const h=d.settingsObject.baseUrl;let E=null;if(typeof e==="string"){this[M]=t.dispatcher;let A;try{A=new URL(e,h)}catch(t){throw new TypeError("Failed to parse URL from "+e,{cause:t})}if(A.username||A.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+e)}s=makeRequest({urlList:[A]});n="cors"}else{this[M]=t.dispatcher||e[M];x(e instanceof Request);s=e[T];E=e[U]}const C=d.settingsObject.origin;let w="client";if(s.window?.constructor?.name==="EnvironmentSettingsObject"&&I(s.window,C)){w=s.window}if(t.window!=null){throw new TypeError(`'window' option '${w}' must be null`)}if("window"in t){w="no-window"}s=makeRequest({method:s.method,headersList:s.headersList,unsafeRequest:s.unsafeRequest,client:d.settingsObject,window:w,priority:s.priority,origin:s.origin,referrer:s.referrer,referrerPolicy:s.referrerPolicy,mode:s.mode,credentials:s.credentials,cache:s.cache,redirect:s.redirect,integrity:s.integrity,keepalive:s.keepalive,reloadNavigation:s.reloadNavigation,historyNavigation:s.historyNavigation,urlList:[...s.urlList]});const y=Object.keys(t).length!==0;if(y){if(s.mode==="navigate"){s.mode="same-origin"}s.reloadNavigation=false;s.historyNavigation=false;s.origin="client";s.referrer="client";s.referrerPolicy="";s.url=s.urlList[s.urlList.length-1];s.urlList=[s.url]}if(t.referrer!==undefined){const e=t.referrer;if(e===""){s.referrer="no-referrer"}else{let t;try{t=new URL(e,h)}catch(t){throw new TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}if(t.protocol==="about:"&&t.hostname==="client"||C&&!I(t,d.settingsObject.baseUrl)){s.referrer="client"}else{s.referrer=t}}}if(t.referrerPolicy!==undefined){s.referrerPolicy=t.referrerPolicy}let m;if(t.mode!==undefined){m=t.mode}else{m=n}if(m==="navigate"){throw L.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(m!=null){s.mode=m}if(t.credentials!==undefined){s.credentials=t.credentials}if(t.cache!==undefined){s.cache=t.cache}if(s.cache==="only-if-cached"&&s.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(t.redirect!==undefined){s.redirect=t.redirect}if(t.integrity!=null){s.integrity=String(t.integrity)}if(t.keepalive!==undefined){s.keepalive=Boolean(t.keepalive)}if(t.method!==undefined){let e=t.method;const A=F[e];if(A!==undefined){s.method=A}else{if(!B(e)){throw new TypeError(`'${e}' is not a valid HTTP method.`)}const t=e.toUpperCase();if(f.has(t)){throw new TypeError(`'${e}' HTTP method is unsupported.`)}e=S[t]??e;s.method=e}if(!W&&s.method==="patch"){process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"});W=true}}if(t.signal!==undefined){E=t.signal}this[T]=s;const R=new AbortController;this[U]=R.signal;if(E!=null){if(!E||typeof E.aborted!=="boolean"||typeof E.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(E.aborted){R.abort(E.reason)}else{this[V]=R;const e=new WeakRef(R);const t=buildAbort(e);try{if(typeof G==="function"&&G(E)===_){Y(1500,E)}else if(J(E,"abort").length>=_){Y(1500,E)}}catch{}Q.addAbortListener(E,t);O.register(R,{signal:E,abort:t},t)}}this[N]=new o(H);g(this[N],s.headersList);l(this[N],"request");if(m==="no-cors"){if(!p.has(s.method)){throw new TypeError(`'${s.method} is unsupported in no-cors mode.`)}l(this[N],"request-no-cors")}if(y){const e=u(this[N]);const A=t.headers!==undefined?t.headers:new c(e);e.clear();if(A instanceof c){for(const{name:t,value:r}of A.rawValues()){e.append(t,r,false)}e.cookies=A.cookies}else{a(this[N],A)}}const D=e instanceof Request?e[T].body:null;if((t.body!=null||D!=null)&&(s.method==="GET"||s.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let b=null;if(t.body!=null){const[e,A]=r(t.body,s.keepalive);b=e;if(A&&!u(this[N]).contains("content-type",true)){this[N].append("content-type",A)}}const k=b??D;if(k!=null&&k.source==null){if(b!=null&&t.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(s.mode!=="same-origin"&&s.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}s.useCORSPreflightFlag=true}let v=k;if(b==null&&D!=null){if(i(e)){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}const t=new TransformStream;D.stream.pipeThrough(t);v={source:D.source,length:D.length,stream:t.readable}}this[T].body=v}get method(){L.brandCheck(this,Request);return this[T].method}get url(){L.brandCheck(this,Request);return v(this[T].url)}get headers(){L.brandCheck(this,Request);return this[N]}get destination(){L.brandCheck(this,Request);return this[T].destination}get referrer(){L.brandCheck(this,Request);if(this[T].referrer==="no-referrer"){return""}if(this[T].referrer==="client"){return"about:client"}return this[T].referrer.toString()}get referrerPolicy(){L.brandCheck(this,Request);return this[T].referrerPolicy}get mode(){L.brandCheck(this,Request);return this[T].mode}get credentials(){return this[T].credentials}get cache(){L.brandCheck(this,Request);return this[T].cache}get redirect(){L.brandCheck(this,Request);return this[T].redirect}get integrity(){L.brandCheck(this,Request);return this[T].integrity}get keepalive(){L.brandCheck(this,Request);return this[T].keepalive}get isReloadNavigation(){L.brandCheck(this,Request);return this[T].reloadNavigation}get isHistoryNavigation(){L.brandCheck(this,Request);return this[T].historyNavigation}get signal(){L.brandCheck(this,Request);return this[U]}get body(){L.brandCheck(this,Request);return this[T].body?this[T].body.stream:null}get bodyUsed(){L.brandCheck(this,Request);return!!this[T].body&&Q.isDisturbed(this[T].body.stream)}get duplex(){L.brandCheck(this,Request);return"half"}clone(){L.brandCheck(this,Request);if(i(this)){throw new TypeError("unusable")}const e=cloneRequest(this[T]);const t=new AbortController;if(this.signal.aborted){t.abort(this.signal.reason)}else{let e=P.get(this.signal);if(e===undefined){e=new Set;P.set(this.signal,e)}const A=new WeakRef(t);e.add(A);Q.addAbortListener(t.signal,buildAbort(A))}return fromInnerRequest(e,t.signal,h(this[N]))}[C.inspect.custom](e,t){if(t.depth===null){t.depth=2}t.colors??=true;const A={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${C.formatWithOptions(t,A)}`}}s(Request);function makeRequest(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??false,unsafeRequest:e.unsafeRequest??false,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??false,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??false,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??false,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??false,historyNavigation:e.historyNavigation??false,userActivation:e.userActivation??false,taintedOrigin:e.taintedOrigin??false,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??false,done:e.done??false,timingAllowFailed:e.timingAllowFailed??false,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new c(e.headersList):new c}}function cloneRequest(e){const t=makeRequest({...e,body:null});if(e.body!=null){t.body=n(t,e.body)}return t}function fromInnerRequest(e,t,A){const r=new Request(H);r[T]=e;r[U]=t;r[N]=new o(H);g(r[N],e.headersList);l(r[N],A);return r}Object.defineProperties(Request.prototype,{method:k,url:k,headers:k,redirect:k,clone:k,signal:k,duplex:k,destination:k,body:k,bodyUsed:k,isHistoryNavigation:k,isReloadNavigation:k,keepalive:k,integrity:k,cache:k,credentials:k,attribute:k,referrerPolicy:k,referrer:k,mode:k,[Symbol.toStringTag]:{value:"Request",configurable:true}});L.converters.Request=L.interfaceConverter(Request);L.converters.RequestInfo=function(e,t,A){if(typeof e==="string"){return L.converters.USVString(e,t,A)}if(e instanceof Request){return L.converters.Request(e,t,A)}return L.converters.USVString(e,t,A)};L.converters.AbortSignal=L.interfaceConverter(AbortSignal);L.converters.RequestInit=L.dictionaryConverter([{key:"method",converter:L.converters.ByteString},{key:"headers",converter:L.converters.HeadersInit},{key:"body",converter:L.nullableConverter(L.converters.BodyInit)},{key:"referrer",converter:L.converters.USVString},{key:"referrerPolicy",converter:L.converters.DOMString,allowedValues:w},{key:"mode",converter:L.converters.DOMString,allowedValues:m},{key:"credentials",converter:L.converters.DOMString,allowedValues:R},{key:"cache",converter:L.converters.DOMString,allowedValues:D},{key:"redirect",converter:L.converters.DOMString,allowedValues:y},{key:"integrity",converter:L.converters.DOMString},{key:"keepalive",converter:L.converters.boolean},{key:"signal",converter:L.nullableConverter(e=>L.converters.AbortSignal(e,"RequestInit","signal",{strict:false}))},{key:"window",converter:L.converters.any},{key:"duplex",converter:L.converters.DOMString,allowedValues:b},{key:"dispatcher",converter:L.converters.any}]);e.exports={Request:Request,makeRequest:makeRequest,fromInnerRequest:fromInnerRequest,cloneRequest:cloneRequest}},9051:(e,t,A)=>{const{Headers:r,HeadersList:s,fill:n,getHeadersGuard:i,setHeadersGuard:o,setHeadersList:a}=A(660);const{extractBody:c,cloneBody:l,mixinBody:h,hasFinalizationRegistry:g,streamRegistry:u,bodyUnusable:E}=A(4492);const Q=A(3440);const C=A(7975);const{kEnumerableProperty:B}=Q;const{isValidReasonPhrase:I,isCancelled:d,isAborted:f,isBlobLike:p,serializeJavascriptValueToJSONString:w,isErrorLike:y,isomorphicEncode:m,environmentSettingsObject:R}=A(3168);const{redirectStatusSet:D,nullBodyStatus:b}=A(4495);const{kState:k,kHeaders:S}=A(3627);const{webidl:F}=A(5893);const{FormData:N}=A(5910);const{URLSerializer:U}=A(1900);const{kConstruct:T}=A(6443);const M=A(4589);const{types:L}=A(7975);const v=new TextEncoder("utf-8");class Response{static error(){const e=fromInnerResponse(makeNetworkError(),"immutable");return e}static json(e,t={}){F.argumentLengthCheck(arguments,1,"Response.json");if(t!==null){t=F.converters.ResponseInit(t)}const A=v.encode(w(e));const r=c(A);const s=fromInnerResponse(makeResponse({}),"response");initializeResponse(s,t,{body:r[0],type:"application/json"});return s}static redirect(e,t=302){F.argumentLengthCheck(arguments,1,"Response.redirect");e=F.converters.USVString(e);t=F.converters["unsigned short"](t);let A;try{A=new URL(e,R.settingsObject.baseUrl)}catch(t){throw new TypeError(`Failed to parse URL from ${e}`,{cause:t})}if(!D.has(t)){throw new RangeError(`Invalid status code ${t}`)}const r=fromInnerResponse(makeResponse({}),"immutable");r[k].status=t;const s=m(U(A));r[k].headersList.append("location",s,true);return r}constructor(e=null,t={}){F.util.markAsUncloneable(this);if(e===T){return}if(e!==null){e=F.converters.BodyInit(e)}t=F.converters.ResponseInit(t);this[k]=makeResponse({});this[S]=new r(T);o(this[S],"response");a(this[S],this[k].headersList);let A=null;if(e!=null){const[t,r]=c(e);A={body:t,type:r}}initializeResponse(this,t,A)}get type(){F.brandCheck(this,Response);return this[k].type}get url(){F.brandCheck(this,Response);const e=this[k].urlList;const t=e[e.length-1]??null;if(t===null){return""}return U(t,true)}get redirected(){F.brandCheck(this,Response);return this[k].urlList.length>1}get status(){F.brandCheck(this,Response);return this[k].status}get ok(){F.brandCheck(this,Response);return this[k].status>=200&&this[k].status<=299}get statusText(){F.brandCheck(this,Response);return this[k].statusText}get headers(){F.brandCheck(this,Response);return this[S]}get body(){F.brandCheck(this,Response);return this[k].body?this[k].body.stream:null}get bodyUsed(){F.brandCheck(this,Response);return!!this[k].body&&Q.isDisturbed(this[k].body.stream)}clone(){F.brandCheck(this,Response);if(E(this)){throw F.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const e=cloneResponse(this[k]);if(g&&this[k].body?.stream){u.register(this,new WeakRef(this[k].body.stream))}return fromInnerResponse(e,i(this[S]))}[C.inspect.custom](e,t){if(t.depth===null){t.depth=2}t.colors??=true;const A={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${C.formatWithOptions(t,A)}`}}h(Response);Object.defineProperties(Response.prototype,{type:B,url:B,status:B,ok:B,redirected:B,statusText:B,headers:B,clone:B,body:B,bodyUsed:B,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:B,redirect:B,error:B});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=l(t,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 s(e?.headersList):new s,urlList:e?.urlList?[...e.urlList]:[]}}function makeNetworkError(e){const t=y(e);return makeResponse({type:"error",status:0,error:t?e:new Error(e?String(e):e),aborted:e&&e.name==="AbortError"})}function isNetworkError(e){return e.type==="error"&&e.status===0}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,r){M(!(A in t));e[A]=r;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{M(false)}}function makeAppropriateNetworkError(e,t=null){M(d(e));return f(e)?makeNetworkError(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:t})):makeNetworkError(Object.assign(new DOMException("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(!I(String(t.statusText))){throw new TypeError("Invalid statusText")}}if("status"in t&&t.status!=null){e[k].status=t.status}if("statusText"in t&&t.statusText!=null){e[k].statusText=t.statusText}if("headers"in t&&t.headers!=null){n(e[S],t.headers)}if(A){if(b.includes(e.status)){throw F.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`})}e[k].body=A.body;if(A.type!=null&&!e[k].headersList.contains("content-type",true)){e[k].headersList.append("content-type",A.type,true)}}}function fromInnerResponse(e,t){const A=new Response(T);A[k]=e;A[S]=new r(T);a(A[S],e.headersList);o(A[S],t);if(g&&e.body?.stream){u.register(A,new WeakRef(e.body.stream))}return A}F.converters.ReadableStream=F.interfaceConverter(ReadableStream);F.converters.FormData=F.interfaceConverter(N);F.converters.URLSearchParams=F.interfaceConverter(URLSearchParams);F.converters.XMLHttpRequestBodyInit=function(e,t,A){if(typeof e==="string"){return F.converters.USVString(e,t,A)}if(p(e)){return F.converters.Blob(e,t,A,{strict:false})}if(ArrayBuffer.isView(e)||L.isArrayBuffer(e)){return F.converters.BufferSource(e,t,A)}if(Q.isFormDataLike(e)){return F.converters.FormData(e,t,A,{strict:false})}if(e instanceof URLSearchParams){return F.converters.URLSearchParams(e,t,A)}return F.converters.DOMString(e,t,A)};F.converters.BodyInit=function(e,t,A){if(e instanceof ReadableStream){return F.converters.ReadableStream(e,t,A)}if(e?.[Symbol.asyncIterator]){return e}return F.converters.XMLHttpRequestBodyInit(e,t,A)};F.converters.ResponseInit=F.dictionaryConverter([{key:"status",converter:F.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:F.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:F.converters.HeadersInit}]);e.exports={isNetworkError:isNetworkError,makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse,fromInnerResponse:fromInnerResponse}},3627:e=>{e.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}},3168:(e,t,A)=>{const{Transform:r}=A(7075);const s=A(8522);const{redirectStatusSet:n,referrerPolicySet:i,badPortsSet:o}=A(4495);const{getGlobalOrigin:a}=A(1059);const{collectASequenceOfCodePoints:c,collectAnHTTPQuotedString:l,removeChars:h,parseMIMEType:g}=A(1900);const{performance:u}=A(643);const{isBlobLike:E,ReadableStreamFrom:Q,isValidHTTPToken:C,normalizedMethodRecordsBase:B}=A(3440);const I=A(4589);const{isUint8Array:d}=A(3429);const{webidl:f}=A(5893);let p=[];let w;try{w=A(7598);const e=["sha256","sha384","sha512"];p=w.getHashes().filter(t=>e.includes(t))}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(!n.has(e.status)){return null}let A=e.headersList.get("location",true);if(A!==null&&isValidHeaderValue(A)){if(!isValidEncodedURL(A)){A=normalizeBinaryStringToUtf8(A)}A=new URL(A,responseURL(e))}if(A&&!A.hash){A.hash=t}return A}function isValidEncodedURL(e){for(let t=0;t126||A<32){return false}}return true}function normalizeBinaryStringToUtf8(e){return Buffer.from(e,"binary").toString("utf8")}function requestCurrentURL(e){return e.urlList[e.urlList.length-1]}function requestBadPort(e){const t=requestCurrentURL(e);if(urlIsHttpHttpsScheme(t)&&o.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}const y=C;function isValidHeaderValue(e){return(e[0]==="\t"||e[0]===" "||e[e.length-1]==="\t"||e[e.length-1]===" "||e.includes("\n")||e.includes("\r")||e.includes("\0"))===false}function setRequestReferrerPolicyOnRedirect(e,t){const{headersList:A}=t;const r=(A.get("referrer-policy",true)??"").split(",");let s="";if(r.length>0){for(let e=r.length;e!==0;e--){const t=r[e-1].trim();if(i.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,true)}function appendRequestOriginHeader(e){let t=e.origin;if(t==="client"||t===undefined){return}if(e.responseTainting==="cors"||e.mode==="websocket"){e.headersList.append("origin",t,true)}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:}e.headersList.append("origin",t,true)}}function coarsenTime(e,t){return e}function clampAndCoarsenConnectionTimingInfo(e,t,A){if(!e?.startTime||e.startTime4096){r=s}const n=sameOrigin(e,r);const i=isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(e.url);switch(t){case"origin":return s!=null?s:stripURLForReferrer(A,true);case"unsafe-url":return r;case"same-origin":return n?s:"no-referrer";case"origin-when-cross-origin":return n?r:s;case"strict-origin-when-cross-origin":{const t=requestCurrentURL(e);if(sameOrigin(r,t)){return r}if(isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(t)){return"no-referrer"}return s}case"strict-origin":case"no-referrer-when-downgrade":default:return i?"no-referrer":s}}function stripURLForReferrer(e,t){I(e instanceof URL);e=new URL(e);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(w===undefined){return true}const A=parseMetadata(t);if(A==="no metadata"){return true}if(A.length===0){return true}const r=getStrongestMetadata(A);const s=filterMetadataListByAlgorithm(A,r);for(const t of s){const A=t.algo;const r=t.hash;let s=w.createHash(A).update(e).digest("base64");if(s[s.length-1]==="="){if(s[s.length-2]==="="){s=s.slice(0,-2)}else{s=s.slice(0,-1)}}if(compareBase64Mixed(s,r)){return true}}return false}const m=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function parseMetadata(e){const t=[];let A=true;for(const r of e.split(" ")){A=false;const e=m.exec(r);if(e===null||e.groups===undefined||e.groups.algo===undefined){continue}const s=e.groups.algo.toLowerCase();if(p.includes(s)){t.push(e.groups)}}if(A===true){return"no metadata"}return t}function getStrongestMetadata(e){let t=e[0].algo;if(t[3]==="5"){return t}for(let A=1;A{e=A;t=r});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 B[e.toLowerCase()]??e}function serializeJavascriptValueToJSONString(e){const t=JSON.stringify(e);if(t===undefined){throw new TypeError("Value is not JSON serializable")}I(typeof t==="string");return t}const R=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function createIterator(e,t,A=0,r=1){class FastIterableIterator{#q;#Z;#z;constructor(e,t){this.#q=e;this.#Z=t;this.#z=0}next(){if(typeof this!=="object"||this===null||!(#q in this)){throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`)}const s=this.#z;const n=this.#q[t];const i=n.length;if(s>=i){return{value:undefined,done:true}}const{[A]:o,[r]:a}=n[s];this.#z=s+1;let c;switch(this.#Z){case"key":c=o;break;case"value":c=a;break;case"key+value":c=[o,a];break}return{value:c,done:false}}}delete FastIterableIterator.prototype.constructor;Object.setPrototypeOf(FastIterableIterator.prototype,R);Object.defineProperties(FastIterableIterator.prototype,{[Symbol.toStringTag]:{writable:false,enumerable:false,configurable:true,value:`${e} Iterator`},next:{writable:true,enumerable:true,configurable:true}});return function(e,t){return new FastIterableIterator(e,t)}}function iteratorMixin(e,t,A,r=0,s=1){const n=createIterator(e,A,r,s);const i={keys:{writable:true,enumerable:true,configurable:true,value:function keys(){f.brandCheck(this,t);return n(this,"key")}},values:{writable:true,enumerable:true,configurable:true,value:function values(){f.brandCheck(this,t);return n(this,"value")}},entries:{writable:true,enumerable:true,configurable:true,value:function entries(){f.brandCheck(this,t);return n(this,"key+value")}},forEach:{writable:true,enumerable:true,configurable:true,value:function forEach(A,r=globalThis){f.brandCheck(this,t);f.argumentLengthCheck(arguments,1,`${e}.forEach`);if(typeof A!=="function"){throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`)}for(const{0:e,1:t}of n(this,"key+value")){A.call(r,t,e,this)}}}};return Object.defineProperties(t.prototype,{...i,[Symbol.iterator]:{writable:true,enumerable:false,configurable:true,value:i.entries.value}})}async function fullyReadBody(e,t,A){const r=t;const s=A;let n;try{n=e.stream.getReader()}catch(e){s(e);return}try{r(await readAllBytes(n))}catch(e){s(e)}}function isReadableStreamLike(e){return e instanceof ReadableStream||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee==="function"}function readableStreamClose(e){try{e.close();e.byobRequest?.respond(0)}catch(e){if(!e.message.includes("Controller is already closed")&&!e.message.includes("ReadableStream is already closed")){throw e}}}const D=/[^\x00-\xFF]/;function isomorphicEncode(e){I(!D.test(e));return e}async function readAllBytes(e){const t=[];let A=0;while(true){const{done:r,value:s}=await e.read();if(r){return Buffer.concat(t,A)}if(!d(s)){throw new TypeError("Received non-Uint8Array chunk")}t.push(s);A+=s.length}}function urlIsLocal(e){I("protocol"in e);const t=e.protocol;return t==="about:"||t==="blob:"||t==="data:"}function urlHasHttpsScheme(e){return typeof e==="string"&&e[5]===":"&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&e[4]==="s"||e.protocol==="https:"}function urlIsHttpHttpsScheme(e){I("protocol"in e);const t=e.protocol;return t==="http:"||t==="https:"}function simpleRangeHeaderValue(e,t){const A=e;if(!A.startsWith("bytes")){return"failure"}const r={position:5};if(t){c(e=>e==="\t"||e===" ",A,r)}if(A.charCodeAt(r.position)!==61){return"failure"}r.position++;if(t){c(e=>e==="\t"||e===" ",A,r)}const s=c(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57},A,r);const n=s.length?Number(s):null;if(t){c(e=>e==="\t"||e===" ",A,r)}if(A.charCodeAt(r.position)!==45){return"failure"}r.position++;if(t){c(e=>e==="\t"||e===" ",A,r)}const i=c(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57},A,r);const o=i.length?Number(i):null;if(r.positiono){return"failure"}return{rangeStartValue:n,rangeEndValue:o}}function buildContentRange(e,t,A){let r="bytes ";r+=isomorphicEncode(`${e}`);r+="-";r+=isomorphicEncode(`${t}`);r+="/";r+=isomorphicEncode(`${A}`);return r}class InflateStream extends r{#K;constructor(e){super();this.#K=e}_transform(e,t,A){if(!this._inflateStream){if(e.length===0){A();return}this._inflateStream=(e[0]&15)===8?s.createInflate(this.#K):s.createInflateRaw(this.#K);this._inflateStream.on("data",this.push.bind(this));this._inflateStream.on("end",()=>this.push(null));this._inflateStream.on("error",e=>this.destroy(e))}this._inflateStream.write(e,t,A)}_final(e){if(this._inflateStream){this._inflateStream.end();this._inflateStream=null}e()}}function createInflate(e){return new InflateStream(e)}function extractMimeType(e){let t=null;let A=null;let r=null;const s=getDecodeSplit("content-type",e);if(s===null){return"failure"}for(const e of s){const s=g(e);if(s==="failure"||s.essence==="*/*"){continue}r=s;if(r.essence!==A){t=null;if(r.parameters.has("charset")){t=r.parameters.get("charset")}A=r.essence}else if(!r.parameters.has("charset")&&t!==null){r.parameters.set("charset",t)}}if(r==null){return"failure"}return r}function gettingDecodingSplitting(e){const t=e;const A={position:0};const r=[];let s="";while(A.positione!=='"'&&e!==",",t,A);if(A.positione===9||e===32);r.push(s);s=""}return r}function getDecodeSplit(e,t){const A=t.get(e,true);if(A===null){return null}return gettingDecodingSplitting(A)}const b=new TextDecoder;function utf8DecodeBytes(e){if(e.length===0){return""}if(e[0]===239&&e[1]===187&&e[2]===191){e=e.subarray(3)}const t=b.decode(e);return t}class EnvironmentSettingsObjectBase{get baseUrl(){return a()}get origin(){return this.baseUrl?.origin}policyContainer=makePolicyContainer()}class EnvironmentSettingsObject{settingsObject=new EnvironmentSettingsObjectBase}const k=new EnvironmentSettingsObject;e.exports={isAborted:isAborted,isCancelled:isCancelled,isValidEncodedURL:isValidEncodedURL,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:Q,tryUpgradeRequestToAPotentiallyTrustworthyURL:tryUpgradeRequestToAPotentiallyTrustworthyURL,clampAndCoarsenConnectionTimingInfo:clampAndCoarsenConnectionTimingInfo,coarsenedSharedCurrentTime:coarsenedSharedCurrentTime,determineRequestsReferrer:determineRequestsReferrer,makePolicyContainer:makePolicyContainer,clonePolicyContainer:clonePolicyContainer,appendFetchMetadata:appendFetchMetadata,appendRequestOriginHeader:appendRequestOriginHeader,TAOCheck:TAOCheck,corsCheck:corsCheck,crossOriginResourcePolicyCheck:crossOriginResourcePolicyCheck,createOpaqueTimingInfo:createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect:setRequestReferrerPolicyOnRedirect,isValidHTTPToken:C,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:E,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,iteratorMixin:iteratorMixin,createIterator:createIterator,isValidHeaderName:y,isValidHeaderValue:isValidHeaderValue,isErrorLike:isErrorLike,fullyReadBody:fullyReadBody,bytesMatch:bytesMatch,isReadableStreamLike:isReadableStreamLike,readableStreamClose:readableStreamClose,isomorphicEncode:isomorphicEncode,urlIsLocal:urlIsLocal,urlHasHttpsScheme:urlHasHttpsScheme,urlIsHttpHttpsScheme:urlIsHttpHttpsScheme,readAllBytes:readAllBytes,simpleRangeHeaderValue:simpleRangeHeaderValue,buildContentRange:buildContentRange,parseMetadata:parseMetadata,createInflate:createInflate,extractMimeType:extractMimeType,getDecodeSplit:getDecodeSplit,utf8DecodeBytes:utf8DecodeBytes,environmentSettingsObject:k}},5893:(e,t,A)=>{const{types:r,inspect:s}=A(7975);const{markAsUncloneable:n}=A(5919);const{toUSVString:i}=A(3440);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){if(A?.strict!==false){if(!(e instanceof t)){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}else{if(e?.[Symbol.toStringTag]!==t.prototype[Symbol.toStringTag]){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}};o.argumentLengthCheck=function({length:e},t,A){if(e{});o.util.ConvertToInt=function(e,t,A,r){let s;let n;if(t===64){s=Math.pow(2,53)-1;if(A==="unsigned"){n=0}else{n=Math.pow(-2,53)+1}}else if(A==="unsigned"){n=0;s=Math.pow(2,t)-1}else{n=Math.pow(-2,t)-1;s=Math.pow(2,t-1)-1}let i=Number(e);if(i===0){i=0}if(r?.enforceRange===true){if(Number.isNaN(i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY){throw o.errors.exception({header:"Integer conversion",message:`Could not convert ${o.util.Stringify(e)} to an integer.`})}i=o.util.IntegerPart(i);if(is){throw o.errors.exception({header:"Integer conversion",message:`Value must be between ${n}-${s}, got ${i}.`})}return i}if(!Number.isNaN(i)&&r?.clamp===true){i=Math.min(Math.max(i,n),s);if(Math.floor(i)%2===0){i=Math.floor(i)}else{i=Math.ceil(i)}return i}if(Number.isNaN(i)||i===0&&Object.is(0,i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY){return 0}i=o.util.IntegerPart(i);i=i%Math.pow(2,t);if(A==="signed"&&i>=Math.pow(2,t)-1){return i-Math.pow(2,t)}return i};o.util.IntegerPart=function(e){const t=Math.floor(Math.abs(e));if(e<0){return-1*t}return t};o.util.Stringify=function(e){const t=o.util.Type(e);switch(t){case"Symbol":return`Symbol(${e.description})`;case"Object":return s(e);case"String":return`"${e}"`;default:return`${e}`}};o.sequenceConverter=function(e){return(t,A,r,s)=>{if(o.util.Type(t)!=="Object"){throw o.errors.exception({header:A,message:`${r} (${o.util.Stringify(t)}) is not iterable.`})}const n=typeof s==="function"?s():t?.[Symbol.iterator]?.();const i=[];let a=0;if(n===undefined||typeof n.next!=="function"){throw o.errors.exception({header:A,message:`${r} is not iterable.`})}while(true){const{done:t,value:s}=n.next();if(t){break}i.push(e(s,A,`${r}[${a++}]`))}return i}};o.recordConverter=function(e,t){return(A,s,n)=>{if(o.util.Type(A)!=="Object"){throw o.errors.exception({header:s,message:`${n} ("${o.util.Type(A)}") is not an Object.`})}const i={};if(!r.isProxy(A)){const r=[...Object.getOwnPropertyNames(A),...Object.getOwnPropertySymbols(A)];for(const o of r){const r=e(o,s,n);const a=t(A[o],s,n);i[r]=a}return i}const a=Reflect.ownKeys(A);for(const r of a){const o=Reflect.getOwnPropertyDescriptor(A,r);if(o?.enumerable){const o=e(r,s,n);const a=t(A[r],s,n);i[o]=a}}return i}};o.interfaceConverter=function(e){return(t,A,r,s)=>{if(s?.strict!==false&&!(t instanceof e)){throw o.errors.exception({header:A,message:`Expected ${r} ("${o.util.Stringify(t)}") to be an instance of ${e.name}.`})}return t}};o.dictionaryConverter=function(e){return(t,A,r)=>{const s=o.util.Type(t);const n={};if(s==="Null"||s==="Undefined"){return n}else if(s!=="Object"){throw o.errors.exception({header:A,message:`Expected ${t} to be one of: Null, Undefined, Object.`})}for(const s of e){const{key:e,defaultValue:i,required:a,converter:c}=s;if(a===true){if(!Object.hasOwn(t,e)){throw o.errors.exception({header:A,message:`Missing required key "${e}".`})}}let l=t[e];const h=Object.hasOwn(s,"defaultValue");if(h&&l!==null){l??=i()}if(a||h||l!==undefined){l=c(l,A,`${r}.${e}`);if(s.allowedValues&&!s.allowedValues.includes(l)){throw o.errors.exception({header:A,message:`${l} is not an accepted type. Expected one of ${s.allowedValues.join(", ")}.`})}n[e]=l}}return n}};o.nullableConverter=function(e){return(t,A,r)=>{if(t===null){return t}return e(t,A,r)}};o.converters.DOMString=function(e,t,A,r){if(e===null&&r?.legacyNullToEmptyString){return""}if(typeof e==="symbol"){throw o.errors.exception({header:t,message:`${A} is a symbol, which cannot be converted to a DOMString.`})}return String(e)};o.converters.ByteString=function(e,t,A){const r=o.converters.DOMString(e,t,A);for(let e=0;e255){throw new TypeError("Cannot convert argument to a ByteString because the character at "+`index ${e} has a value of ${r.charCodeAt(e)} which is greater than 255.`)}}return r};o.converters.USVString=i;o.converters.boolean=function(e){const t=Boolean(e);return t};o.converters.any=function(e){return e};o.converters["long long"]=function(e,t,A){const r=o.util.ConvertToInt(e,64,"signed",undefined,t,A);return r};o.converters["unsigned long long"]=function(e,t,A){const r=o.util.ConvertToInt(e,64,"unsigned",undefined,t,A);return r};o.converters["unsigned long"]=function(e,t,A){const r=o.util.ConvertToInt(e,32,"unsigned",undefined,t,A);return r};o.converters["unsigned short"]=function(e,t,A,r){const s=o.util.ConvertToInt(e,16,"unsigned",r,t,A);return s};o.converters.ArrayBuffer=function(e,t,A,s){if(o.util.Type(e)!=="Object"||!r.isAnyArrayBuffer(e)){throw o.errors.conversionFailed({prefix:t,argument:`${A} ("${o.util.Stringify(e)}")`,types:["ArrayBuffer"]})}if(s?.allowShared===false&&r.isSharedArrayBuffer(e)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.resizable||e.growable){throw o.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};o.converters.TypedArray=function(e,t,A,s,n){if(o.util.Type(e)!=="Object"||!r.isTypedArray(e)||e.constructor.name!==t.name){throw o.errors.conversionFailed({prefix:A,argument:`${s} ("${o.util.Stringify(e)}")`,types:[t.name]})}if(n?.allowShared===false&&r.isSharedArrayBuffer(e.buffer)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.buffer.resizable||e.buffer.growable){throw o.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};o.converters.DataView=function(e,t,A,s){if(o.util.Type(e)!=="Object"||!r.isDataView(e)){throw o.errors.exception({header:t,message:`${A} is not a DataView.`})}if(s?.allowShared===false&&r.isSharedArrayBuffer(e.buffer)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.buffer.resizable||e.buffer.growable){throw o.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};o.converters.BufferSource=function(e,t,A,s){if(r.isAnyArrayBuffer(e)){return o.converters.ArrayBuffer(e,t,A,{...s,allowShared:false})}if(r.isTypedArray(e)){return o.converters.TypedArray(e,e.constructor,t,A,{...s,allowShared:false})}if(r.isDataView(e)){return o.converters.DataView(e,t,A,{...s,allowShared:false})}throw o.errors.conversionFailed({prefix:t,argument:`${A} ("${o.util.Stringify(e)}")`,types:["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}},2607: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}},8355:(e,t,A)=>{const{staticPropertyDescriptors:r,readOperation:s,fireAProgressEvent:n}=A(3610);const{kState:i,kError:o,kResult:a,kEvents:c,kAborted:l}=A(961);const{webidl:h}=A(5893);const{kEnumerableProperty:g}=A(3440);class FileReader extends EventTarget{constructor(){super();this[i]="empty";this[a]=null;this[o]=null;this[c]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(e){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer");e=h.converters.Blob(e,{strict:false});s(this,e,"ArrayBuffer")}readAsBinaryString(e){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString");e=h.converters.Blob(e,{strict:false});s(this,e,"BinaryString")}readAsText(e,t=undefined){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsText");e=h.converters.Blob(e,{strict:false});if(t!==undefined){t=h.converters.DOMString(t,"FileReader.readAsText","encoding")}s(this,e,"Text",t)}readAsDataURL(e){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL");e=h.converters.Blob(e,{strict:false});s(this,e,"DataURL")}abort(){if(this[i]==="empty"||this[i]==="done"){this[a]=null;return}if(this[i]==="loading"){this[i]="done";this[a]=null}this[l]=true;n("abort",this);if(this[i]!=="loading"){n("loadend",this)}}get readyState(){h.brandCheck(this,FileReader);switch(this[i]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){h.brandCheck(this,FileReader);return this[a]}get error(){h.brandCheck(this,FileReader);return this[o]}get onloadend(){h.brandCheck(this,FileReader);return this[c].loadend}set onloadend(e){h.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(){h.brandCheck(this,FileReader);return this[c].error}set onerror(e){h.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(){h.brandCheck(this,FileReader);return this[c].loadstart}set onloadstart(e){h.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(){h.brandCheck(this,FileReader);return this[c].progress}set onprogress(e){h.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(){h.brandCheck(this,FileReader);return this[c].load}set onload(e){h.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(){h.brandCheck(this,FileReader);return this[c].abort}set onabort(e){h.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:r,LOADING:r,DONE:r,readAsArrayBuffer:g,readAsBinaryString:g,readAsText:g,readAsDataURL:g,abort:g,readyState:g,result:g,error:g,onloadstart:g,onprogress:g,onload:g,onabort:g,onerror:g,onloadend:g,[Symbol.toStringTag]:{value:"FileReader",writable:false,enumerable:false,configurable:true}});Object.defineProperties(FileReader,{EMPTY:r,LOADING:r,DONE:r});e.exports={FileReader:FileReader}},8573:(e,t,A)=>{const{webidl:r}=A(5893);const s=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(e,t={}){e=r.converters.DOMString(e,"ProgressEvent constructor","type");t=r.converters.ProgressEventInit(t??{});super(e,t);this[s]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){r.brandCheck(this,ProgressEvent);return this[s].lengthComputable}get loaded(){r.brandCheck(this,ProgressEvent);return this[s].loaded}get total(){r.brandCheck(this,ProgressEvent);return this[s].total}}r.converters.ProgressEventInit=r.dictionaryConverter([{key:"lengthComputable",converter:r.converters.boolean,defaultValue:()=>false},{key:"loaded",converter:r.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:r.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:r.converters.boolean,defaultValue:()=>false},{key:"cancelable",converter:r.converters.boolean,defaultValue:()=>false},{key:"composed",converter:r.converters.boolean,defaultValue:()=>false}]);e.exports={ProgressEvent:ProgressEvent}},961: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")}},3610:(e,t,A)=>{const{kState:r,kError:s,kResult:n,kAborted:i,kLastProgressEventFired:o}=A(961);const{ProgressEvent:a}=A(8573);const{getEncoding:c}=A(2607);const{serializeAMimeType:l,parseMIMEType:h}=A(1900);const{types:g}=A(7975);const{StringDecoder:u}=A(3193);const{btoa:E}=A(4573);const Q={enumerable:true,writable:false,configurable:false};function readOperation(e,t,A,a){if(e[r]==="loading"){throw new DOMException("Invalid state","InvalidStateError")}e[r]="loading";e[n]=null;e[s]=null;const c=t.stream();const l=c.getReader();const h=[];let u=l.read();let E=true;(async()=>{while(!e[i]){try{const{done:c,value:Q}=await u;if(E&&!e[i]){queueMicrotask(()=>{fireAProgressEvent("loadstart",e)})}E=false;if(!c&&g.isUint8Array(Q)){h.push(Q);if((e[o]===undefined||Date.now()-e[o]>=50)&&!e[i]){e[o]=Date.now();queueMicrotask(()=>{fireAProgressEvent("progress",e)})}u=l.read()}else if(c){queueMicrotask(()=>{e[r]="done";try{const r=packageData(h,A,t.type,a);if(e[i]){return}e[n]=r;fireAProgressEvent("load",e)}catch(t){e[s]=t;fireAProgressEvent("error",e)}if(e[r]!=="loading"){fireAProgressEvent("loadend",e)}});break}}catch(t){if(e[i]){return}queueMicrotask(()=>{e[r]="done";e[s]=t;fireAProgressEvent("error",e);if(e[r]!=="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,r){switch(t){case"DataURL":{let t="data:";const r=h(A||"application/octet-stream");if(r!=="failure"){t+=l(r)}t+=";base64,";const s=new u("latin1");for(const A of e){t+=E(s.write(A))}t+=E(s.end());return t}case"Text":{let t="failure";if(r){t=c(r)}if(t==="failure"&&A){const e=h(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 u("latin1");for(const r of e){t+=A.write(r)}t+=A.end();return t}}}function decode(e,t){const A=combineByteSequences(e);const r=BOMSniffing(A);let s=0;if(r!==null){t=r;s=r==="UTF-8"?3:2}const n=A.slice(s);return new TextDecoder(t).decode(n)}function BOMSniffing(e){const[t,A,r]=e;if(t===239&&A===187&&r===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:Q,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},6897:(e,t,A)=>{const{uid:r,states:s,sentCloseFrameState:n,emptyBuffer:i,opcodes:o}=A(736);const{kReadyState:a,kSentClose:c,kByteParser:l,kReceivedClose:h,kResponse:g}=A(1216);const{fireEvent:u,failWebsocketConnection:E,isClosing:Q,isClosed:C,isEstablished:B,parseExtensions:I}=A(8625);const{channels:d}=A(2414);const{CloseEvent:f}=A(5188);const{makeRequest:p}=A(9967);const{fetching:w}=A(4398);const{Headers:y,getHeadersList:m}=A(660);const{getDecodeSplit:R}=A(3168);const{WebsocketFrameSend:D}=A(3264);let b;try{b=A(7598)}catch{}function establishWebSocketConnection(e,t,A,s,n,i){const o=e;o.protocol=e.protocol==="ws:"?"http:":"https:";const a=p({urlList:[o],client:A,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(i.headers){const e=m(new y(i.headers));a.headersList=e}const c=b.randomBytes(16).toString("base64");a.headersList.append("sec-websocket-key",c);a.headersList.append("sec-websocket-version","13");for(const e of t){a.headersList.append("sec-websocket-protocol",e)}const l="permessage-deflate; client_max_window_bits";a.headersList.append("sec-websocket-extensions",l);const h=w({request:a,useParallelQueue:true,dispatcher:i.dispatcher,processResponse(e){if(e.type==="error"||e.status!==101){E(s,"Received network error or non-101 status code.");return}if(t.length!==0&&!e.headersList.get("Sec-WebSocket-Protocol")){E(s,"Server did not respond with sent protocols.");return}if(e.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){E(s,'Server did not set Upgrade header to "websocket".');return}if(e.headersList.get("Connection")?.toLowerCase()!=="upgrade"){E(s,'Server did not set Connection header to "upgrade".');return}const A=e.headersList.get("Sec-WebSocket-Accept");const i=b.createHash("sha1").update(c+r).digest("base64");if(A!==i){E(s,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const o=e.headersList.get("Sec-WebSocket-Extensions");let l;if(o!==null){l=I(o);if(!l.has("permessage-deflate")){E(s,"Sec-WebSocket-Extensions header does not match.");return}}const h=e.headersList.get("Sec-WebSocket-Protocol");if(h!==null){const e=R("sec-websocket-protocol",a.headersList);if(e===null||!e.includes(h)){E(s,"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(d.open.hasSubscribers){d.open.publish({address:e.socket.address(),protocol:h,extensions:o})}n(e,l)}});return h}function closeWebSocketConnection(e,t,A,r){if(Q(e)||C(e)){}else if(!B(e)){E(e,"Connection was closed before it was established.");e[a]=s.CLOSING}else if(e[c]===n.NOT_SENT){e[c]=n.PROCESSING;const l=new D;if(t!==undefined&&A===undefined){l.frameData=Buffer.allocUnsafe(2);l.frameData.writeUInt16BE(t,0)}else if(t!==undefined&&A!==undefined){l.frameData=Buffer.allocUnsafe(2+r);l.frameData.writeUInt16BE(t,0);l.frameData.write(A,2,"utf-8")}else{l.frameData=i}const h=e[g].socket;h.write(l.createFrame(o.CLOSE));e[c]=n.SENT;e[a]=s.CLOSING}else{e[a]=s.CLOSING}}function onSocketData(e){if(!this.ws[l].write(e)){this.pause()}}function onSocketClose(){const{ws:e}=this;const{[g]:t}=e;t.socket.off("data",onSocketData);t.socket.off("close",onSocketClose);t.socket.off("error",onSocketError);const A=e[c]===n.SENT&&e[h];let r=1005;let i="";const o=e[l].closingInfo;if(o&&!o.error){r=o.code??1005;i=o.reason}else if(!e[h]){r=1006}e[a]=s.CLOSED;u("close",e,(e,t)=>new f(e,t),{wasClean:A,code:r,reason:i});if(d.close.hasSubscribers){d.close.publish({websocket:e,code:r,reason:i})}}function onSocketError(e){const{ws:t}=this;t[a]=s.CLOSING;if(d.socketError.hasSubscribers){d.socketError.publish(e)}this.destroy()}e.exports={establishWebSocketConnection:establishWebSocketConnection,closeWebSocketConnection:closeWebSocketConnection}},736:e=>{const t="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const A={enumerable:true,writable:false,configurable:false};const r={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const s={NOT_SENT:0,PROCESSING:1,SENT:2};const n={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};const i=2**16-1;const o={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};const a=Buffer.allocUnsafe(0);const c={string:1,typedArray:2,arrayBuffer:3,blob:4};e.exports={uid:t,sentCloseFrameState:s,staticPropertyDescriptors:A,states:r,opcodes:n,maxUnsigned16Bit:i,parserStates:o,emptyBuffer:a,sendHints:c}},5188:(e,t,A)=>{const{webidl:r}=A(5893);const{kEnumerableProperty:s}=A(3440);const{kConstruct:n}=A(6443);const{MessagePort:i}=A(5919);class MessageEvent extends Event{#X;constructor(e,t={}){if(e===n){super(arguments[1],arguments[2]);r.util.markAsUncloneable(this);return}const A="MessageEvent constructor";r.argumentLengthCheck(arguments,1,A);e=r.converters.DOMString(e,A,"type");t=r.converters.MessageEventInit(t,A,"eventInitDict");super(e,t);this.#X=t;r.util.markAsUncloneable(this)}get data(){r.brandCheck(this,MessageEvent);return this.#X.data}get origin(){r.brandCheck(this,MessageEvent);return this.#X.origin}get lastEventId(){r.brandCheck(this,MessageEvent);return this.#X.lastEventId}get source(){r.brandCheck(this,MessageEvent);return this.#X.source}get ports(){r.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#X.ports)){Object.freeze(this.#X.ports)}return this.#X.ports}initMessageEvent(e,t=false,A=false,s=null,n="",i="",o=null,a=[]){r.brandCheck(this,MessageEvent);r.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent");return new MessageEvent(e,{bubbles:t,cancelable:A,data:s,origin:n,lastEventId:i,source:o,ports:a})}static createFastMessageEvent(e,t){const A=new MessageEvent(n,e,t);A.#X=t;A.#X.data??=null;A.#X.origin??="";A.#X.lastEventId??="";A.#X.source??=null;A.#X.ports??=[];return A}}const{createFastMessageEvent:o}=MessageEvent;delete MessageEvent.createFastMessageEvent;class CloseEvent extends Event{#X;constructor(e,t={}){const A="CloseEvent constructor";r.argumentLengthCheck(arguments,1,A);e=r.converters.DOMString(e,A,"type");t=r.converters.CloseEventInit(t);super(e,t);this.#X=t;r.util.markAsUncloneable(this)}get wasClean(){r.brandCheck(this,CloseEvent);return this.#X.wasClean}get code(){r.brandCheck(this,CloseEvent);return this.#X.code}get reason(){r.brandCheck(this,CloseEvent);return this.#X.reason}}class ErrorEvent extends Event{#X;constructor(e,t){const A="ErrorEvent constructor";r.argumentLengthCheck(arguments,1,A);super(e,t);r.util.markAsUncloneable(this);e=r.converters.DOMString(e,A,"type");t=r.converters.ErrorEventInit(t??{});this.#X=t}get message(){r.brandCheck(this,ErrorEvent);return this.#X.message}get filename(){r.brandCheck(this,ErrorEvent);return this.#X.filename}get lineno(){r.brandCheck(this,ErrorEvent);return this.#X.lineno}get colno(){r.brandCheck(this,ErrorEvent);return this.#X.colno}get error(){r.brandCheck(this,ErrorEvent);return this.#X.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:s,origin:s,lastEventId:s,source:s,ports:s,initMessageEvent:s});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:s,code:s,wasClean:s});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:s,filename:s,lineno:s,colno:s,error:s});r.converters.MessagePort=r.interfaceConverter(i);r.converters["sequence"]=r.sequenceConverter(r.converters.MessagePort);const a=[{key:"bubbles",converter:r.converters.boolean,defaultValue:()=>false},{key:"cancelable",converter:r.converters.boolean,defaultValue:()=>false},{key:"composed",converter:r.converters.boolean,defaultValue:()=>false}];r.converters.MessageEventInit=r.dictionaryConverter([...a,{key:"data",converter:r.converters.any,defaultValue:()=>null},{key:"origin",converter:r.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:r.converters.DOMString,defaultValue:()=>""},{key:"source",converter:r.nullableConverter(r.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:r.converters["sequence"],defaultValue:()=>new Array(0)}]);r.converters.CloseEventInit=r.dictionaryConverter([...a,{key:"wasClean",converter:r.converters.boolean,defaultValue:()=>false},{key:"code",converter:r.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:r.converters.USVString,defaultValue:()=>""}]);r.converters.ErrorEventInit=r.dictionaryConverter([...a,{key:"message",converter:r.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:r.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:r.converters.any}]);e.exports={MessageEvent:MessageEvent,CloseEvent:CloseEvent,ErrorEvent:ErrorEvent,createFastMessageEvent:o}},3264:(e,t,A)=>{const{maxUnsigned16Bit:r}=A(736);const s=16386;let n;let i=null;let o=s;try{n=A(7598)}catch{n={randomFillSync:function randomFillSync(e,t,A){for(let t=0;tr){i+=8;n=127}else if(s>125){i+=2;n=126}const o=Buffer.allocUnsafe(s+i);o[0]=o[1]=0;o[0]|=128;o[0]=(o[0]&240)+e; -/*! ws. MIT License. Einar Otto Stangvik */o[i-4]=A[0];o[i-3]=A[1];o[i-2]=A[2];o[i-1]=A[3];o[1]=n;if(n===126){o.writeUInt16BE(s,2)}else if(n===127){o[2]=o[3]=0;o.writeUIntBE(s,4,6)}o[1]|=128;for(let e=0;e{const{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:s}=A(8522);const{isValidClientWindowBits:n}=A(8625);const{MessageSizeExceededError:i}=A(8707);const o=Buffer.from([0,0,255,255]);const a=Symbol("kBuffer");const c=Symbol("kLength");class PerMessageDeflate{#j;#Q={};#$=0;constructor(e,t){this.#Q.serverNoContextTakeover=e.has("server_no_context_takeover");this.#Q.serverMaxWindowBits=e.get("server_max_window_bits");this.#$=t.maxPayloadSize}decompress(e,t,A){if(!this.#j){let e=s;if(this.#Q.serverMaxWindowBits){if(!n(this.#Q.serverMaxWindowBits)){A(new Error("Invalid server_max_window_bits"));return}e=Number.parseInt(this.#Q.serverMaxWindowBits)}try{this.#j=r({windowBits:e})}catch(e){A(e);return}this.#j[a]=[];this.#j[c]=0;this.#j.on("data",e=>{this.#j[c]+=e.length;if(this.#$>0&&this.#j[c]>this.#$){A(new i);this.#j.removeAllListeners();this.#j.destroy();this.#j=null;return}this.#j[a].push(e)});this.#j.on("error",e=>{this.#j=null;A(e)})}this.#j.write(e);if(t){this.#j.write(o)}this.#j.flush(()=>{if(!this.#j){return}const e=Buffer.concat(this.#j[a],this.#j[c]);this.#j[a].length=0;this.#j[c]=0;A(null,e)})}}e.exports={PerMessageDeflate:PerMessageDeflate}},1652:(e,t,A)=>{const{Writable:r}=A(7075);const s=A(4589);const{parserStates:n,opcodes:i,states:o,emptyBuffer:a,sentCloseFrameState:c}=A(736);const{kReadyState:l,kSentClose:h,kResponse:g,kReceivedClose:u}=A(1216);const{channels:E}=A(2414);const{isValidStatusCode:Q,isValidOpcode:C,failWebsocketConnection:B,websocketMessageReceived:I,utf8Decode:d,isControlFrame:f,isTextBinaryFrame:p,isContinuationFrame:w}=A(8625);const{WebsocketFrameSend:y}=A(3264);const{closeWebSocketConnection:m}=A(6897);const{PerMessageDeflate:R}=A(9469);const{MessageSizeExceededError:D}=A(8707);function failWebsocketConnectionWithCode(e,t,A){m(e,t,A,Buffer.byteLength(A));B(e,A)}class ByteParser extends r{#ee=[];#te=0;#Ae=0;#re=false;#w=n.INFO;#se={};#ne=[];#ie;#oe;#$;constructor(e,t,A={}){super();this.ws=e;this.#ie=t==null?new Map:t;this.#oe=A.maxFragments??0;this.#$=A.maxPayloadSize??0;if(this.#ie.has("permessage-deflate")){this.#ie.set("permessage-deflate",new R(t,A))}}_write(e,t,A){this.#ee.push(e);this.#Ae+=e.length;this.#re=true;this.run(A)}#ae(){if(this.#$>0&&!f(this.#se.opcode)&&this.#se.payloadLength+this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(e){while(this.#re){if(this.#w===n.INFO){if(this.#Ae<2){return e()}const t=this.consume(2);const A=(t[0]&128)!==0;const r=t[0]&15;const s=(t[1]&128)===128;const o=!A&&r!==i.CONTINUATION;const a=t[1]&127;const c=t[0]&64;const l=t[0]&32;const h=t[0]&16;if(!C(r)){B(this.ws,"Invalid opcode received");return e()}if(s){B(this.ws,"Frame cannot be masked");return e()}if(c!==0&&!this.#ie.has("permessage-deflate")){B(this.ws,"Expected RSV1 to be clear.");return}if(l!==0||h!==0){B(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(o&&!p(r)){B(this.ws,"Invalid frame type was fragmented.");return}if(p(r)&&this.#ne.length>0){B(this.ws,"Expected continuation frame");return}if(this.#se.fragmented&&o){B(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((a>125||o)&&f(r)){B(this.ws,"Control frame either too large or fragmented");return}if(w(r)&&this.#ne.length===0&&!this.#se.compressed){B(this.ws,"Unexpected continuation frame");return}if(a<=125){this.#se.payloadLength=a;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(a===126){this.#w=n.PAYLOADLENGTH_16}else if(a===127){this.#w=n.PAYLOADLENGTH_64}if(p(r)){this.#se.binaryType=r;this.#se.compressed=c!==0}this.#se.opcode=r;this.#se.masked=s;this.#se.fin=A;this.#se.fragmented=o}else if(this.#w===n.PAYLOADLENGTH_16){if(this.#Ae<2){return e()}const t=this.consume(2);this.#se.payloadLength=t.readUInt16BE(0);this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.PAYLOADLENGTH_64){if(this.#Ae<8){return e()}const t=this.consume(8);const A=t.readUInt32BE(0);const r=t.readUInt32BE(4);if(A!==0||r>2**31-1){B(this.ws,"Received payload length > 2^31 bytes.");return}this.#se.payloadLength=r;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.READ_DATA){if(this.#Ae0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fragmented&&this.#se.fin){I(this.ws,this.#se.binaryType,this.consumeFragments())}this.#w=n.INFO}else{this.#ie.get("permessage-deflate").decompress(t,this.#se.fin,(t,A)=>{if(t){const e=t instanceof D?1009:1007;failWebsocketConnectionWithCode(this.ws,e,t.message);return}if(!this.writeFragments(A)){return}if(this.#$>0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fin){this.#w=n.INFO;this.#re=true;this.run(e);return}I(this.ws,this.#se.binaryType,this.consumeFragments());this.#re=true;this.#w=n.INFO;this.run(e)});this.#re=false;break}}}}}consume(e){if(e>this.#Ae){throw new Error("Called consume() before buffers satiated.")}else if(e===0){return a}if(this.#ee[0].length===e){this.#Ae-=this.#ee[0].length;return this.#ee.shift()}const t=Buffer.allocUnsafe(e);let A=0;while(A!==e){const r=this.#ee[0];const{length:s}=r;if(s+A===e){t.set(this.#ee.shift(),A);break}else if(s+A>e){t.set(r.subarray(0,e-A),A);this.#ee[0]=r.subarray(e-A);break}else{t.set(this.#ee.shift(),A);A+=r.length}}this.#Ae-=e;return t}writeFragments(e){if(this.#oe>0&&this.#ne.length===this.#oe){failWebsocketConnectionWithCode(this.ws,1008,"Too many message fragments");return false}this.#te+=e.length;this.#ne.push(e);return true}consumeFragments(){const e=this.#ne;if(e.length===1){this.#te=0;return e.shift()}const t=Buffer.concat(e,this.#te);this.#ne=[];this.#te=0;return t}parseCloseBody(e){s(e.length!==1);let t;if(e.length>=2){t=e.readUInt16BE(0)}if(t!==undefined&&!Q(t)){return{code:1002,reason:"Invalid status code",error:true}}let A=e.subarray(2);if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}try{A=d(A)}catch{return{code:1007,reason:"Invalid UTF-8",error:true}}return{code:t,reason:A,error:false}}parseControlFrame(e){const{opcode:t,payloadLength:A}=this.#se;if(t===i.CLOSE){if(A===1){B(this.ws,"Received close frame with a 1-byte body.");return false}this.#se.closeInfo=this.parseCloseBody(e);if(this.#se.closeInfo.error){const{code:e,reason:t}=this.#se.closeInfo;m(this.ws,e,t,t.length);B(this.ws,t);return false}if(this.ws[h]!==c.SENT){let e=a;if(this.#se.closeInfo.code){e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#se.closeInfo.code,0)}const t=new y(e);this.ws[g].socket.write(t.createFrame(i.CLOSE),e=>{if(!e){this.ws[h]=c.SENT}})}this.ws[l]=o.CLOSING;this.ws[u]=true;return false}else if(t===i.PING){if(!this.ws[u]){const t=new y(e);this.ws[g].socket.write(t.createFrame(i.PONG));if(E.ping.hasSubscribers){E.ping.publish({payload:e})}}}else if(t===i.PONG){if(E.pong.hasSubscribers){E.pong.publish({payload:e})}}return true}get closingInfo(){return this.#se.closeInfo}}e.exports={ByteParser:ByteParser}},3900:(e,t,A)=>{const{WebsocketFrameSend:r}=A(3264);const{opcodes:s,sendHints:n}=A(736);const i=A(4660);const o=Buffer[Symbol.species];class SendQueue{#ce=new i;#le=false;#he;constructor(e){this.#he=e}add(e,t,A){if(A!==n.blob){const r=createFrame(e,A);if(!this.#le){this.#he.write(r,t)}else{const e={promise:null,callback:t,frame:r};this.#ce.push(e)}return}const r={promise:e.arrayBuffer().then(e=>{r.promise=null;r.frame=createFrame(e,A)}),callback:t,frame:null};this.#ce.push(r);if(!this.#le){this.#ge()}}async#ge(){this.#le=true;const e=this.#ce;while(!e.isEmpty()){const t=e.shift();if(t.promise!==null){await t.promise}this.#he.write(t.frame,t.callback);t.callback=t.frame=null}this.#le=false}}function createFrame(e,t){return new r(toBuffer(e,t)).createFrame(t===n.string?s.TEXT:s.BINARY)}function toBuffer(e,t){switch(t){case n.string:return Buffer.from(e);case n.arrayBuffer:case n.blob:return new o(e);case n.typedArray:return new o(e.buffer,e.byteOffset,e.byteLength)}}e.exports={SendQueue:SendQueue}},1216: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")}},8625:(e,t,A)=>{const{kReadyState:r,kController:s,kResponse:n,kBinaryType:i,kWebSocketURL:o}=A(1216);const{states:a,opcodes:c}=A(736);const{ErrorEvent:l,createFastMessageEvent:h}=A(5188);const{isUtf8:g}=A(4573);const{collectASequenceOfCodePointsFast:u,removeHTTPWhitespace:E}=A(1900);function isConnecting(e){return e[r]===a.CONNECTING}function isEstablished(e){return e[r]===a.OPEN}function isClosing(e){return e[r]===a.CLOSING}function isClosed(e){return e[r]===a.CLOSED}function fireEvent(e,t,A=(e,t)=>new Event(e,t),r={}){const s=A(e,r);t.dispatchEvent(s)}function websocketMessageReceived(e,t,A){if(e[r]!==a.OPEN){return}let s;if(t===c.TEXT){try{s=B(A)}catch{failWebsocketConnection(e,"Received invalid UTF-8 in text frame.");return}}else if(t===c.BINARY){if(e[i]==="blob"){s=new Blob([A])}else{s=toArrayBuffer(A)}}fireEvent("message",e,h,{origin:e[o].origin,data:s})}function toArrayBuffer(e){if(e.byteLength===e.buffer.byteLength){return e.buffer}return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function isValidSubprotocol(e){if(e.length===0){return false}for(let t=0;t126||A===34||A===40||A===41||A===44||A===47||A===58||A===59||A===60||A===61||A===62||A===63||A===64||A===91||A===92||A===93||A===123||A===125){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{[s]:A,[n]:r}=e;A.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(t){fireEvent("error",e,(e,t)=>new l(e,t),{error:new Error(t),message:t})}}function isControlFrame(e){return e===c.CLOSE||e===c.PING||e===c.PONG}function isContinuationFrame(e){return e===c.CONTINUATION}function isTextBinaryFrame(e){return e===c.TEXT||e===c.BINARY}function isValidOpcode(e){return isTextBinaryFrame(e)||isContinuationFrame(e)||isControlFrame(e)}function parseExtensions(e){const t={position:0};const A=new Map;while(t.position57){return false}}const t=Number.parseInt(e,10);return t>=8&&t<=15}const Q=typeof process.versions.icu==="string";const C=Q?new TextDecoder("utf-8",{fatal:true}):undefined;const B=Q?C.decode.bind(C):function(e){if(g(e)){return e.toString("utf-8")}throw new TypeError("Invalid utf-8 received.")};e.exports={isConnecting:isConnecting,isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived,utf8Decode:B,isControlFrame:isControlFrame,isContinuationFrame:isContinuationFrame,isTextBinaryFrame:isTextBinaryFrame,isValidOpcode:isValidOpcode,parseExtensions:parseExtensions,isValidClientWindowBits:isValidClientWindowBits}},3726:(e,t,A)=>{const{webidl:r}=A(5893);const{URLSerializer:s}=A(1900);const{environmentSettingsObject:n}=A(3168);const{staticPropertyDescriptors:i,states:o,sentCloseFrameState:a,sendHints:c}=A(736);const{kWebSocketURL:l,kReadyState:h,kController:g,kBinaryType:u,kResponse:E,kSentClose:Q,kByteParser:C}=A(1216);const{isConnecting:B,isEstablished:I,isClosing:d,isValidSubprotocol:f,fireEvent:p}=A(8625);const{establishWebSocketConnection:w,closeWebSocketConnection:y}=A(6897);const{ByteParser:m}=A(1652);const{kEnumerableProperty:R,isBlobLike:D}=A(3440);const{getGlobalDispatcher:b}=A(2581);const{types:k}=A(7975);const{ErrorEvent:S,CloseEvent:F}=A(5188);const{SendQueue:N}=A(3900);class WebSocket extends EventTarget{#H={open:null,error:null,close:null,message:null};#ue=0;#Ee="";#ie="";#Qe;constructor(e,t=[]){super();r.util.markAsUncloneable(this);const A="WebSocket constructor";r.argumentLengthCheck(arguments,1,A);const s=r.converters["DOMString or sequence or WebSocketInit"](t,A,"options");e=r.converters.USVString(e,A,"url");t=s.protocols;const i=n.settingsObject.baseUrl;let o;try{o=new URL(e,i)}catch(e){throw new DOMException(e,"SyntaxError")}if(o.protocol==="http:"){o.protocol="ws:"}else if(o.protocol==="https:"){o.protocol="wss:"}if(o.protocol!=="ws:"&&o.protocol!=="wss:"){throw new DOMException(`Expected a ws: or wss: protocol, got ${o.protocol}`,"SyntaxError")}if(o.hash||o.href.endsWith("#")){throw new DOMException("Got fragment","SyntaxError")}if(typeof t==="string"){t=[t]}if(t.length!==new Set(t.map(e=>e.toLowerCase())).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(t.length>0&&!t.every(e=>f(e))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[l]=new URL(o.href);const c=n.settingsObject;this[g]=w(o,t,c,this,(e,t)=>this.#Ce(e,t),s);this[h]=WebSocket.CONNECTING;this[Q]=a.NOT_SENT;this[u]="blob"}close(e=undefined,t=undefined){r.brandCheck(this,WebSocket);const A="WebSocket.close";if(e!==undefined){e=r.converters["unsigned short"](e,A,"code",{clamp:true})}if(t!==undefined){t=r.converters.USVString(t,A,"reason")}if(e!==undefined){if(e!==1e3&&(e<3e3||e>4999)){throw new DOMException("invalid code","InvalidAccessError")}}let s=0;if(t!==undefined){s=Buffer.byteLength(t);if(s>123){throw new DOMException(`Reason must be less than 123 bytes; received ${s}`,"SyntaxError")}}y(this,e,t,s)}send(e){r.brandCheck(this,WebSocket);const t="WebSocket.send";r.argumentLengthCheck(arguments,1,t);e=r.converters.WebSocketSendData(e,t,"data");if(B(this)){throw new DOMException("Sent before connected.","InvalidStateError")}if(!I(this)||d(this)){return}if(typeof e==="string"){const t=Buffer.byteLength(e);this.#ue+=t;this.#Qe.add(e,()=>{this.#ue-=t},c.string)}else if(k.isArrayBuffer(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.arrayBuffer)}else if(ArrayBuffer.isView(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.typedArray)}else if(D(e)){this.#ue+=e.size;this.#Qe.add(e,()=>{this.#ue-=e.size},c.blob)}}get readyState(){r.brandCheck(this,WebSocket);return this[h]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#ue}get url(){r.brandCheck(this,WebSocket);return s(this[l])}get extensions(){r.brandCheck(this,WebSocket);return this.#ie}get protocol(){r.brandCheck(this,WebSocket);return this.#Ee}get onopen(){r.brandCheck(this,WebSocket);return this.#H.open}set onopen(e){r.brandCheck(this,WebSocket);if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#H.error}set onerror(e){r.brandCheck(this,WebSocket);if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#H.close}set onclose(e){r.brandCheck(this,WebSocket);if(this.#H.close){this.removeEventListener("close",this.#H.close)}if(typeof e==="function"){this.#H.close=e;this.addEventListener("close",e)}else{this.#H.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#H.message}set onmessage(e){r.brandCheck(this,WebSocket);if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[u]}set binaryType(e){r.brandCheck(this,WebSocket);if(e!=="blob"&&e!=="arraybuffer"){this[u]="blob"}else{this[u]=e}}#Ce(e,t){this[E]=e;const A=this[g]?.dispatcher?.webSocketOptions;const r=A?.maxFragments;const s=A?.maxPayloadSize;const n=new m(this,t,{maxFragments:r,maxPayloadSize:s});n.on("drain",onParserDrain);n.on("error",onParserError.bind(this));e.socket.ws=this;this[C]=n;this.#Qe=new N(e.socket);this[h]=o.OPEN;const i=e.headersList.get("sec-websocket-extensions");if(i!==null){this.#ie=i}const a=e.headersList.get("sec-websocket-protocol");if(a!==null){this.#Ee=a}p("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=o.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=o.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=o.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=o.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i,url:R,readyState:R,bufferedAmount:R,onopen:R,onerror:R,onclose:R,close:R,onmessage:R,binaryType:R,send:R,extensions:R,protocol:R,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i});r.converters["sequence"]=r.sequenceConverter(r.converters.DOMString);r.converters["DOMString or sequence"]=function(e,t,A){if(r.util.Type(e)==="Object"&&Symbol.iterator in e){return r.converters["sequence"](e)}return r.converters.DOMString(e,t,A)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:r.converters.any,defaultValue:()=>b()},{key:"headers",converter:r.nullableConverter(r.converters.HeadersInit)}]);r.converters["DOMString or sequence or WebSocketInit"]=function(e){if(r.util.Type(e)==="Object"&&!(Symbol.iterator in e)){return r.converters.WebSocketInit(e)}return{protocols:r.converters["DOMString or sequence"](e)}};r.converters.WebSocketSendData=function(e){if(r.util.Type(e)==="Object"){if(D(e)){return r.converters.Blob(e,{strict:false})}if(ArrayBuffer.isView(e)||k.isArrayBuffer(e)){return r.converters.BufferSource(e)}}return r.converters.USVString(e)};function onParserDrain(){this.ws[E].socket.resume()}function onParserError(e){let t;let A;if(e instanceof F){t=e.reason;A=e.code}else{t=e.message}p("error",this,()=>new S("error",{error:e,message:t}));y(this,A)}e.exports={WebSocket:WebSocket}},2613:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("assert")},4434:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("events")},8611:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http")},5692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("https")},9278:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("net")},4589:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:assert")},6698:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:async_hooks")},4573:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:buffer")},7540:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:console")},7598:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:crypto")},3053:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:diagnostics_channel")},610:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:dns")},8474:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:events")},7067:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http")},2467:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http2")},7030:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:net")},643:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:perf_hooks")},1792:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:querystring")},7075:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream")},1692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tls")},3136:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:url")},7975:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util")},3429:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util/types")},5919:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:worker_threads")},8522:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:zlib")},2203:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream")},3193:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("string_decoder")},4756:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("tls")},9023:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("util")},6628:(e,t,A)=>{A.a(e,async(e,t)=>{try{var r=A(3218);var s=A(3720);var n=A(9482);var i=A(4508);async function main(){const e=(0,n.F9)(r.V4("base_sha",{required:true}),r.V4("head_sha",{required:true}));const t=e.files.flatMap(e=>e.findings);const A=r.V4("fail_on")||"unreviewed";if(!["never","review","unreviewed"].includes(A)){throw new Error("fail_on must be one of: never, review, unreviewed")}const o=r.V4("fail_on_risk")||"none";(0,i.p)(o);const a=e.unreviewed.length>0?"incomplete":t.length>0?"findings":"clean";process.stdout.write("ChangeGuard review completed.\n");r.uH("outcome",a);r.uH("finding_count",String(t.length));r.uH("reviewed_file_count",String(e.reviewedFileCount));r.uH("unreviewed_count",String(e.unreviewedFileCount));r.uH("rule_ids",e.ruleIds.join(","));r.uH("highest_severity",t.length?"review":"none");const c={low:1,medium:2,high:3};const l=t.reduce((e,t)=>{const A=t.riskLevel??"medium";return c[A]>(e==="none"?0:c[e])?A:e},"none");r.uH("highest_risk",l);r.uH("risk_threshold_exceeded",String((0,i.E)(t,o)));r.uH("report",JSON.stringify(e));await r.z.addRaw((0,s.B)(e)).write();for(const t of e.files)for(const e of t.findings){r.$e(`${e.ruleId}: ${e.summary}`,{file:t.path,title:`${e.ruleId} (${e.riskLevel??"medium"} risk)`})}if(A!=="never"&&e.unreviewed.length>0){throw new Error("Review incomplete: one or more configurations could not be analyzed.")}if(A==="review"&&t.length>0)throw new Error("Review findings detected.");if((0,i.E)(t,o))throw new Error(`Review findings meet the ${o} risk threshold.`)}try{await main()}catch(o){r.C1(o instanceof Error?o.message:"Unexpected failure.")}t()}catch(a){t(a)}},1)},9482:(e,t,A)=>{A.d(t,{F9:()=>reviewPullRequest});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:child_process");function readClientId(e){if(!Object.prototype.hasOwnProperty.call(e,"client_id")){return undefined}const t=e.client_id;if(typeof t!=="string"||t.trim().length===0){throw new Error("client_id must be a non-empty string")}return t}function compareClientIds(e,t){const A=readClientId(e);const r=readClientId(t);if(A===r){return[]}const s=A===undefined?"CLIENT_ID_ADDED":r===undefined?"CLIENT_ID_REMOVED":"CLIENT_ID_CHANGED";const n=A===undefined?"client ID added":r===undefined?"client ID removed":"client ID changed";return[{ruleId:s,severity:"review",field:"client_id",summary:n}]}function applicationUrl(e){const t=e.application_url;if(t===undefined)return undefined;if(typeof t!=="string"||!t.trim()){throw new Error("application_url must be a non-empty string when provided")}return t}function redirectUrls(e){const t=e.auth;if(t===undefined)return new Set;if(typeof t!=="object"||t===null||Array.isArray(t)){throw new Error("[auth] must be a table when provided")}const A=t.redirect_urls;if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error("[auth].redirect_urls must be an array of non-empty strings")}return new Set(A)}function compareUrls(e,t){const A=applicationUrl(e);const r=applicationUrl(t);const s=redirectUrls(e);const n=redirectUrls(t);const i=[];if(A!==r){const e=A===undefined?"added":r===undefined?"removed":"changed";i.push({ruleId:"APPLICATION_URL_CHANGED",severity:"review",field:"application_url",summary:`application_url ${e}; review the intended app environment and destination`})}const o=[...n].filter(e=>!s.has(e)).length;const a=[...s].filter(e=>!n.has(e)).length;if(o||a){i.push({ruleId:"AUTH_REDIRECT_URLS_CHANGED",severity:"review",field:"auth.redirect_urls",summary:`authorization redirect URL set changed (added: ${o}; removed: ${a}); review OAuth callback configuration`})}return i}function isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function normalise(e){if(Array.isArray(e))return e.map(normalise);if(isTable(e)){return Object.fromEntries(Object.keys(e).sort().map(t=>[t,normalise(e[t])]))}return e}function readTopicList(e,t){const A=e[t];if(A===undefined)return[];if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error(`webhooks.subscriptions.${t} must be an array of non-empty strings`)}return[...new Set(A.map(e=>e.trim()))].sort()}function readWebhooks(e){const t=e.webhooks;if(t===undefined)return{routes:new Map};if(!isTable(t))throw new Error("[webhooks] must be a table");const A=t.api_version;if(A!==undefined&&(typeof A!=="string"||!A.trim())){throw new Error("[webhooks].api_version must be a non-empty string")}const r=t.subscriptions??[];if(!Array.isArray(r)){throw new Error("webhooks.subscriptions must be an array of tables")}const s=new Map;for(const e of r){if(!isTable(e))throw new Error("Each webhook subscription must be a table");const t=readTopicList(e,"topics");const A=readTopicList(e,"compliance_topics");if(!t.length&&!A.length){throw new Error("Webhook subscription requires topics or compliance_topics")}if(typeof e.uri!=="string"||!e.uri.trim()){throw new Error("Webhook subscription uri must be a non-empty string")}if(e.include_fields!==undefined&&(!Array.isArray(e.include_fields)||!e.include_fields.every(e=>typeof e==="string"&&e.trim()))){throw new Error("Webhook include_fields must be an array of non-empty strings")}if(e.filter!==undefined&&typeof e.filter!=="string"){throw new Error("Webhook filter must be a string")}const{topics:r,compliance_topics:n,...i}=e;const o=JSON.stringify(normalise({...i,...e.include_fields!==undefined?{include_fields:[...new Set(e.include_fields)].sort()}:{}}));for(const[e,r]of[["topics",t],["compliance_topics",A]]){for(const t of r){const A=JSON.stringify([e,t]);const r=s.get(A)??new Set;r.add(o);s.set(A,r)}}}return{version:A,routes:s}}function sameSet(e,t){return e.size===t.size&&[...e].every(e=>t.has(e))}function compareWebhooks(e,t){const A=readWebhooks(e);const r=readWebhooks(t);const s=[];if(A.version!==r.version){s.push({ruleId:"WEBHOOK_API_VERSION_CHANGED",severity:"review",field:"webhooks.api_version",summary:"webhook API version changed; review delivery payload compatibility"})}let n=0;let i=0;let o=0;for(const e of new Set([...A.routes.keys(),...r.routes.keys()])){const t=A.routes.get(e);const s=r.routes.get(e);if(!t)n++;else if(!s)i++;else if(!sameSet(t,s))o++}if(n||i||o){s.push({ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",severity:"review",field:"webhooks.subscriptions",summary:`webhook routes changed (added: ${n}; removed: ${i}; modified: ${o}); review topics, destinations and delivery settings`})}return s}function events_isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function readString(e,t,A){const r=e[t];if(typeof r!=="string"||!r.trim()){throw new Error(`${A}.${t} must be a non-empty string`)}return r.trim()}function readStringSet(e,t,A){const r=e[t];if(!Array.isArray(r)||!r.every(e=>typeof e==="string"&&e.trim())){throw new Error(`${A}.${t} must be an array of non-empty strings`)}return[...new Set(r.map(e=>e.trim()))].sort()}function readEvents(e){const t=e.events;if(t===undefined)return{subscriptions:new Map};if(!events_isTable(t))throw new Error("[events] must be a table");const A=t.api_version;if(A===undefined){throw new Error("[events].api_version is required")}if(typeof A!=="string"||!A.trim()){throw new Error("[events].api_version must be a non-empty string")}const r=t.subscription??[];if(!Array.isArray(r)){throw new Error("events.subscription must be an array of tables")}const s=new Map;for(const e of r){if(!events_isTable(e))throw new Error("Each Events subscription must be a table");const t="events.subscription";const A=readString(e,"handle",t);if(!/^[A-Za-z0-9_-]{1,50}$/.test(A)){throw new Error("events.subscription.handle must be alphanumeric, _, or - and at most 50 characters")}const r=readString(e,"topic",t);const n=readStringSet(e,"actions",t);if(n.some(e=>!["create","update","delete"].includes(e))){throw new Error("events.subscription.actions must contain only create, update, or delete")}const i=readString(e,"uri",t);if(n.includes("update")){readStringSet(e,"triggers",t)}else if(e.triggers!==undefined){readStringSet(e,"triggers",t)}const o=e.query===undefined?undefined:readString(e,"query",t);const a=e.query_filter===undefined?undefined:normalizeFilter(readString(e,"query_filter",t));if(s.has(A))throw new Error("Events subscription handles must be unique");const c=o===undefined?undefined:normalizeGraphQL(o);const l=e.triggers===undefined?[]:[...new Set(e.triggers.map(e=>e.trim()))].sort();const h={actions:n,query:c,filter:a,topic:r,triggers:l,destination:i};s.set(A,{handle:A,fingerprint:JSON.stringify(h),...h})}return{version:A,subscriptions:s}}function compareEvents(e,t){const A=readEvents(e);const r=readEvents(t);const s=[];if(A.version!==r.version){s.push({ruleId:"EVENTS_API_VERSION_CHANGED",severity:"review",field:"events.api_version",summary:"Events API version changed; review preview/runtime compatibility"})}let n=0,i=0,o=0;const a={topic:0,destination:0,actions:0,triggers:0,query:0,filter:0};for(const e of new Set([...A.subscriptions.keys(),...r.subscriptions.keys()])){const t=A.subscriptions.get(e);const s=r.subscriptions.get(e);if(!t)n++;else if(!s)i++;else if(t.fingerprint!==s.fingerprint){o++;for(const e of Object.keys(a))if(JSON.stringify(t[e])!==JSON.stringify(s[e]))a[e]++}}if(n||i||o){const e=o?`; modified fields: ${Object.entries(a).filter(([,e])=>e>0).map(([e,t])=>`${e==="destination"?"destination":e==="filter"?"query filter":e} ${t}`).join(", ")}`:"";s.push({ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",severity:"review",field:"events.subscription",summary:`Events subscriptions changed (created: ${n}; removed: ${i}; modified: ${o}${e}); review the affected subscription configuration`})}return s}function normalizeGraphQL(e){const t=[];const A=/#[^\r\n]*|"""[\s\S]*?"""|"(?:\\.|[^"\\])*"|[A-Za-z_][A-Za-z0-9_]*|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\.\.|[^\s,]/g;for(const r of e.matchAll(A)){if(r[0].startsWith("#"))continue;t.push(r[0])}return t.length?t.join(" "):e}function normalizeFilter(e){let t="",A="",r=false,s=false;for(const n of e.trim()){if(A){t+=n;if(r)r=false;else if(n==="\\")r=true;else if(n===A)A=""}else if(n==='"'||n==="'"){if(s&&t)t+=" ";s=false;A=n;t+=n}else if(/\s/.test(n))s=true;else{if(s&&t)t+=" ";s=false;t+=n}}return t}const s="https://shopify.dev/docs/apps/build/cli-for-apps/app-configuration";const n="https://shopify.dev/docs/apps/build/cli-for-apps/manage-app-config-files";const i="https://shopify.dev/docs/apps/build/online-store/app-proxies";const o=[{ruleId:"SCOPE_REQUIRED_ADDED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was added.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_REMOVED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_ADDED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was added.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_REMOVED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",category:"authorization",field:"access_scopes",explanation:"An optional scope became required.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",category:"authorization",field:"access_scopes",explanation:"A required scope became optional.",documentationUrl:s},{ruleId:"CLIENT_ID_ADDED",category:"identity",field:"client_id",explanation:"The app client ID was added.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_REMOVED",category:"identity",field:"client_id",explanation:"The app client ID was removed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_CHANGED",category:"identity",field:"client_id",explanation:"The app client ID changed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"APPLICATION_URL_CHANGED",category:"routing",field:"application_url",explanation:"The app application URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"AUTH_REDIRECT_URLS_CHANGED",category:"routing",field:"auth.redirect_urls",explanation:"The OAuth redirect URL set changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"embedded",explanation:"The embedded app mode changed.",documentationUrl:s},{ruleId:"APP_HANDLE_CHANGED",category:"identity",field:"handle",explanation:"The app handle changed.",documentationUrl:s},{ruleId:"APP_NAME_CHANGED",category:"identity",field:"name",explanation:"The app name changed.",documentationUrl:s,redaction:"Name values are not included in findings."},{ruleId:"LEGACY_INSTALL_FLOW_CHANGED",category:"authorization",field:"access_scopes.use_legacy_install_flow",explanation:"The legacy installation flow setting changed.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",category:"api-access",field:"access.admin.embedded_app_direct_api_access",explanation:"Admin Direct API access was enabled or disabled.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",category:"api-access",field:"access.admin.direct_api_mode",explanation:"Admin Direct API online/offline mode changed.",documentationUrl:s},{ruleId:"CUSTOMER_AUTH_REDIRECTS_CHANGED",category:"authorization",field:"customer_authentication.redirect_uris",explanation:"Customer account authentication redirect URIs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"CUSTOMER_AUTH_ORIGINS_CHANGED",category:"authorization",field:"customer_authentication.javascript_origins",explanation:"Customer account authentication JavaScript origins changed.",documentationUrl:s,redaction:"Origin values are never included in findings."},{ruleId:"CUSTOMER_AUTH_LOGOUT_URLS_CHANGED",category:"authorization",field:"customer_authentication.logout_urls",explanation:"Customer account authentication logout URLs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ENABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was enabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DISABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was disabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DESTINATION_CHANGED",category:"routing",field:"app_proxy.url",explanation:"The app proxy destination changed.",documentationUrl:i,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ROUTE_CHANGED",category:"routing",field:"app_proxy.prefix/subpath",explanation:"The app proxy storefront route changed.",documentationUrl:i},{ruleId:"POS_EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"pos.embedded",explanation:"Shopify POS embedded mode changed.",documentationUrl:s},{ruleId:"APP_PREFERENCES_URL_CHANGED",category:"routing",field:"app_preferences.url",explanation:"The app preferences URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EXTENSION_DIRECTORIES_CHANGED",category:"project-discovery",field:"extension_directories",explanation:"The extension discovery directory set changed.",documentationUrl:s},{ruleId:"WEB_DIRECTORIES_CHANGED",category:"project-discovery",field:"web_directories",explanation:"The web discovery directory set changed.",documentationUrl:s},{ruleId:"AUTOMATIC_DEV_URLS_CHANGED",category:"runtime-behaviour",field:"build.automatically_update_urls_on_dev",explanation:"Automatic development URL updates changed.",documentationUrl:s},{ruleId:"WEBHOOK_API_VERSION_CHANGED",category:"event-delivery",field:"webhooks.api_version",explanation:"The webhook API version changed.",documentationUrl:s},{ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"webhooks.subscriptions",explanation:"Webhook routes or delivery settings changed.",documentationUrl:s,redaction:"Destinations, topics, filters, and field names are never included in findings."},{ruleId:"EVENTS_API_VERSION_CHANGED",category:"event-delivery",field:"events.api_version",explanation:"The Events API version changed.",documentationUrl:s},{ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"events.subscription",explanation:"Events subscriptions changed.",documentationUrl:s,redaction:"Handles, destinations, topics, triggers, queries, and filters are never included in findings."},{ruleId:"CONFIG_ADDED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was added.",documentationUrl:n},{ruleId:"CONFIG_REMOVED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was removed.",documentationUrl:n},{ruleId:"CONFIG_RENAMED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was renamed.",documentationUrl:n}];const a=new Map(o.map(e=>[e.ruleId,e]));const c={authorization:{level:"high",rationale:"Can change merchant consent, access, or authentication behaviour."},identity:{level:"high",rationale:"Can change the app or environment a deployment targets."},routing:{level:"high",rationale:"Can redirect app, OAuth, proxy, or merchant-facing traffic."},"api-access":{level:"high",rationale:"Can change how the app obtains or uses Admin API access."},"event-delivery":{level:"high",rationale:"Can change event coverage, payload compatibility, or delivery destinations."},"runtime-behaviour":{level:"medium",rationale:"Can change runtime or installation behaviour without directly changing permissions."},"project-discovery":{level:"low",rationale:"Changes which local project paths Shopify CLI discovers."},"configuration-lifecycle":{level:"high",rationale:"Can change which environment configuration is selected for deployment."}};function withRisk(e){const t=c[e.category];return{...e,riskLevel:t.level,riskRationale:t.rationale}}function metadataFor(e,t){const A=a.get(e);if(A)return A;const r=categoryFor(t);return withRisk({ruleId:e,category:r,field:t,explanation:"An internal or otherwise unknown Shopify app configuration value changed.",documentationUrl:s})}function categoryFor(e){if(e.startsWith("access_scopes")||e.startsWith("customer_authentication"))return"authorization";if(e.includes("client_id")||e==="name"||e==="handle")return"identity";if(e.includes("url")||e.includes("proxy")||e.includes("redirect"))return"routing";if(e.startsWith("access.admin"))return"api-access";if(e.startsWith("webhooks")||e.startsWith("events"))return"event-delivery";if(e.startsWith("extension_directories")||e.startsWith("web_directories"))return"project-discovery";if(e.startsWith("configuration"))return"configuration-lifecycle";return"runtime-behaviour"}function ruleCatalogue(){return o.map(e=>({...e}))}for(let e=0;etypeof e==="string"&&e.trim()))throw new Error("[access_scopes].optional_scopes must be an array of non-empty strings");const r=new Set(t.scopes.split(",").map(e=>e.trim()).filter(Boolean));const s=new Set(A.map(e=>e.trim()));const n=[...r].filter(e=>s.has(e));if(n.length>0)throw new Error("Scope cannot be both required and optional: "+n.sort().join(", "));return{required:r,optional:s}}function readOptionalBoolean(e,t){const A=e[t];if(A!==undefined&&typeof A!=="boolean")throw new Error(`${t} must be a boolean`);return A}function readOptionalString(e,t){const A=e[t];if(A!==undefined&&(typeof A!=="string"||!A.trim()))throw new Error(`${t} must be a non-empty string`);return A}function readTable(e,t){const A=e[t];if(A===undefined)return{};if(!isObject(A))throw new Error(`[${t}] must be a table`);return A}function core_readStringSet(e,t){const A=e[t];if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim()))throw new Error(`${t} must be an array of non-empty strings`);return new Set(A.map(e=>e.trim()))}function changedSetFinding(e,t,A,r,s){const n=[...s].filter(e=>!r.has(e)).length;const i=[...r].filter(e=>!s.has(e)).length;if(!n&&!i)return[];return[{ruleId:e,severity:"review",field:t,summary:`${A} changed (added: ${n}; removed: ${i}); review the affected Shopify behaviour`}]}function compareRootSettings(e,t){const A=[];const r=[["embedded","EMBEDDED_MODE_CHANGED","boolean"],["handle","APP_HANDLE_CHANGED","string"],["name","APP_NAME_CHANGED","string"]];for(const[s,n,i]of r){const r=i==="boolean"?readOptionalBoolean(e,s):readOptionalString(e,s);const o=i==="boolean"?readOptionalBoolean(t,s):readOptionalString(t,s);if(r!==o)A.push({ruleId:n,severity:"review",field:s,summary:`${s} changed; review the intended app behaviour and deployment impact`})}const s=isObject(e.access_scopes)?e.access_scopes:{};const n=isObject(t.access_scopes)?t.access_scopes:{};const i=readOptionalBoolean(s,"use_legacy_install_flow");const o=readOptionalBoolean(n,"use_legacy_install_flow");if(i!==o)A.push({ruleId:"LEGACY_INSTALL_FLOW_CHANGED",severity:"review",field:"access_scopes.use_legacy_install_flow",summary:"legacy installation flow setting changed; review OAuth and scope-management behaviour"});const a=readTable(readTable(e,"access"),"admin");const c=readTable(readTable(t,"access"),"admin");const l=readOptionalBoolean(a,"embedded_app_direct_api_access")??false;const h=readOptionalBoolean(c,"embedded_app_direct_api_access")??false;if(l!==h)A.push({ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",severity:"review",field:"access.admin.embedded_app_direct_api_access",summary:"Admin Direct API access was enabled or disabled; review client-side API access and authorization behaviour"});const g=readOptionalString(a,"direct_api_mode")??"online";const u=readOptionalString(c,"direct_api_mode")??"online";if(!["online","offline"].includes(g)||!["online","offline"].includes(u))throw new Error("[access.admin].direct_api_mode must be online or offline");if(g!==u)A.push({ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",severity:"review",field:"access.admin.direct_api_mode",summary:"Admin Direct API access mode changed; review online/offline token expectations"});const E=readTable(e,"customer_authentication");const Q=readTable(t,"customer_authentication");A.push(...changedSetFinding("CUSTOMER_AUTH_REDIRECTS_CHANGED","customer_authentication.redirect_uris","Customer authentication redirect URI set",core_readStringSet(E,"redirect_uris"),core_readStringSet(Q,"redirect_uris")));A.push(...changedSetFinding("CUSTOMER_AUTH_ORIGINS_CHANGED","customer_authentication.javascript_origins","Customer authentication JavaScript origin set",core_readStringSet(E,"javascript_origins"),core_readStringSet(Q,"javascript_origins")));A.push(...changedSetFinding("CUSTOMER_AUTH_LOGOUT_URLS_CHANGED","customer_authentication.logout_urls","Customer authentication logout URL set",core_readStringSet(E,"logout_urls"),core_readStringSet(Q,"logout_urls")));const C=readTable(e,"app_proxy");const B=readTable(t,"app_proxy");const I=Object.keys(C).length>0;const d=Object.keys(B).length>0;if(I!==d)A.push({ruleId:d?"APP_PROXY_ENABLED":"APP_PROXY_DISABLED",severity:"review",field:"app_proxy",summary:`app proxy ${d?"enabled":"disabled"}; review storefront routing and access scope behaviour`});if(readOptionalString(C,"url")!==readOptionalString(B,"url"))A.push({ruleId:"APP_PROXY_DESTINATION_CHANGED",severity:"review",field:"app_proxy.url",summary:"app proxy destination changed; review proxy routing and deployment behaviour"});const f=`${readOptionalString(C,"prefix")??""}/${readOptionalString(C,"subpath")??""}`;const p=`${readOptionalString(B,"prefix")??""}/${readOptionalString(B,"subpath")??""}`;if(f!==p)A.push({ruleId:"APP_PROXY_ROUTE_CHANGED",severity:"review",field:"app_proxy.prefix/subpath",summary:"app proxy storefront route changed; review links, theme integrations and merchant-facing URLs"});const w=readTable(e,"pos");const y=readTable(t,"pos");if(readOptionalBoolean(w,"embedded")!==readOptionalBoolean(y,"embedded"))A.push({ruleId:"POS_EMBEDDED_MODE_CHANGED",severity:"review",field:"pos.embedded",summary:"POS embedded mode changed; review Shopify POS app behaviour"});const m=readTable(e,"app_preferences");const R=readTable(t,"app_preferences");if(readOptionalString(m,"url")!==readOptionalString(R,"url"))A.push({ruleId:"APP_PREFERENCES_URL_CHANGED",severity:"review",field:"app_preferences.url",summary:"app preferences URL changed; review the destination used by merchants"});A.push(...changedSetFinding("EXTENSION_DIRECTORIES_CHANGED","extension_directories","Extension discovery directory set",core_readStringSet(e,"extension_directories"),core_readStringSet(t,"extension_directories")));A.push(...changedSetFinding("WEB_DIRECTORIES_CHANGED","web_directories","Web discovery directory set",core_readStringSet(e,"web_directories"),core_readStringSet(t,"web_directories")));const D=readTable(e,"build");const b=readTable(t,"build");if(readOptionalBoolean(D,"automatically_update_urls_on_dev")!==readOptionalBoolean(b,"automatically_update_urls_on_dev"))A.push({ruleId:"AUTOMATIC_DEV_URLS_CHANGED",severity:"review",field:"build.automatically_update_urls_on_dev",summary:"automatic development URL updates changed; review local tunnel and callback behaviour"});return A}function decorate(e){return e.map(e=>{const t=metadataFor(e.ruleId,e.field);return{...e,category:t.category,documentationUrl:t.documentationUrl,riskLevel:t.riskLevel,riskRationale:t.riskRationale}})}function compareConfigs(e,t){const A=readScopes(e);const r=readScopes(t);const s=[];for(const e of[...A.optional].filter(e=>r.required.has(e)).sort())s.push({ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",severity:"review",field:"access_scopes",summary:`scope changed from optional to required: ${e}`});for(const e of[...A.required].filter(e=>r.optional.has(e)).sort())s.push({ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",severity:"review",field:"access_scopes",summary:`scope changed from required to optional: ${e}`});const compare=(e,t,n)=>{const i=n==="required"?A.optional:A.required;const o=n==="required"?r.optional:r.required;for(const A of[...t].filter(t=>!e.has(t)&&!i.has(t)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_ADDED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope added: ${A}`});for(const A of[...e].filter(e=>!t.has(e)&&!o.has(e)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_REMOVED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope removed: ${A}`})};compare(A.required,r.required,"required");compare(A.optional,r.optional,"optional");s.push(...compareRootSettings(e,t),...compareClientIds(e,t),...compareUrls(e,t),...compareWebhooks(e,t),...compareEvents(e,t));return decorate(s.sort((e,t)=>e.field.localeCompare(t.field)||e.ruleId.localeCompare(t.ruleId)||e.summary.localeCompare(t.summary)))}var l=A(4572);const h=1024*1024;function resolveCommitRef(e){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes(".."))throw new Error("Invalid Git revision");const t=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],process.cwd()).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(t))throw new Error("Invalid resolved Git commit");return t}function git(e,t){try{return(0,r.execFileSync)("git",e,{cwd:t,stdio:["ignore","pipe","pipe"],maxBuffer:h+4096})}catch{throw new Error("Unable to read the requested Git revision or file")}}function readConfigAtRef(e,t){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes("..")){throw new Error("Invalid Git revision")}if(!t||t.startsWith("/")||t.includes("\\")||t.includes(":")||t.split("/").some(e=>!e||e==="."||e==="..")){throw new Error("Invalid repository-relative file path")}const A=git(["rev-parse","--show-toplevel"],process.cwd()).toString("utf8").trim();const r=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],A).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(r)){throw new Error("Invalid resolved Git commit")}const s=git(["ls-tree","-z",r,"--",t],A).toString("utf8");if(!/^100(?:644|755) blob /.test(s))throw new Error("Git configuration must be a regular file");const n=git(["cat-file","blob",`${r}:${t}`],A);if(n.length>h||n.includes(0)){throw new Error("Git configuration must be a text file up to 1 MiB")}try{return(0,l.parse)(n.toString("utf8"))}catch{throw new Error("Invalid TOML in Git revision; contents were not printed")}}const g=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/;const u=/(^|\/)shopify\.app(?:\.[^/]+)?\.toml$/;function gitDiff(e,t){const A=(0,r.spawnSync)("git",["diff","--find-renames=20%","--name-status","-z",e,t,"--"],{encoding:"buffer",maxBuffer:4*1024*1024});if(A.error||A.status!==0)throw new Error("Unable to inspect the Git changes.");const s=A.stdout.toString("utf8").split("\0");if(s.at(-1)==="")s.pop();const n=[];for(let e=0;eu.test(e.path)||(e.previousPath?u.test(e.previousPath):false));if(r.length>50)throw new Error("Too many configuration changes for this review.");const s=[];const n=[];for(const e of r){try{if(e.status==="M"){s.push({status:"M",path:e.path,findings:compareConfigs(readConfigAtRef(A,e.path),readConfigAtRef(t,e.path))})}else if(e.status==="A"){readConfigAtRef(t,e.path);s.push({status:"A",path:e.path,findings:[lifecycleFinding("CONFIG_ADDED","configuration","Shopify app configuration file added; review the new environment and its deployment selection")]})}else if(e.status==="D"){s.push({status:"D",path:e.path,findings:[lifecycleFinding("CONFIG_REMOVED","configuration","Shopify app configuration file removed; review which environment remains deployable")]})}else{readConfigAtRef(A,e.previousPath??e.path);readConfigAtRef(t,e.path);s.push({status:"R",previousPath:e.previousPath,path:e.path,findings:[lifecycleFinding("CONFIG_RENAMED","configuration","Shopify app configuration file renamed; review environment selection and deployment workflows"),...compareConfigs(readConfigAtRef(A,e.previousPath??e.path),readConfigAtRef(t,e.path))]})}}catch{n.push({path:e.path,reason:"Configuration could not be analyzed."})}}const i=[...new Set(s.flatMap(e=>e.findings.map(e=>e.ruleId)))].sort();return{schemaVersion:1,note:"Review only; not deployment approval.",files:s,unreviewed:n,changedFileCount:r.length,reviewedFileCount:s.length,unreviewedFileCount:n.length,ruleIds:i}}function reviewPullRequest(e,t){return reviewGitRange(e,t)}},4508:(e,t,A)=>{A.d(t,{E:()=>matchesRiskThreshold,p:()=>validateRiskThreshold});const r={low:1,medium:2,high:3};function validateRiskThreshold(e){if(!["none","low","medium","high"].includes(e))throw new Error("fail_on_risk must be one of: none, low, medium, high")}function matchesRiskThreshold(e,t){if(t==="none")return false;return e.some(e=>r[e.riskLevel??"medium"]>=r[t])}},3720:(e,t,A)=>{A.d(t,{B:()=>renderSummary});function renderSummary(e){if(!Array.isArray(e.files)||!Array.isArray(e.unreviewed)){throw new Error("Invalid ChangeGuard report.")}const t=new Map;const A=new Map;const r=new Map;const s=new Map;let n=0;for(const i of e.files){if(!Array.isArray(i.findings))throw new Error("Invalid findings.");for(const e of i.findings){if(typeof e.ruleId!=="string"||!/^[A-Z][A-Z0-9_]{0,79}$/.test(e.ruleId)){throw new Error("Invalid rule ID.")}t.set(e.ruleId,(t.get(e.ruleId)??0)+1);if(e.category)A.set(e.category,(A.get(e.category)??0)+1);if(e.documentationUrl)r.set(e.ruleId,e.documentationUrl);if(e.riskLevel!==undefined){if(!["low","medium","high"].includes(e.riskLevel))throw new Error("Invalid risk level.");s.set(e.riskLevel,(s.get(e.riskLevel)??0)+1)}n++}}const i=["## ChangeGuard review","","> Review only; not deployment approval.","",`- Configuration files reviewed: ${e.reviewedFileCount??e.files.length}`,`- Review findings: ${n}`,`- Unreviewable configurations: ${e.unreviewedFileCount??e.unreviewed.length}`,"","### Review status",""];if(s.size){i.push("","### Findings by risk","","| Risk | Count |","| --- | ---: |");for(const e of["high","medium","low"])if(s.has(e))i.push(`| ${e} | ${s.get(e)} |`);const e=["high","medium","low"].find(e=>s.has(e));i.push("",`Highest risk: **${e}**.`)}if(e.unreviewed.length>0){i.push("**Review incomplete:** Some configurations could not be analysed. The configured failure policy determines the check result.")}else if(n>0){i.push("**Manual review recommended:** Supported-field changes were found. The configured failure policy determines the check result.")}else{i.push("**No supported-field changes detected.** This is not a deployment or security approval.")}if(t.size){i.push("","### Findings by rule","","| Rule | Count |","| --- | ---: |");for(const[e,A]of[...t].sort())i.push(`| ${e} | ${A} |`);if(A.size){i.push("","### Findings by category","","| Category | Count |","| --- | ---: |");for(const[e,t]of[...A].sort())i.push(`| ${e} | ${t} |`)}if(r.size){i.push("","### Rule documentation","");for(const[e,t]of[...r].sort())i.push(`- [${e}](${t})`)}}if(e.unreviewed.length)i.push("","Some configurations could not be reviewed.","See the JSON logs for details.");return`${i.join("\n")}\n`}},3218:(e,t,A)=>{A.d(t,{V4:()=>getInput,C1:()=>setFailed,uH:()=>setOutput,z:()=>N,$e:()=>warning});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("os");function utils_toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}function utils_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}}function command_issueCommand(e,t,A){const s=new Command(e,t,A);process.stdout.write(s.toString()+r.EOL)}function command_issue(e,t=""){command_issueCommand(e,{},t)}const s="::";class Command{constructor(e,t,A){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=A}toString(){let e=s+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 r=this.properties[A];if(r){if(t){t=false}else{e+=","}e+=`${A}=${escapeProperty(r)}`}}}}e+=`${s}${escapeData(this.message)}`;return e}}function escapeData(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}const n=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("crypto");const i=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs");function file_command_issueFileCommand(e,t){const A=process.env[`GITHUB_${e}`];if(!A){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!i.existsSync(A)){throw new Error(`Missing file at path: ${A}`)}i.appendFileSync(A,`${utils_toCommandValue(t)}${r.EOL}`,{encoding:"utf8"})}function file_command_prepareKeyValueMessage(e,t){const A=`ghadelimiter_${n.randomUUID()}`;const s=utils_toCommandValue(t);if(e.includes(A)){throw new Error(`Unexpected input: name should not contain the delimiter "${A}"`)}if(s.includes(A)){throw new Error(`Unexpected input: value should not contain the delimiter "${A}"`)}return`${e}<<${A}${r.EOL}${s}${r.EOL}${A}`}const o=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("path");var a=A(8611);var c=A(5692);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 DecodedURL(A)}catch(e){if(!A.startsWith("http://")&&!A.startsWith("https://"))return new DecodedURL(`http://${A}`)}}else{return undefined}}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 r;if(e.port){r=Number(e.port)}else if(e.protocol==="http:"){r=80}else if(e.protocol==="https:"){r=443}const s=[e.hostname.toUpperCase()];if(typeof r==="number"){s.push(`${s[0]}:${r}`)}for(const e of A.split(",").map(e=>e.trim().toUpperCase()).filter(e=>e)){if(e==="*"||s.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(".")&&t.endsWith(`${e}`))){return true}}return false}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]")}class DecodedURL extends URL{constructor(e,t){super(e,t);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}var l=A(770);var h=A(6752);var g=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var u;(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"})(u||(u={}));var E;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(E||(E={}));var Q;(function(e){e["ApplicationJson"]="application/json"})(Q||(Q={}));function lib_getProxyUrl(e){const t=pm.getProxyUrl(new URL(e));return t?t.href:""}const C=[u.MovedPermanently,u.ResourceMoved,u.SeeOther,u.TemporaryRedirect,u.PermanentRedirect];const B=[u.BadGateway,u.ServiceUnavailable,u.GatewayTimeout];const I=null&&["OPTIONS","GET","DELETE","HEAD"];const d=10;const f=5;class HttpClientError extends Error{constructor(e,t){super(e);this.name="HttpClientError";this.statusCode=t;Object.setPrototypeOf(this,HttpClientError.prototype)}}class HttpClientResponse{constructor(e){this.message=e}readBody(){return g(this,void 0,void 0,function*(){return new Promise(e=>g(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 g(this,void 0,void 0,function*(){return new Promise(e=>g(this,void 0,void 0,function*(){const t=[];this.message.on("data",e=>{t.push(e)});this.message.on("end",()=>{e(Buffer.concat(t))})}))})}}function isHttps(e){const t=new URL(e);return t.protocol==="https:"}class lib_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=this._getUserAgentWithOrchestrationId(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 g(this,void 0,void 0,function*(){return this.request("OPTIONS",e,null,t||{})})}get(e,t){return g(this,void 0,void 0,function*(){return this.request("GET",e,null,t||{})})}del(e,t){return g(this,void 0,void 0,function*(){return this.request("DELETE",e,null,t||{})})}post(e,t,A){return g(this,void 0,void 0,function*(){return this.request("POST",e,t,A||{})})}patch(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PATCH",e,t,A||{})})}put(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PUT",e,t,A||{})})}head(e,t){return g(this,void 0,void 0,function*(){return this.request("HEAD",e,null,t||{})})}sendStream(e,t,A,r){return g(this,void 0,void 0,function*(){return this.request(e,t,A,r)})}getJson(e){return g(this,arguments,void 0,function*(e,t={}){t[E.Accept]=this._getExistingOrDefaultHeader(t,E.Accept,Q.ApplicationJson);const A=yield this.get(e,t);return this._processResponse(A,this.requestOptions)})}postJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.post(e,r,A);return this._processResponse(s,this.requestOptions)})}putJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.put(e,r,A);return this._processResponse(s,this.requestOptions)})}patchJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.patch(e,r,A);return this._processResponse(s,this.requestOptions)})}request(e,t,A,r){return g(this,void 0,void 0,function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const s=new URL(t);let n=this._prepareRequest(e,s,r);const i=this._allowRetries&&I.includes(e)?this._maxRetries+1:1;let o=0;let a;do{a=yield this.requestRaw(n,A);if(a&&a.message&&a.message.statusCode===u.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(a)){e=t;break}}if(e){return e.handleAuthentication(this,n,A)}else{return a}}let t=this._maxRedirects;while(a.message.statusCode&&C.includes(a.message.statusCode)&&this._allowRedirects&&t>0){const i=a.message.headers["location"];if(!i){break}const o=new URL(i);if(s.protocol==="https:"&&s.protocol!==o.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(o.hostname!==s.hostname){for(const e in r){if(e.toLowerCase()==="authorization"){delete r[e]}}}n=this._prepareRequest(e,o,r);a=yield this.requestRaw(n,A);t--}if(!a.message.statusCode||!B.includes(a.message.statusCode)){return a}o+=1;if(o{function callbackForResult(e,t){if(e){r(e)}else if(!t){r(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 r=false;function handleResult(e,t){if(!r){r=true;A(e,t)}}const s=e.httpModule.request(e.options,e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)});let n;s.on("socket",e=>{n=e});s.setTimeout(this._socketTimeout||3*6e4,()=>{if(n){n.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))});s.on("error",function(e){handleResult(e)});if(t&&typeof t==="string"){s.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",function(){s.end()});t.pipe(s)}else{s.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){const t=new URL(e);const A=pm.getProxyUrl(t);const r=A&&A.hostname;if(!r){return}return this._getProxyAgentDispatcher(t,A)}_prepareRequest(e,t,A){const r={};r.parsedUrl=t;const s=r.parsedUrl.protocol==="https:";r.httpModule=s?https:http;const n=s?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):n;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=e;r.options.headers=this._mergeHeaders(A);if(this.userAgent!=null){r.options.headers["user-agent"]=this.userAgent}r.options.agent=this._getAgent(r.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(r.options)}}return r}_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 r;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[t];if(e){r=typeof e==="number"?e.toString():e}}const s=e[t];if(s!==undefined){return typeof s==="number"?s.toString():s}if(r!==undefined){return r}return A}_getExistingOrDefaultContentTypeHeader(e,t){let A;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[E.ContentType];if(e){if(typeof e==="number"){A=String(e)}else if(Array.isArray(e)){A=e.join(", ")}else{A=e}}}const r=e[E.ContentType];if(r!==undefined){if(typeof r==="number"){return String(r)}else if(Array.isArray(r)){return r.join(", ")}else{return r}}if(A!==undefined){return A}return t}_getAgent(e){let t;const A=pm.getProxyUrl(e);const r=A&&A.hostname;if(this._keepAlive&&r){t=this._proxyAgent}if(!r){t=this._agent}if(t){return t}const s=e.protocol==="https:";let n=100;if(this.requestOptions){n=this.requestOptions.maxSockets||http.globalAgent.maxSockets}if(A&&A.hostname){const e={maxSockets:n,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(A.username||A.password)&&{proxyAuth:`${A.username}:${A.password}`}),{host:A.hostname,port:A.port})};let r;const i=A.protocol==="https:";if(s){r=i?tunnel.httpsOverHttps:tunnel.httpsOverHttp}else{r=i?tunnel.httpOverHttps:tunnel.httpOverHttp}t=r(e);this._proxyAgent=t}if(!t){const e={keepAlive:this._keepAlive,maxSockets:n};t=s?new https.Agent(e):new http.Agent(e);this._agent=t}if(s&&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 r=e.protocol==="https:";A=new ProxyAgent(Object.assign({uri:t.href,pipelining:!this._keepAlive?0:1},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString("base64")}`}));this._proxyAgentDispatcher=A;if(r&&this._ignoreSslError){A.options=Object.assign(A.options.requestTls||{},{rejectUnauthorized:false})}return A}_getUserAgentWithOrchestrationId(e){const t=e||"actions/http-client";const A=process.env["ACTIONS_ORCHESTRATION_ID"];if(A){const e=A.replace(/[^a-z0-9_.-]/gi,"_");return`${t} actions_orchestration_id/${e}`}return t}_performExponentialBackoff(e){return g(this,void 0,void 0,function*(){e=Math.min(d,e);const t=f*Math.pow(2,e);return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return g(this,void 0,void 0,function*(){return new Promise((A,r)=>g(this,void 0,void 0,function*(){const s=e.message.statusCode||0;const n={statusCode:s,result:null,headers:{}};if(s===u.NotFound){A(n)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let i;let o;try{o=yield e.readBody();if(o&&o.length>0){if(t&&t.deserializeDates){i=JSON.parse(o,dateTimeDeserializer)}else{i=JSON.parse(o)}n.result=i}n.headers=e.message.headers}catch(e){}if(s>299){let e;if(i&&i.message){e=i.message}else if(o&&o.length>0){e=o}else{e=`Failed request: (${s})`}const t=new HttpClientError(e,s);t.result=n.result;r(t)}else{A(n)}}))})}}const lowercaseKeys=e=>Object.keys(e).reduce((t,A)=>(t[A.toLowerCase()]=e[A],t),{});var p=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}class auth_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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}var w=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};class oidc_utils_OidcClient{static createHttpClient(e=true,t=10){const A={allowRetries:e,maxRetries:t};return new HttpClient("actions/oidc-client",[new BearerCredentialHandler(oidc_utils_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){return w(this,void 0,void 0,function*(){var t;const A=oidc_utils_OidcClient.createHttpClient();const r=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 s=(t=r.result)===null||t===void 0?void 0:t.value;if(!s){throw new Error("Response json body do not have ID Token field")}return s})}static getIDToken(e){return w(this,void 0,void 0,function*(){try{let t=oidc_utils_OidcClient.getIDTokenUrl();if(e){const A=encodeURIComponent(e);t=`${t}&audience=${A}`}debug(`ID token url is ${t}`);const A=yield oidc_utils_OidcClient.getCall(t);setSecret(A);return A}catch(e){throw new Error(`Error message: ${e.message}`)}})}}var y=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{access:m,appendFile:R,writeFile:D}=i.promises;const b="GITHUB_STEP_SUMMARY";const k="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return y(this,void 0,void 0,function*(){if(this._filePath){return this._filePath}const e=process.env[b];if(!e){throw new Error(`Unable to find environment variable for $${b}. Check if your runtime environment supports job summaries.`)}try{yield m(e,i.constants.R_OK|i.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 r=Object.entries(A).map(([e,t])=>` ${e}="${t}"`).join("");if(!t){return`<${e}${r}>`}return`<${e}${r}>${t}`}write(e){return y(this,void 0,void 0,function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const A=yield this.filePath();const r=t?D:R;yield r(A,this._buffer,{encoding:"utf8"});return this.emptyBuffer()})}clear(){return y(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(r.EOL)}addCodeBlock(e,t){const A=Object.assign({},t&&{lang:t});const r=this.wrap("pre",this.wrap("code",e),A);return this.addRaw(r).addEOL()}addList(e,t=false){const A=t?"ol":"ul";const r=e.map(e=>this.wrap("li",e)).join("");const s=this.wrap(A,r);return this.addRaw(s).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:r,rowspan:s}=e;const n=t?"th":"td";const i=Object.assign(Object.assign({},r&&{colspan:r}),s&&{rowspan:s});return this.wrap(n,A,i)}).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:r,height:s}=A||{};const n=Object.assign(Object.assign({},r&&{width:r}),s&&{height:s});const i=this.wrap("img",null,Object.assign({src:e,alt:t},n));return this.addRaw(i).addEOL()}addHeading(e,t){const A=`h${t}`;const r=["h1","h2","h3","h4","h5","h6"].includes(A)?A:"h1";const s=this.wrap(r,e);return this.addRaw(s).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 r=this.wrap("blockquote",e,A);return this.addRaw(r).addEOL()}addLink(e,t){const A=this.wrap("a",e,{href:t});return this.addRaw(A).addEOL()}}const S=new Summary;const F=null&&S;const N=S;function toPosixPath(e){return e.replace(/[\\]/g,"/")}function toWin32Path(e){return e.replace(/[/]/g,"\\")}function toPlatformPath(e){return e.replace(/[/\\]/g,path.sep)}var U=A(3193);var T=A(4434);const M=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("child_process");var L=A(2613);var v=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{chmod:H,copyFile:x,lstat:G,mkdir:Y,open:J,readdir:_,rename:V,rm:O,rmdir:P,stat:W,symlink:q,unlink:Z}=i.promises;const z=process.platform==="win32";function readlink(e){return v(this,void 0,void 0,function*(){const t=yield fs.promises.readlink(e);if(z&&!t.endsWith("\\")){return`${t}\\`}return t})}const K=268435456;const X=i.constants.O_RDONLY;function exists(e){return v(this,void 0,void 0,function*(){try{yield W(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}function isDirectory(e){return v(this,arguments,void 0,function*(e,t=false){const A=t?yield W(e):yield G(e);return A.isDirectory()})}function isRooted(e){e=normalizeSeparators(e);if(!e){throw new Error('isRooted() parameter "p" cannot be empty')}if(z){return e.startsWith("\\")||/^[A-Z]:/i.test(e)}return e.startsWith("/")}function tryGetExecutablePath(e,t){return v(this,void 0,void 0,function*(){let A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){const A=o.extname(e).toUpperCase();if(t.some(e=>e.toUpperCase()===A)){return e}}else{if(isUnixExecutable(A)){return e}}}const r=e;for(const s of t){e=r+s;A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){try{const t=o.dirname(e);const A=o.basename(e).toUpperCase();for(const r of yield _(t)){if(A===r.toUpperCase()){e=o.join(t,r);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(A)){return e}}}}return""})}function normalizeSeparators(e){e=e||"";if(z){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==undefined&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==undefined&&e.uid===process.getuid()}function getCmdPath(){var e;return(e=process.env["COMSPEC"])!==null&&e!==void 0?e:`cmd.exe`}var j=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function cp(e,t){return j(this,arguments,void 0,function*(e,t,A={}){const{force:r,recursive:s,copySourceDirectory:n}=readCopyOptions(A);const i=(yield ioUtil.exists(t))?yield ioUtil.stat(t):null;if(i&&i.isFile()&&!r){return}const o=i&&i.isDirectory()&&n?path.join(t,path.basename(e)):t;if(!(yield ioUtil.exists(e))){throw new Error(`no such file or directory: ${e}`)}const a=yield ioUtil.stat(e);if(a.isDirectory()){if(!s){throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(e,o,0,r)}}else{if(path.relative(e,o)===""){throw new Error(`'${o}' and '${e}' are the same file`)}yield io_copyFile(e,o,r)}})}function mv(e,t){return j(this,arguments,void 0,function*(e,t,A={}){if(yield ioUtil.exists(t)){let r=true;if(yield ioUtil.isDirectory(t)){t=path.join(t,path.basename(e));r=yield ioUtil.exists(t)}if(r){if(A.force==null||A.force){yield rmRF(t)}else{throw new Error("Destination already exists")}}}yield mkdirP(path.dirname(t));yield ioUtil.rename(e,t)})}function rmRF(e){return j(this,void 0,void 0,function*(){if(ioUtil.IS_WINDOWS){if(/[*"<>|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield ioUtil.rm(e,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}})}function mkdirP(e){return j(this,void 0,void 0,function*(){ok(e,"a path argument must be provided");yield ioUtil.mkdir(e,{recursive:true})})}function which(e,t){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(z){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return t}const A=yield findInPath(e);if(A&&A.length>0){return A[0]}return""})}function findInPath(e){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}const t=[];if(z&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(o.delimiter)){if(e){t.push(e)}}}if(isRooted(e)){const A=yield tryGetExecutablePath(e,t);if(A){return[A]}return[]}if(e.includes(o.sep)){return[]}const A=[];if(process.env.PATH){for(const e of process.env.PATH.split(o.delimiter)){if(e){A.push(e)}}}const r=[];for(const s of A){const A=yield tryGetExecutablePath(o.join(s,e),t);if(A){r.push(A)}}return r})}function readCopyOptions(e){const t=e.force==null?true:e.force;const A=Boolean(e.recursive);const r=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:t,recursive:A,copySourceDirectory:r}}function cpDirRecursive(e,t,A,r){return j(this,void 0,void 0,function*(){if(A>=255)return;A++;yield mkdirP(t);const s=yield ioUtil.readdir(e);for(const n of s){const s=`${e}/${n}`;const i=`${t}/${n}`;const o=yield ioUtil.lstat(s);if(o.isDirectory()){yield cpDirRecursive(s,i,A,r)}else{yield io_copyFile(s,i,r)}}yield ioUtil.chmod(t,(yield ioUtil.stat(e)).mode)})}function io_copyFile(e,t,A){return j(this,void 0,void 0,function*(){if((yield ioUtil.lstat(e)).isSymbolicLink()){try{yield ioUtil.lstat(t);yield ioUtil.unlink(t)}catch(e){if(e.code==="EPERM"){yield ioUtil.chmod(t,"0666");yield ioUtil.unlink(t)}}const A=yield ioUtil.readlink(e);yield ioUtil.symlink(A,t,ioUtil.IS_WINDOWS?"junction":null)}else if(!(yield ioUtil.exists(t))||A){yield ioUtil.copyFile(e,t)}})}const $=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("timers");var ee=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const te=process.platform==="win32";class ToolRunner extends T.EventEmitter{constructor(e,t,A){super();if(!e){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=e;this.args=t||[];this.options=A||{}}_debug(e){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(e)}}_getCommandString(e,t){const A=this._getSpawnFileName();const r=this._getSpawnArgs(e);let s=t?"":"[command]";if(te){if(this._isCmdFile()){s+=A;for(const e of r){s+=` ${e}`}}else if(e.windowsVerbatimArguments){s+=`"${A}"`;for(const e of r){s+=` ${e}`}}else{s+=this._windowsQuoteCmdArg(A);for(const e of r){s+=` ${this._windowsQuoteCmdArg(e)}`}}}else{s+=A;for(const e of r){s+=` ${e}`}}return s}_processLineBuffer(e,t,A){try{let s=t+e.toString();let n=s.indexOf(r.EOL);while(n>-1){const e=s.substring(0,n);A(e);s=s.substring(n+r.EOL.length);n=s.indexOf(r.EOL)}return s}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(te){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(te){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const A of this.args){t+=" ";t+=e.windowsVerbatimArguments?A:this._windowsQuoteCmdArg(A)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let A=false;for(const r of e){if(t.some(e=>e===r)){A=true;break}}if(!A){return e}let r='"';let s=true;for(let t=e.length;t>0;t--){r+=e[t-1];if(s&&e[t-1]==="\\"){r+="\\"}else if(e[t-1]==='"'){s=true;r+='"'}else{s=false}}r+='"';return r.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let A=true;for(let r=e.length;r>0;r--){t+=e[r-1];if(A&&e[r-1]==="\\"){t+="\\"}else if(e[r-1]==='"'){A=true;t+="\\"}else{A=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const A={};A.cwd=e.cwd;A.env=e.env;A["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){A.argv0=`"${t}"`}return A}exec(){return ee(this,void 0,void 0,function*(){if(!isRooted(this.toolPath)&&(this.toolPath.includes("/")||te&&this.toolPath.includes("\\"))){this.toolPath=o.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield which(this.toolPath,true);return new Promise((e,t)=>ee(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const A=this._cloneExecOptions(this.options);if(!A.silent&&A.outStream){A.outStream.write(this._getCommandString(A)+r.EOL)}const s=new ExecState(A,this.toolPath);s.on("debug",e=>{this._debug(e)});if(this.options.cwd&&!(yield exists(this.options.cwd))){return t(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const n=this._getSpawnFileName();const i=M.spawn(n,this._getSpawnArgs(A),this._getSpawnOptions(this.options,n));let o="";if(i.stdout){i.stdout.on("data",e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!A.silent&&A.outStream){A.outStream.write(e)}o=this._processLineBuffer(e,o,e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}})})}let a="";if(i.stderr){i.stderr.on("data",e=>{s.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!A.silent&&A.errStream&&A.outStream){const t=A.failOnStdErr?A.errStream:A.outStream;t.write(e)}a=this._processLineBuffer(e,a,e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}})})}i.on("error",e=>{s.processError=e.message;s.processExited=true;s.processClosed=true;s.CheckComplete()});i.on("exit",e=>{s.processExitCode=e;s.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);s.CheckComplete()});i.on("close",e=>{s.processExitCode=e;s.processExited=true;s.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);s.CheckComplete()});s.on("done",(A,r)=>{if(o.length>0){this.emit("stdline",o)}if(a.length>0){this.emit("errline",a)}i.removeAllListeners();if(A){t(A)}else{e(r)}});if(this.options.input){if(!i.stdin){throw new Error("child process missing stdin")}i.stdin.end(this.options.input)}}))})}}function argStringToArray(e){const t=[];let A=false;let r=false;let s="";function append(e){if(r&&e!=='"'){s+="\\"}s+=e;r=false}for(let n=0;n0){t.push(s);s=""}continue}append(i)}if(s.length>0){t.push(s.trim())}return t}class ExecState extends T.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,$.setTimeout)(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}var Ae=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function exec_exec(e,t,A){return Ae(this,void 0,void 0,function*(){const r=tr.argStringToArray(e);if(r.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const s=r[0];t=r.slice(1).concat(t||[]);const n=new tr.ToolRunner(s,t,A);return n.exec()})}function getExecOutput(e,t,A){return Ae(this,void 0,void 0,function*(){var r,s;let n="";let i="";const o=new StringDecoder("utf8");const a=new StringDecoder("utf8");const c=(r=A===null||A===void 0?void 0:A.listeners)===null||r===void 0?void 0:r.stdout;const l=(s=A===null||A===void 0?void 0:A.listeners)===null||s===void 0?void 0:s.stderr;const stdErrListener=e=>{i+=a.write(e);if(l){l(e)}};const stdOutListener=e=>{n+=o.write(e);if(c){c(e)}};const h=Object.assign(Object.assign({},A===null||A===void 0?void 0:A.listeners),{stdout:stdOutListener,stderr:stdErrListener});const g=yield exec_exec(e,t,Object.assign(Object.assign({},A),{listeners:h}));n+=o.end();i+=a.end();return{exitCode:g,stdout:n,stderr:i}})}var re=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const getWindowsInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',undefined,{silent:true});const{stdout:t}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',undefined,{silent:true});return{name:t.trim(),version:e.trim()}});const getMacOsInfo=()=>re(void 0,void 0,void 0,function*(){var e,t,A,r;const{stdout:s}=yield exec.getExecOutput("sw_vers",undefined,{silent:true});const n=(t=(e=s.match(/ProductVersion:\s*(.+)/))===null||e===void 0?void 0:e[1])!==null&&t!==void 0?t:"";const i=(r=(A=s.match(/ProductName:\s*(.+)/))===null||A===void 0?void 0:A[1])!==null&&r!==void 0?r:"";return{name:i,version:n}});const getLinuxInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput("lsb_release",["-i","-r","-s"],{silent:true});const[t,A]=e.trim().split("\n");return{name:t,version:A}});const se=r.platform();const ne=r.arch();const ie=se==="win32";const oe=se==="darwin";const ae=se==="linux";function getDetails(){return re(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield ie?getWindowsInfo():oe?getMacOsInfo():getLinuxInfo()),{platform:se,arch:ne,isWindows:ie,isMacOS:oe,isLinux:ae})})}var ce=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var le;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(le||(le={}));function exportVariable(e,t){const A=toCommandValue(t);process.env[e]=A;const r=process.env["GITHUB_ENV"]||"";if(r){return issueFileCommand("ENV",prepareKeyValueMessage(e,t))}issueCommand("set-env",{name:e},A)}function core_setSecret(e){issueCommand("add-mask",{},e)}function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){issueFileCommand("PATH",e)}else{issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${path.delimiter}${process.env["PATH"]}`}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()}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())}function getBooleanInput(e,t){const A=["true","True","TRUE"];const r=["false","False","FALSE"];const s=getInput(e,t);if(A.includes(s))return true;if(r.includes(s))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\``)}function setOutput(e,t){const A=process.env["GITHUB_OUTPUT"]||"";if(A){return file_command_issueFileCommand("OUTPUT",file_command_prepareKeyValueMessage(e,t))}process.stdout.write(r.EOL);command_issueCommand("set-output",{name:e},utils_toCommandValue(t))}function setCommandEcho(e){issue("echo",e?"on":"off")}function setFailed(e){process.exitCode=le.Failure;error(e)}function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}function core_debug(e){issueCommand("debug",{},e)}function error(e,t={}){command_issueCommand("error",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function warning(e,t={}){command_issueCommand("warning",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function notice(e,t={}){issueCommand("notice",toCommandProperties(t),e instanceof Error?e.toString():e)}function info(e){process.stdout.write(e+os.EOL)}function startGroup(e){issue("group",e)}function endGroup(){issue("endgroup")}function group(e,t){return ce(this,void 0,void 0,function*(){startGroup(e);let A;try{A=yield t()}finally{endGroup()}return A})}function saveState(e,t){const A=process.env["GITHUB_STATE"]||"";if(A){return issueFileCommand("STATE",prepareKeyValueMessage(e,t))}issueCommand("save-state",{name:e},toCommandValue(t))}function getState(e){return process.env[`STATE_${e}`]||""}function getIDToken(e){return ce(this,void 0,void 0,function*(){return yield OidcClient.getIDToken(e)})}}};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 r=true;try{__webpack_modules__[e](A,A.exports,__nccwpck_require__);r=false}finally{if(r)delete __webpack_module_cache__[e]}return A.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=decodeURIComponent(new URL(".",import.meta.url).pathname).slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";(()=>{var e=typeof Symbol==="function"?Symbol("webpack queues"):"__webpack_queues__";var t=typeof Symbol==="function"?Symbol("webpack exports"):"__webpack_exports__";var A=typeof Symbol==="function"?Symbol("webpack error"):"__webpack_error__";var resolveQueue=e=>{if(e&&e.d<1){e.d=1;e.forEach(e=>e.r--);e.forEach(e=>e.r--?e.r++:e())}};var wrapDeps=r=>r.map(r=>{if(r!==null&&typeof r==="object"){if(r[e])return r;if(r.then){var s=[];s.d=0;r.then(e=>{n[t]=e;resolveQueue(s)},e=>{n[A]=e;resolveQueue(s)});var n={};n[e]=e=>e(s);return n}}var i={};i[e]=e=>{};i[t]=r;return i});__nccwpck_require__.a=(r,s,n)=>{var i;n&&((i=[]).d=-1);var o=new Set;var a=r.exports;var c;var l;var h;var g=new Promise((e,t)=>{h=t;l=e});g[t]=a;g[e]=e=>(i&&e(i),o.forEach(e),g["catch"](e=>{}));r.exports=g;s(r=>{c=wrapDeps(r);var s;var getResult=()=>c.map(e=>{if(e[A])throw e[A];return e[t]});var n=new Promise(t=>{s=()=>t(getResult);s.r=0;var fnQueue=e=>e!==i&&!o.has(e)&&(o.add(e),e&&!e.d&&(s.r++,e.push(s)));c.map(t=>t[e](fnQueue))});return s.r?n:getResult()},e=>(e?h(g[A]=e):l(a),resolveQueue(i)));i&&i.d<0&&(i.d=0)}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var A in t){if(__nccwpck_require__.o(t,A)&&!__nccwpck_require__.o(e,A)){Object.defineProperty(e,A,{enumerable:true,get:t[A]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();var __webpack_exports__=__nccwpck_require__(6628);__webpack_exports__=await __webpack_exports__; \ No newline at end of file +/*! ws. MIT License. Einar Otto Stangvik */o[i-4]=A[0];o[i-3]=A[1];o[i-2]=A[2];o[i-1]=A[3];o[1]=n;if(n===126){o.writeUInt16BE(s,2)}else if(n===127){o[2]=o[3]=0;o.writeUIntBE(s,4,6)}o[1]|=128;for(let e=0;e{const{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:s}=A(8522);const{isValidClientWindowBits:n}=A(8625);const{MessageSizeExceededError:i}=A(8707);const o=Buffer.from([0,0,255,255]);const a=Symbol("kBuffer");const c=Symbol("kLength");class PerMessageDeflate{#j;#Q={};#$=0;constructor(e,t){this.#Q.serverNoContextTakeover=e.has("server_no_context_takeover");this.#Q.serverMaxWindowBits=e.get("server_max_window_bits");this.#$=t.maxPayloadSize}decompress(e,t,A){if(!this.#j){let e=s;if(this.#Q.serverMaxWindowBits){if(!n(this.#Q.serverMaxWindowBits)){A(new Error("Invalid server_max_window_bits"));return}e=Number.parseInt(this.#Q.serverMaxWindowBits)}try{this.#j=r({windowBits:e})}catch(e){A(e);return}this.#j[a]=[];this.#j[c]=0;this.#j.on("data",e=>{this.#j[c]+=e.length;if(this.#$>0&&this.#j[c]>this.#$){A(new i);this.#j.removeAllListeners();this.#j.destroy();this.#j=null;return}this.#j[a].push(e)});this.#j.on("error",e=>{this.#j=null;A(e)})}this.#j.write(e);if(t){this.#j.write(o)}this.#j.flush(()=>{if(!this.#j){return}const e=Buffer.concat(this.#j[a],this.#j[c]);this.#j[a].length=0;this.#j[c]=0;A(null,e)})}}e.exports={PerMessageDeflate:PerMessageDeflate}},1652:(e,t,A)=>{const{Writable:r}=A(7075);const s=A(4589);const{parserStates:n,opcodes:i,states:o,emptyBuffer:a,sentCloseFrameState:c}=A(736);const{kReadyState:l,kSentClose:h,kResponse:g,kReceivedClose:u}=A(1216);const{channels:E}=A(2414);const{isValidStatusCode:Q,isValidOpcode:C,failWebsocketConnection:B,websocketMessageReceived:I,utf8Decode:d,isControlFrame:f,isTextBinaryFrame:p,isContinuationFrame:w}=A(8625);const{WebsocketFrameSend:y}=A(3264);const{closeWebSocketConnection:m}=A(6897);const{PerMessageDeflate:R}=A(9469);const{MessageSizeExceededError:D}=A(8707);function failWebsocketConnectionWithCode(e,t,A){m(e,t,A,Buffer.byteLength(A));B(e,A)}class ByteParser extends r{#ee=[];#te=0;#Ae=0;#re=false;#w=n.INFO;#se={};#ne=[];#ie;#oe;#$;constructor(e,t,A={}){super();this.ws=e;this.#ie=t==null?new Map:t;this.#oe=A.maxFragments??0;this.#$=A.maxPayloadSize??0;if(this.#ie.has("permessage-deflate")){this.#ie.set("permessage-deflate",new R(t,A))}}_write(e,t,A){this.#ee.push(e);this.#Ae+=e.length;this.#re=true;this.run(A)}#ae(){if(this.#$>0&&!f(this.#se.opcode)&&this.#se.payloadLength+this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(e){while(this.#re){if(this.#w===n.INFO){if(this.#Ae<2){return e()}const t=this.consume(2);const A=(t[0]&128)!==0;const r=t[0]&15;const s=(t[1]&128)===128;const o=!A&&r!==i.CONTINUATION;const a=t[1]&127;const c=t[0]&64;const l=t[0]&32;const h=t[0]&16;if(!C(r)){B(this.ws,"Invalid opcode received");return e()}if(s){B(this.ws,"Frame cannot be masked");return e()}if(c!==0&&!this.#ie.has("permessage-deflate")){B(this.ws,"Expected RSV1 to be clear.");return}if(l!==0||h!==0){B(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(o&&!p(r)){B(this.ws,"Invalid frame type was fragmented.");return}if(p(r)&&this.#ne.length>0){B(this.ws,"Expected continuation frame");return}if(this.#se.fragmented&&o){B(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((a>125||o)&&f(r)){B(this.ws,"Control frame either too large or fragmented");return}if(w(r)&&this.#ne.length===0&&!this.#se.compressed){B(this.ws,"Unexpected continuation frame");return}if(a<=125){this.#se.payloadLength=a;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(a===126){this.#w=n.PAYLOADLENGTH_16}else if(a===127){this.#w=n.PAYLOADLENGTH_64}if(p(r)){this.#se.binaryType=r;this.#se.compressed=c!==0}this.#se.opcode=r;this.#se.masked=s;this.#se.fin=A;this.#se.fragmented=o}else if(this.#w===n.PAYLOADLENGTH_16){if(this.#Ae<2){return e()}const t=this.consume(2);this.#se.payloadLength=t.readUInt16BE(0);this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.PAYLOADLENGTH_64){if(this.#Ae<8){return e()}const t=this.consume(8);const A=t.readUInt32BE(0);const r=t.readUInt32BE(4);if(A!==0||r>2**31-1){B(this.ws,"Received payload length > 2^31 bytes.");return}this.#se.payloadLength=r;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.READ_DATA){if(this.#Ae0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fragmented&&this.#se.fin){I(this.ws,this.#se.binaryType,this.consumeFragments())}this.#w=n.INFO}else{this.#ie.get("permessage-deflate").decompress(t,this.#se.fin,(t,A)=>{if(t){const e=t instanceof D?1009:1007;failWebsocketConnectionWithCode(this.ws,e,t.message);return}if(!this.writeFragments(A)){return}if(this.#$>0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fin){this.#w=n.INFO;this.#re=true;this.run(e);return}I(this.ws,this.#se.binaryType,this.consumeFragments());this.#re=true;this.#w=n.INFO;this.run(e)});this.#re=false;break}}}}}consume(e){if(e>this.#Ae){throw new Error("Called consume() before buffers satiated.")}else if(e===0){return a}if(this.#ee[0].length===e){this.#Ae-=this.#ee[0].length;return this.#ee.shift()}const t=Buffer.allocUnsafe(e);let A=0;while(A!==e){const r=this.#ee[0];const{length:s}=r;if(s+A===e){t.set(this.#ee.shift(),A);break}else if(s+A>e){t.set(r.subarray(0,e-A),A);this.#ee[0]=r.subarray(e-A);break}else{t.set(this.#ee.shift(),A);A+=r.length}}this.#Ae-=e;return t}writeFragments(e){if(this.#oe>0&&this.#ne.length===this.#oe){failWebsocketConnectionWithCode(this.ws,1008,"Too many message fragments");return false}this.#te+=e.length;this.#ne.push(e);return true}consumeFragments(){const e=this.#ne;if(e.length===1){this.#te=0;return e.shift()}const t=Buffer.concat(e,this.#te);this.#ne=[];this.#te=0;return t}parseCloseBody(e){s(e.length!==1);let t;if(e.length>=2){t=e.readUInt16BE(0)}if(t!==undefined&&!Q(t)){return{code:1002,reason:"Invalid status code",error:true}}let A=e.subarray(2);if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}try{A=d(A)}catch{return{code:1007,reason:"Invalid UTF-8",error:true}}return{code:t,reason:A,error:false}}parseControlFrame(e){const{opcode:t,payloadLength:A}=this.#se;if(t===i.CLOSE){if(A===1){B(this.ws,"Received close frame with a 1-byte body.");return false}this.#se.closeInfo=this.parseCloseBody(e);if(this.#se.closeInfo.error){const{code:e,reason:t}=this.#se.closeInfo;m(this.ws,e,t,t.length);B(this.ws,t);return false}if(this.ws[h]!==c.SENT){let e=a;if(this.#se.closeInfo.code){e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#se.closeInfo.code,0)}const t=new y(e);this.ws[g].socket.write(t.createFrame(i.CLOSE),e=>{if(!e){this.ws[h]=c.SENT}})}this.ws[l]=o.CLOSING;this.ws[u]=true;return false}else if(t===i.PING){if(!this.ws[u]){const t=new y(e);this.ws[g].socket.write(t.createFrame(i.PONG));if(E.ping.hasSubscribers){E.ping.publish({payload:e})}}}else if(t===i.PONG){if(E.pong.hasSubscribers){E.pong.publish({payload:e})}}return true}get closingInfo(){return this.#se.closeInfo}}e.exports={ByteParser:ByteParser}},3900:(e,t,A)=>{const{WebsocketFrameSend:r}=A(3264);const{opcodes:s,sendHints:n}=A(736);const i=A(4660);const o=Buffer[Symbol.species];class SendQueue{#ce=new i;#le=false;#he;constructor(e){this.#he=e}add(e,t,A){if(A!==n.blob){const r=createFrame(e,A);if(!this.#le){this.#he.write(r,t)}else{const e={promise:null,callback:t,frame:r};this.#ce.push(e)}return}const r={promise:e.arrayBuffer().then(e=>{r.promise=null;r.frame=createFrame(e,A)}),callback:t,frame:null};this.#ce.push(r);if(!this.#le){this.#ge()}}async#ge(){this.#le=true;const e=this.#ce;while(!e.isEmpty()){const t=e.shift();if(t.promise!==null){await t.promise}this.#he.write(t.frame,t.callback);t.callback=t.frame=null}this.#le=false}}function createFrame(e,t){return new r(toBuffer(e,t)).createFrame(t===n.string?s.TEXT:s.BINARY)}function toBuffer(e,t){switch(t){case n.string:return Buffer.from(e);case n.arrayBuffer:case n.blob:return new o(e);case n.typedArray:return new o(e.buffer,e.byteOffset,e.byteLength)}}e.exports={SendQueue:SendQueue}},1216: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")}},8625:(e,t,A)=>{const{kReadyState:r,kController:s,kResponse:n,kBinaryType:i,kWebSocketURL:o}=A(1216);const{states:a,opcodes:c}=A(736);const{ErrorEvent:l,createFastMessageEvent:h}=A(5188);const{isUtf8:g}=A(4573);const{collectASequenceOfCodePointsFast:u,removeHTTPWhitespace:E}=A(1900);function isConnecting(e){return e[r]===a.CONNECTING}function isEstablished(e){return e[r]===a.OPEN}function isClosing(e){return e[r]===a.CLOSING}function isClosed(e){return e[r]===a.CLOSED}function fireEvent(e,t,A=(e,t)=>new Event(e,t),r={}){const s=A(e,r);t.dispatchEvent(s)}function websocketMessageReceived(e,t,A){if(e[r]!==a.OPEN){return}let s;if(t===c.TEXT){try{s=B(A)}catch{failWebsocketConnection(e,"Received invalid UTF-8 in text frame.");return}}else if(t===c.BINARY){if(e[i]==="blob"){s=new Blob([A])}else{s=toArrayBuffer(A)}}fireEvent("message",e,h,{origin:e[o].origin,data:s})}function toArrayBuffer(e){if(e.byteLength===e.buffer.byteLength){return e.buffer}return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function isValidSubprotocol(e){if(e.length===0){return false}for(let t=0;t126||A===34||A===40||A===41||A===44||A===47||A===58||A===59||A===60||A===61||A===62||A===63||A===64||A===91||A===92||A===93||A===123||A===125){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{[s]:A,[n]:r}=e;A.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(t){fireEvent("error",e,(e,t)=>new l(e,t),{error:new Error(t),message:t})}}function isControlFrame(e){return e===c.CLOSE||e===c.PING||e===c.PONG}function isContinuationFrame(e){return e===c.CONTINUATION}function isTextBinaryFrame(e){return e===c.TEXT||e===c.BINARY}function isValidOpcode(e){return isTextBinaryFrame(e)||isContinuationFrame(e)||isControlFrame(e)}function parseExtensions(e){const t={position:0};const A=new Map;while(t.position57){return false}}const t=Number.parseInt(e,10);return t>=8&&t<=15}const Q=typeof process.versions.icu==="string";const C=Q?new TextDecoder("utf-8",{fatal:true}):undefined;const B=Q?C.decode.bind(C):function(e){if(g(e)){return e.toString("utf-8")}throw new TypeError("Invalid utf-8 received.")};e.exports={isConnecting:isConnecting,isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived,utf8Decode:B,isControlFrame:isControlFrame,isContinuationFrame:isContinuationFrame,isTextBinaryFrame:isTextBinaryFrame,isValidOpcode:isValidOpcode,parseExtensions:parseExtensions,isValidClientWindowBits:isValidClientWindowBits}},3726:(e,t,A)=>{const{webidl:r}=A(5893);const{URLSerializer:s}=A(1900);const{environmentSettingsObject:n}=A(3168);const{staticPropertyDescriptors:i,states:o,sentCloseFrameState:a,sendHints:c}=A(736);const{kWebSocketURL:l,kReadyState:h,kController:g,kBinaryType:u,kResponse:E,kSentClose:Q,kByteParser:C}=A(1216);const{isConnecting:B,isEstablished:I,isClosing:d,isValidSubprotocol:f,fireEvent:p}=A(8625);const{establishWebSocketConnection:w,closeWebSocketConnection:y}=A(6897);const{ByteParser:m}=A(1652);const{kEnumerableProperty:R,isBlobLike:D}=A(3440);const{getGlobalDispatcher:b}=A(2581);const{types:k}=A(7975);const{ErrorEvent:S,CloseEvent:F}=A(5188);const{SendQueue:N}=A(3900);class WebSocket extends EventTarget{#H={open:null,error:null,close:null,message:null};#ue=0;#Ee="";#ie="";#Qe;constructor(e,t=[]){super();r.util.markAsUncloneable(this);const A="WebSocket constructor";r.argumentLengthCheck(arguments,1,A);const s=r.converters["DOMString or sequence or WebSocketInit"](t,A,"options");e=r.converters.USVString(e,A,"url");t=s.protocols;const i=n.settingsObject.baseUrl;let o;try{o=new URL(e,i)}catch(e){throw new DOMException(e,"SyntaxError")}if(o.protocol==="http:"){o.protocol="ws:"}else if(o.protocol==="https:"){o.protocol="wss:"}if(o.protocol!=="ws:"&&o.protocol!=="wss:"){throw new DOMException(`Expected a ws: or wss: protocol, got ${o.protocol}`,"SyntaxError")}if(o.hash||o.href.endsWith("#")){throw new DOMException("Got fragment","SyntaxError")}if(typeof t==="string"){t=[t]}if(t.length!==new Set(t.map(e=>e.toLowerCase())).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(t.length>0&&!t.every(e=>f(e))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[l]=new URL(o.href);const c=n.settingsObject;this[g]=w(o,t,c,this,(e,t)=>this.#Ce(e,t),s);this[h]=WebSocket.CONNECTING;this[Q]=a.NOT_SENT;this[u]="blob"}close(e=undefined,t=undefined){r.brandCheck(this,WebSocket);const A="WebSocket.close";if(e!==undefined){e=r.converters["unsigned short"](e,A,"code",{clamp:true})}if(t!==undefined){t=r.converters.USVString(t,A,"reason")}if(e!==undefined){if(e!==1e3&&(e<3e3||e>4999)){throw new DOMException("invalid code","InvalidAccessError")}}let s=0;if(t!==undefined){s=Buffer.byteLength(t);if(s>123){throw new DOMException(`Reason must be less than 123 bytes; received ${s}`,"SyntaxError")}}y(this,e,t,s)}send(e){r.brandCheck(this,WebSocket);const t="WebSocket.send";r.argumentLengthCheck(arguments,1,t);e=r.converters.WebSocketSendData(e,t,"data");if(B(this)){throw new DOMException("Sent before connected.","InvalidStateError")}if(!I(this)||d(this)){return}if(typeof e==="string"){const t=Buffer.byteLength(e);this.#ue+=t;this.#Qe.add(e,()=>{this.#ue-=t},c.string)}else if(k.isArrayBuffer(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.arrayBuffer)}else if(ArrayBuffer.isView(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.typedArray)}else if(D(e)){this.#ue+=e.size;this.#Qe.add(e,()=>{this.#ue-=e.size},c.blob)}}get readyState(){r.brandCheck(this,WebSocket);return this[h]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#ue}get url(){r.brandCheck(this,WebSocket);return s(this[l])}get extensions(){r.brandCheck(this,WebSocket);return this.#ie}get protocol(){r.brandCheck(this,WebSocket);return this.#Ee}get onopen(){r.brandCheck(this,WebSocket);return this.#H.open}set onopen(e){r.brandCheck(this,WebSocket);if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#H.error}set onerror(e){r.brandCheck(this,WebSocket);if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#H.close}set onclose(e){r.brandCheck(this,WebSocket);if(this.#H.close){this.removeEventListener("close",this.#H.close)}if(typeof e==="function"){this.#H.close=e;this.addEventListener("close",e)}else{this.#H.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#H.message}set onmessage(e){r.brandCheck(this,WebSocket);if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[u]}set binaryType(e){r.brandCheck(this,WebSocket);if(e!=="blob"&&e!=="arraybuffer"){this[u]="blob"}else{this[u]=e}}#Ce(e,t){this[E]=e;const A=this[g]?.dispatcher?.webSocketOptions;const r=A?.maxFragments;const s=A?.maxPayloadSize;const n=new m(this,t,{maxFragments:r,maxPayloadSize:s});n.on("drain",onParserDrain);n.on("error",onParserError.bind(this));e.socket.ws=this;this[C]=n;this.#Qe=new N(e.socket);this[h]=o.OPEN;const i=e.headersList.get("sec-websocket-extensions");if(i!==null){this.#ie=i}const a=e.headersList.get("sec-websocket-protocol");if(a!==null){this.#Ee=a}p("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=o.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=o.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=o.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=o.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i,url:R,readyState:R,bufferedAmount:R,onopen:R,onerror:R,onclose:R,close:R,onmessage:R,binaryType:R,send:R,extensions:R,protocol:R,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i});r.converters["sequence"]=r.sequenceConverter(r.converters.DOMString);r.converters["DOMString or sequence"]=function(e,t,A){if(r.util.Type(e)==="Object"&&Symbol.iterator in e){return r.converters["sequence"](e)}return r.converters.DOMString(e,t,A)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:r.converters.any,defaultValue:()=>b()},{key:"headers",converter:r.nullableConverter(r.converters.HeadersInit)}]);r.converters["DOMString or sequence or WebSocketInit"]=function(e){if(r.util.Type(e)==="Object"&&!(Symbol.iterator in e)){return r.converters.WebSocketInit(e)}return{protocols:r.converters["DOMString or sequence"](e)}};r.converters.WebSocketSendData=function(e){if(r.util.Type(e)==="Object"){if(D(e)){return r.converters.Blob(e,{strict:false})}if(ArrayBuffer.isView(e)||k.isArrayBuffer(e)){return r.converters.BufferSource(e)}}return r.converters.USVString(e)};function onParserDrain(){this.ws[E].socket.resume()}function onParserError(e){let t;let A;if(e instanceof F){t=e.reason;A=e.code}else{t=e.message}p("error",this,()=>new S("error",{error:e,message:t}));y(this,A)}e.exports={WebSocket:WebSocket}},2613:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("assert")},4434:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("events")},8611:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http")},5692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("https")},9278:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("net")},4589:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:assert")},6698:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:async_hooks")},4573:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:buffer")},7540:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:console")},7598:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:crypto")},3053:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:diagnostics_channel")},610:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:dns")},8474:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:events")},7067:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http")},2467:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http2")},7030:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:net")},643:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:perf_hooks")},1792:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:querystring")},7075:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream")},1692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tls")},3136:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:url")},7975:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util")},3429:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util/types")},5919:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:worker_threads")},8522:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:zlib")},2203:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream")},3193:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("string_decoder")},4756:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("tls")},9023:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("util")},6628:(e,t,A)=>{A.a(e,async(e,t)=>{try{var r=A(3218);var s=A(3720);var n=A(9482);var i=A(4508);var o=A(2668);async function main(){const e=(0,n.F9)(r.V4("base_sha",{required:true}),r.V4("head_sha",{required:true}));const t=r.V4("baseline_path");const A=r.V4("fail_on_new").toLowerCase();if(A!==""&&A!=="true"&&A!=="false"){throw new Error("fail_on_new must be true or false")}const a=A==="true";const c=t?await(0,o.mF)(t):undefined;const l=t||a?(0,o.ZY)(e.files.flatMap(e=>e.findings.map(t=>({path:e.path,finding:t}))),c,"git-all"):undefined;let h=0;const g=l?{...e,files:e.files.map(e=>({...e,findings:e.findings.map(()=>l.findings[h++])})),lifecycle:l.counts,resolvedFindings:l.resolvedFindings}:e;const u=g.files.flatMap(e=>e.findings);const E=r.V4("fail_on")||"unreviewed";if(!["never","review","unreviewed"].includes(E)){throw new Error("fail_on must be one of: never, review, unreviewed")}const Q=r.V4("fail_on_risk")||"none";(0,i.p)(Q);const C=g.unreviewed.length>0?"incomplete":u.length>0?"findings":"clean";process.stdout.write("ChangeGuard review completed.\n");r.uH("outcome",C);r.uH("finding_count",String(u.length));r.uH("reviewed_file_count",String(g.reviewedFileCount));r.uH("unreviewed_count",String(g.unreviewedFileCount));r.uH("rule_ids",g.ruleIds.join(","));r.uH("highest_severity",u.length?"review":"none");const B={low:1,medium:2,high:3};const I=u.reduce((e,t)=>{const A=t.riskLevel??"medium";return B[A]>(e==="none"?0:B[e])?A:e},"none");r.uH("highest_risk",I);r.uH("risk_threshold_exceeded",String((0,i.E)(u,Q)));r.uH("new_finding_count",l?String(l.counts.newCount):"");r.uH("existing_finding_count",l?String(l.counts.existingCount):"");r.uH("resolved_finding_count",l?String(l.counts.resolvedCount):"");r.uH("report",JSON.stringify(g));await r.z.addRaw((0,s.B)(g)).write();for(const e of g.files)for(const t of e.findings){r.$e(`${t.ruleId}: ${t.summary}`,{file:e.path,title:`${t.ruleId} (${t.riskLevel??"medium"} risk)`})}if((E!=="never"||a)&&g.unreviewed.length>0){throw new Error("Review incomplete: one or more configurations could not be analyzed.")}if(E==="review"&&u.length>0)throw new Error("Review findings detected.");if((0,i.E)(u,Q))throw new Error(`Review findings meet the ${Q} risk threshold.`);if(a&&(l?.counts.newCount??0)>0)throw new Error("New review findings detected.")}try{await main()}catch(a){r.C1(a instanceof Error?a.message:"Unexpected failure.")}t()}catch(c){t(c)}},1)},2668:(e,t,A)=>{A.d(t,{ZY:()=>classifyFindings,mF:()=>readBaseline});var r=A(7598);const s=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:fs/promises");const n=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:path");const i=1024*1024;const o=1e4;const a=/^[a-f0-9]{64}$/;const c=/^[A-Z0-9][A-Z0-9_-]{0,99}$/;function normaliseRepositoryPath(e){if(!e||e.includes("\0"))throw new Error("Baseline configuration paths must be repository-relative.");const t=e.replaceAll("\\","/");if(t.startsWith("/")||/^[A-Za-z]:/.test(t)||(0,n.isAbsolute)(e)||n.win32.isAbsolute(e)){throw new Error("Baseline configuration paths must be repository-relative.")}const A=t.split("/");if(A.some(e=>e===".."))throw new Error("Baseline configuration paths must not traverse directories.");const r=A.filter(e=>e&&e!==".").join("/");if(!r||r.length>2048||r.includes(":")){throw new Error("Baseline configuration paths must be repository-relative.")}return r}function findingFingerprint(e,t){const A=normaliseRepositoryPath(t);const s=["changeguard-baseline-v1",e.ruleId,A,e.field,e.category??"unspecified",e.riskLevel??"medium",e.summary];return(0,r.createHash)("sha256").update(JSON.stringify(s),"utf8").digest("hex")}function createBaseline(e,t){const A=new Map;for(const e of t){const t=normaliseRepositoryPath(e.path);const r=findingFingerprint(e.finding,t);const s=A.get(r);if(s){s.count++}else{A.set(r,{fingerprint:r,ruleId:e.finding.ruleId,path:t,field:e.finding.field,riskLevel:e.finding.riskLevel??"medium",count:1})}}if(A.size>o)throw new Error("Too many findings for a ChangeGuard baseline.");return{schemaVersion:1,comparisonKind:e,findings:[...A.values()].sort(compareBaselineFinding)}}function compareBaselineFinding(e,t){return e.path.localeCompare(t.path)||e.ruleId.localeCompare(t.ruleId)||e.field.localeCompare(t.field)||e.fingerprint.localeCompare(t.fingerprint)}function validateBaseline(e){if(typeof e!=="object"||e===null||Array.isArray(e))throw new Error("Baseline must be a JSON object.");const t=e;if(t.schemaVersion!==1)throw new Error("Unsupported ChangeGuard baseline schema version.");if(!["configuration-pair","git-file","git-all"].includes(String(t.comparisonKind))){throw new Error("Baseline comparisonKind is invalid.")}if(!Array.isArray(t.findings)||t.findings.length>o){throw new Error("Baseline findings must be a bounded array.")}let A=0;const r=new Set;const s=t.findings.map(e=>{if(typeof e!=="object"||e===null||Array.isArray(e))throw new Error("Baseline finding is invalid.");const t=e;if(typeof t.fingerprint!=="string"||!a.test(t.fingerprint)||r.has(t.fingerprint)){throw new Error("Baseline finding fingerprint is invalid or duplicated.")}if(typeof t.ruleId!=="string"||!c.test(t.ruleId))throw new Error("Baseline finding ruleId is invalid.");if(typeof t.path!=="string"||normaliseRepositoryPath(t.path)!==t.path)throw new Error("Baseline finding path is invalid.");if(typeof t.field!=="string"||!t.field||t.field.length>256||/[\r\n\0]/.test(t.field)){throw new Error("Baseline finding field is invalid.")}if(t.riskLevel!=="low"&&t.riskLevel!=="medium"&&t.riskLevel!=="high"){throw new Error("Baseline finding riskLevel is invalid.")}if(!Number.isSafeInteger(t.count)||t.count<1||t.count>o){throw new Error("Baseline finding count is invalid.")}A+=t.count;if(A>o)throw new Error("Baseline contains too many findings.");r.add(t.fingerprint);return{fingerprint:t.fingerprint,ruleId:t.ruleId,path:t.path,field:t.field,riskLevel:t.riskLevel,count:t.count}});s.sort(compareBaselineFinding);return{schemaVersion:1,comparisonKind:t.comparisonKind,findings:s}}function classifyFindings(e,t,A){if(t&&t.comparisonKind!==A)throw new Error("Baseline comparison type does not match the selected review.");const r=new Map((t?.findings??[]).map(e=>[e.fingerprint,e.count]));const s=new Map;const n={newCount:0,existingCount:0,resolvedCount:0};const i=e.map(({path:e,finding:t})=>{const A=findingFingerprint(t,e);const i=(s.get(A)??0)+1;s.set(A,i);const o=i<=(r.get(A)??0)?"EXISTING":"NEW";if(o==="EXISTING")n.existingCount++;else n.newCount++;return{...t,lifecycle:o}});const o=[];if(t){for(const e of t.findings){const t=e.count-(s.get(e.fingerprint)??0);if(t>0){n.resolvedCount+=t;o.push({...e,count:t,lifecycle:"RESOLVED"})}}}return{findings:i,resolvedFindings:o,counts:n}}async function checkedBaselinePath(e,t){if(!e||e.includes("\0")||(0,n.isAbsolute)(e)||n.win32.isAbsolute(e)){throw new Error("Baseline paths must be relative to the repository root.")}const A=e.replaceAll("\\","/");const r=A.split("/");if(r.some(e=>e===".."))throw new Error("Baseline paths must not traverse directories.");const i=r.filter(e=>e&&e!==".").join("/");if(!i)throw new Error("Baseline path is invalid.");const o=await(0,s.realpath)(t);const a=(0,n.resolve)(o,i);const c=(0,n.relative)(o,a);if(!c||c.startsWith(`..${n.sep}`)||c===".."||(0,n.isAbsolute)(c))throw new Error("Baseline paths must stay within the repository root.");const l=c.split(n.sep);let h=o;for(const e of l.slice(0,-1)){h=(0,n.resolve)(h,e);const t=await(0,s.lstat)(h).catch(()=>undefined);if(!t?.isDirectory()||t.isSymbolicLink())throw new Error("Baseline parent path must be an existing regular directory.")}return{absolute:a,relative:c.split(n.sep).join("/")}}async function readBaseline(e,t=process.cwd()){const A=await checkedBaselinePath(e,t);const r=await(0,s.lstat)(A.absolute).catch(()=>undefined);if(!r?.isFile()||r.isSymbolicLink())throw new Error("Baseline must be an existing regular file.");if(r.size>i)throw new Error("Baseline exceeds the supported size limit.");let n;try{n=JSON.parse(await(0,s.readFile)(A.absolute,"utf8"))}catch{throw new Error("Baseline is not valid JSON.")}return validateBaseline(n)}async function writeBaseline(e,t,A=process.cwd()){const r=await checkedBaselinePath(e,A);const s=`${JSON.stringify(validateBaseline(t),null,2)}\n`;if(Buffer.byteLength(s,"utf8")>i)throw new Error("Baseline exceeds the supported size limit.");let n;try{n=await open(r.absolute,"wx",384);await n.writeFile(s,"utf8");await n.close()}catch{await(n?.close().catch(()=>undefined));throw new Error("Unable to create baseline; the destination may already exist or be unavailable.")}return r.relative}},9482:(e,t,A)=>{A.d(t,{F9:()=>reviewPullRequest});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:child_process");function readClientId(e){if(!Object.prototype.hasOwnProperty.call(e,"client_id")){return undefined}const t=e.client_id;if(typeof t!=="string"||t.trim().length===0){throw new Error("client_id must be a non-empty string")}return t}function compareClientIds(e,t){const A=readClientId(e);const r=readClientId(t);if(A===r){return[]}const s=A===undefined?"CLIENT_ID_ADDED":r===undefined?"CLIENT_ID_REMOVED":"CLIENT_ID_CHANGED";const n=A===undefined?"client ID added":r===undefined?"client ID removed":"client ID changed";return[{ruleId:s,severity:"review",field:"client_id",summary:n}]}function applicationUrl(e){const t=e.application_url;if(t===undefined)return undefined;if(typeof t!=="string"||!t.trim()){throw new Error("application_url must be a non-empty string when provided")}return t}function redirectUrls(e){const t=e.auth;if(t===undefined)return new Set;if(typeof t!=="object"||t===null||Array.isArray(t)){throw new Error("[auth] must be a table when provided")}const A=t.redirect_urls;if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error("[auth].redirect_urls must be an array of non-empty strings")}return new Set(A)}function compareUrls(e,t){const A=applicationUrl(e);const r=applicationUrl(t);const s=redirectUrls(e);const n=redirectUrls(t);const i=[];if(A!==r){const e=A===undefined?"added":r===undefined?"removed":"changed";i.push({ruleId:"APPLICATION_URL_CHANGED",severity:"review",field:"application_url",summary:`application_url ${e}; review the intended app environment and destination`})}const o=[...n].filter(e=>!s.has(e)).length;const a=[...s].filter(e=>!n.has(e)).length;if(o||a){i.push({ruleId:"AUTH_REDIRECT_URLS_CHANGED",severity:"review",field:"auth.redirect_urls",summary:`authorization redirect URL set changed (added: ${o}; removed: ${a}); review OAuth callback configuration`})}return i}function isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function normalise(e){if(Array.isArray(e))return e.map(normalise);if(isTable(e)){return Object.fromEntries(Object.keys(e).sort().map(t=>[t,normalise(e[t])]))}return e}function readTopicList(e,t){const A=e[t];if(A===undefined)return[];if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error(`webhooks.subscriptions.${t} must be an array of non-empty strings`)}return[...new Set(A.map(e=>e.trim()))].sort()}function readWebhooks(e){const t=e.webhooks;if(t===undefined)return{routes:new Map};if(!isTable(t))throw new Error("[webhooks] must be a table");const A=t.api_version;if(A!==undefined&&(typeof A!=="string"||!A.trim())){throw new Error("[webhooks].api_version must be a non-empty string")}const r=t.subscriptions??[];if(!Array.isArray(r)){throw new Error("webhooks.subscriptions must be an array of tables")}const s=new Map;for(const e of r){if(!isTable(e))throw new Error("Each webhook subscription must be a table");const t=readTopicList(e,"topics");const A=readTopicList(e,"compliance_topics");if(!t.length&&!A.length){throw new Error("Webhook subscription requires topics or compliance_topics")}if(typeof e.uri!=="string"||!e.uri.trim()){throw new Error("Webhook subscription uri must be a non-empty string")}if(e.include_fields!==undefined&&(!Array.isArray(e.include_fields)||!e.include_fields.every(e=>typeof e==="string"&&e.trim()))){throw new Error("Webhook include_fields must be an array of non-empty strings")}if(e.filter!==undefined&&typeof e.filter!=="string"){throw new Error("Webhook filter must be a string")}const{topics:r,compliance_topics:n,...i}=e;const o=JSON.stringify(normalise({...i,...e.include_fields!==undefined?{include_fields:[...new Set(e.include_fields)].sort()}:{}}));for(const[e,r]of[["topics",t],["compliance_topics",A]]){for(const t of r){const A=JSON.stringify([e,t]);const r=s.get(A)??new Set;r.add(o);s.set(A,r)}}}return{version:A,routes:s}}function sameSet(e,t){return e.size===t.size&&[...e].every(e=>t.has(e))}function compareWebhooks(e,t){const A=readWebhooks(e);const r=readWebhooks(t);const s=[];if(A.version!==r.version){s.push({ruleId:"WEBHOOK_API_VERSION_CHANGED",severity:"review",field:"webhooks.api_version",summary:"webhook API version changed; review delivery payload compatibility"})}let n=0;let i=0;let o=0;for(const e of new Set([...A.routes.keys(),...r.routes.keys()])){const t=A.routes.get(e);const s=r.routes.get(e);if(!t)n++;else if(!s)i++;else if(!sameSet(t,s))o++}if(n||i||o){s.push({ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",severity:"review",field:"webhooks.subscriptions",summary:`webhook routes changed (added: ${n}; removed: ${i}; modified: ${o}); review topics, destinations and delivery settings`})}return s}function events_isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function readString(e,t,A){const r=e[t];if(typeof r!=="string"||!r.trim()){throw new Error(`${A}.${t} must be a non-empty string`)}return r.trim()}function readStringSet(e,t,A){const r=e[t];if(!Array.isArray(r)||!r.every(e=>typeof e==="string"&&e.trim())){throw new Error(`${A}.${t} must be an array of non-empty strings`)}return[...new Set(r.map(e=>e.trim()))].sort()}function readEvents(e){const t=e.events;if(t===undefined)return{subscriptions:new Map};if(!events_isTable(t))throw new Error("[events] must be a table");const A=t.api_version;if(A===undefined){throw new Error("[events].api_version is required")}if(typeof A!=="string"||!A.trim()){throw new Error("[events].api_version must be a non-empty string")}const r=t.subscription??[];if(!Array.isArray(r)){throw new Error("events.subscription must be an array of tables")}const s=new Map;for(const e of r){if(!events_isTable(e))throw new Error("Each Events subscription must be a table");const t="events.subscription";const A=readString(e,"handle",t);if(!/^[A-Za-z0-9_-]{1,50}$/.test(A)){throw new Error("events.subscription.handle must be alphanumeric, _, or - and at most 50 characters")}const r=readString(e,"topic",t);const n=readStringSet(e,"actions",t);if(n.some(e=>!["create","update","delete"].includes(e))){throw new Error("events.subscription.actions must contain only create, update, or delete")}const i=readString(e,"uri",t);if(n.includes("update")){readStringSet(e,"triggers",t)}else if(e.triggers!==undefined){readStringSet(e,"triggers",t)}const o=e.query===undefined?undefined:readString(e,"query",t);const a=e.query_filter===undefined?undefined:normalizeFilter(readString(e,"query_filter",t));if(s.has(A))throw new Error("Events subscription handles must be unique");const c=o===undefined?undefined:normalizeGraphQL(o);const l=e.triggers===undefined?[]:[...new Set(e.triggers.map(e=>e.trim()))].sort();const h={actions:n,query:c,filter:a,topic:r,triggers:l,destination:i};s.set(A,{handle:A,fingerprint:JSON.stringify(h),...h})}return{version:A,subscriptions:s}}function compareEvents(e,t){const A=readEvents(e);const r=readEvents(t);const s=[];if(A.version!==r.version){s.push({ruleId:"EVENTS_API_VERSION_CHANGED",severity:"review",field:"events.api_version",summary:"Events API version changed; review preview/runtime compatibility"})}let n=0,i=0,o=0;const a={topic:0,destination:0,actions:0,triggers:0,query:0,filter:0};for(const e of new Set([...A.subscriptions.keys(),...r.subscriptions.keys()])){const t=A.subscriptions.get(e);const s=r.subscriptions.get(e);if(!t)n++;else if(!s)i++;else if(t.fingerprint!==s.fingerprint){o++;for(const e of Object.keys(a))if(JSON.stringify(t[e])!==JSON.stringify(s[e]))a[e]++}}if(n||i||o){const e=o?`; modified fields: ${Object.entries(a).filter(([,e])=>e>0).map(([e,t])=>`${e==="destination"?"destination":e==="filter"?"query filter":e} ${t}`).join(", ")}`:"";s.push({ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",severity:"review",field:"events.subscription",summary:`Events subscriptions changed (created: ${n}; removed: ${i}; modified: ${o}${e}); review the affected subscription configuration`})}return s}function normalizeGraphQL(e){const t=[];const A=/#[^\r\n]*|"""[\s\S]*?"""|"(?:\\.|[^"\\])*"|[A-Za-z_][A-Za-z0-9_]*|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\.\.|[^\s,]/g;for(const r of e.matchAll(A)){if(r[0].startsWith("#"))continue;t.push(r[0])}return t.length?t.join(" "):e}function normalizeFilter(e){let t="",A="",r=false,s=false;for(const n of e.trim()){if(A){t+=n;if(r)r=false;else if(n==="\\")r=true;else if(n===A)A=""}else if(n==='"'||n==="'"){if(s&&t)t+=" ";s=false;A=n;t+=n}else if(/\s/.test(n))s=true;else{if(s&&t)t+=" ";s=false;t+=n}}return t}const s="https://shopify.dev/docs/apps/build/cli-for-apps/app-configuration";const n="https://shopify.dev/docs/apps/build/cli-for-apps/manage-app-config-files";const i="https://shopify.dev/docs/apps/build/online-store/app-proxies";const o=[{ruleId:"SCOPE_REQUIRED_ADDED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was added.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_REMOVED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_ADDED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was added.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_REMOVED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",category:"authorization",field:"access_scopes",explanation:"An optional scope became required.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",category:"authorization",field:"access_scopes",explanation:"A required scope became optional.",documentationUrl:s},{ruleId:"CLIENT_ID_ADDED",category:"identity",field:"client_id",explanation:"The app client ID was added.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_REMOVED",category:"identity",field:"client_id",explanation:"The app client ID was removed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_CHANGED",category:"identity",field:"client_id",explanation:"The app client ID changed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"APPLICATION_URL_CHANGED",category:"routing",field:"application_url",explanation:"The app application URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"AUTH_REDIRECT_URLS_CHANGED",category:"routing",field:"auth.redirect_urls",explanation:"The OAuth redirect URL set changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"embedded",explanation:"The embedded app mode changed.",documentationUrl:s},{ruleId:"APP_HANDLE_CHANGED",category:"identity",field:"handle",explanation:"The app handle changed.",documentationUrl:s},{ruleId:"APP_NAME_CHANGED",category:"identity",field:"name",explanation:"The app name changed.",documentationUrl:s,redaction:"Name values are not included in findings."},{ruleId:"LEGACY_INSTALL_FLOW_CHANGED",category:"authorization",field:"access_scopes.use_legacy_install_flow",explanation:"The legacy installation flow setting changed.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",category:"api-access",field:"access.admin.embedded_app_direct_api_access",explanation:"Admin Direct API access was enabled or disabled.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",category:"api-access",field:"access.admin.direct_api_mode",explanation:"Admin Direct API online/offline mode changed.",documentationUrl:s},{ruleId:"CUSTOMER_AUTH_REDIRECTS_CHANGED",category:"authorization",field:"customer_authentication.redirect_uris",explanation:"Customer account authentication redirect URIs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"CUSTOMER_AUTH_ORIGINS_CHANGED",category:"authorization",field:"customer_authentication.javascript_origins",explanation:"Customer account authentication JavaScript origins changed.",documentationUrl:s,redaction:"Origin values are never included in findings."},{ruleId:"CUSTOMER_AUTH_LOGOUT_URLS_CHANGED",category:"authorization",field:"customer_authentication.logout_urls",explanation:"Customer account authentication logout URLs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ENABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was enabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DISABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was disabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DESTINATION_CHANGED",category:"routing",field:"app_proxy.url",explanation:"The app proxy destination changed.",documentationUrl:i,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ROUTE_CHANGED",category:"routing",field:"app_proxy.prefix/subpath",explanation:"The app proxy storefront route changed.",documentationUrl:i},{ruleId:"POS_EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"pos.embedded",explanation:"Shopify POS embedded mode changed.",documentationUrl:s},{ruleId:"APP_PREFERENCES_URL_CHANGED",category:"routing",field:"app_preferences.url",explanation:"The app preferences URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EXTENSION_DIRECTORIES_CHANGED",category:"project-discovery",field:"extension_directories",explanation:"The extension discovery directory set changed.",documentationUrl:s},{ruleId:"WEB_DIRECTORIES_CHANGED",category:"project-discovery",field:"web_directories",explanation:"The web discovery directory set changed.",documentationUrl:s},{ruleId:"AUTOMATIC_DEV_URLS_CHANGED",category:"runtime-behaviour",field:"build.automatically_update_urls_on_dev",explanation:"Automatic development URL updates changed.",documentationUrl:s},{ruleId:"WEBHOOK_API_VERSION_CHANGED",category:"event-delivery",field:"webhooks.api_version",explanation:"The webhook API version changed.",documentationUrl:s},{ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"webhooks.subscriptions",explanation:"Webhook routes or delivery settings changed.",documentationUrl:s,redaction:"Destinations, topics, filters, and field names are never included in findings."},{ruleId:"EVENTS_API_VERSION_CHANGED",category:"event-delivery",field:"events.api_version",explanation:"The Events API version changed.",documentationUrl:s},{ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"events.subscription",explanation:"Events subscriptions changed.",documentationUrl:s,redaction:"Handles, destinations, topics, triggers, queries, and filters are never included in findings."},{ruleId:"CONFIG_ADDED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was added.",documentationUrl:n},{ruleId:"CONFIG_REMOVED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was removed.",documentationUrl:n},{ruleId:"CONFIG_RENAMED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was renamed.",documentationUrl:n}];const a=new Map(o.map(e=>[e.ruleId,e]));const c={authorization:{level:"high",rationale:"Can change merchant consent, access, or authentication behaviour."},identity:{level:"high",rationale:"Can change the app or environment a deployment targets."},routing:{level:"high",rationale:"Can redirect app, OAuth, proxy, or merchant-facing traffic."},"api-access":{level:"high",rationale:"Can change how the app obtains or uses Admin API access."},"event-delivery":{level:"high",rationale:"Can change event coverage, payload compatibility, or delivery destinations."},"runtime-behaviour":{level:"medium",rationale:"Can change runtime or installation behaviour without directly changing permissions."},"project-discovery":{level:"low",rationale:"Changes which local project paths Shopify CLI discovers."},"configuration-lifecycle":{level:"high",rationale:"Can change which environment configuration is selected for deployment."}};function withRisk(e){const t=c[e.category];return{...e,riskLevel:t.level,riskRationale:t.rationale}}function metadataFor(e,t){const A=a.get(e);if(A)return A;const r=categoryFor(t);return withRisk({ruleId:e,category:r,field:t,explanation:"An internal or otherwise unknown Shopify app configuration value changed.",documentationUrl:s})}function categoryFor(e){if(e.startsWith("access_scopes")||e.startsWith("customer_authentication"))return"authorization";if(e.includes("client_id")||e==="name"||e==="handle")return"identity";if(e.includes("url")||e.includes("proxy")||e.includes("redirect"))return"routing";if(e.startsWith("access.admin"))return"api-access";if(e.startsWith("webhooks")||e.startsWith("events"))return"event-delivery";if(e.startsWith("extension_directories")||e.startsWith("web_directories"))return"project-discovery";if(e.startsWith("configuration"))return"configuration-lifecycle";return"runtime-behaviour"}function ruleCatalogue(){return o.map(e=>({...e}))}for(let e=0;etypeof e==="string"&&e.trim()))throw new Error("[access_scopes].optional_scopes must be an array of non-empty strings");const r=new Set(t.scopes.split(",").map(e=>e.trim()).filter(Boolean));const s=new Set(A.map(e=>e.trim()));const n=[...r].filter(e=>s.has(e));if(n.length>0)throw new Error("Scope cannot be both required and optional: "+n.sort().join(", "));return{required:r,optional:s}}function readOptionalBoolean(e,t){const A=e[t];if(A!==undefined&&typeof A!=="boolean")throw new Error(`${t} must be a boolean`);return A}function readOptionalString(e,t){const A=e[t];if(A!==undefined&&(typeof A!=="string"||!A.trim()))throw new Error(`${t} must be a non-empty string`);return A}function readTable(e,t){const A=e[t];if(A===undefined)return{};if(!isObject(A))throw new Error(`[${t}] must be a table`);return A}function core_readStringSet(e,t){const A=e[t];if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim()))throw new Error(`${t} must be an array of non-empty strings`);return new Set(A.map(e=>e.trim()))}function changedSetFinding(e,t,A,r,s){const n=[...s].filter(e=>!r.has(e)).length;const i=[...r].filter(e=>!s.has(e)).length;if(!n&&!i)return[];return[{ruleId:e,severity:"review",field:t,summary:`${A} changed (added: ${n}; removed: ${i}); review the affected Shopify behaviour`}]}function compareRootSettings(e,t){const A=[];const r=[["embedded","EMBEDDED_MODE_CHANGED","boolean"],["handle","APP_HANDLE_CHANGED","string"],["name","APP_NAME_CHANGED","string"]];for(const[s,n,i]of r){const r=i==="boolean"?readOptionalBoolean(e,s):readOptionalString(e,s);const o=i==="boolean"?readOptionalBoolean(t,s):readOptionalString(t,s);if(r!==o)A.push({ruleId:n,severity:"review",field:s,summary:`${s} changed; review the intended app behaviour and deployment impact`})}const s=isObject(e.access_scopes)?e.access_scopes:{};const n=isObject(t.access_scopes)?t.access_scopes:{};const i=readOptionalBoolean(s,"use_legacy_install_flow");const o=readOptionalBoolean(n,"use_legacy_install_flow");if(i!==o)A.push({ruleId:"LEGACY_INSTALL_FLOW_CHANGED",severity:"review",field:"access_scopes.use_legacy_install_flow",summary:"legacy installation flow setting changed; review OAuth and scope-management behaviour"});const a=readTable(readTable(e,"access"),"admin");const c=readTable(readTable(t,"access"),"admin");const l=readOptionalBoolean(a,"embedded_app_direct_api_access")??false;const h=readOptionalBoolean(c,"embedded_app_direct_api_access")??false;if(l!==h)A.push({ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",severity:"review",field:"access.admin.embedded_app_direct_api_access",summary:"Admin Direct API access was enabled or disabled; review client-side API access and authorization behaviour"});const g=readOptionalString(a,"direct_api_mode")??"online";const u=readOptionalString(c,"direct_api_mode")??"online";if(!["online","offline"].includes(g)||!["online","offline"].includes(u))throw new Error("[access.admin].direct_api_mode must be online or offline");if(g!==u)A.push({ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",severity:"review",field:"access.admin.direct_api_mode",summary:"Admin Direct API access mode changed; review online/offline token expectations"});const E=readTable(e,"customer_authentication");const Q=readTable(t,"customer_authentication");A.push(...changedSetFinding("CUSTOMER_AUTH_REDIRECTS_CHANGED","customer_authentication.redirect_uris","Customer authentication redirect URI set",core_readStringSet(E,"redirect_uris"),core_readStringSet(Q,"redirect_uris")));A.push(...changedSetFinding("CUSTOMER_AUTH_ORIGINS_CHANGED","customer_authentication.javascript_origins","Customer authentication JavaScript origin set",core_readStringSet(E,"javascript_origins"),core_readStringSet(Q,"javascript_origins")));A.push(...changedSetFinding("CUSTOMER_AUTH_LOGOUT_URLS_CHANGED","customer_authentication.logout_urls","Customer authentication logout URL set",core_readStringSet(E,"logout_urls"),core_readStringSet(Q,"logout_urls")));const C=readTable(e,"app_proxy");const B=readTable(t,"app_proxy");const I=Object.keys(C).length>0;const d=Object.keys(B).length>0;if(I!==d)A.push({ruleId:d?"APP_PROXY_ENABLED":"APP_PROXY_DISABLED",severity:"review",field:"app_proxy",summary:`app proxy ${d?"enabled":"disabled"}; review storefront routing and access scope behaviour`});if(readOptionalString(C,"url")!==readOptionalString(B,"url"))A.push({ruleId:"APP_PROXY_DESTINATION_CHANGED",severity:"review",field:"app_proxy.url",summary:"app proxy destination changed; review proxy routing and deployment behaviour"});const f=`${readOptionalString(C,"prefix")??""}/${readOptionalString(C,"subpath")??""}`;const p=`${readOptionalString(B,"prefix")??""}/${readOptionalString(B,"subpath")??""}`;if(f!==p)A.push({ruleId:"APP_PROXY_ROUTE_CHANGED",severity:"review",field:"app_proxy.prefix/subpath",summary:"app proxy storefront route changed; review links, theme integrations and merchant-facing URLs"});const w=readTable(e,"pos");const y=readTable(t,"pos");if(readOptionalBoolean(w,"embedded")!==readOptionalBoolean(y,"embedded"))A.push({ruleId:"POS_EMBEDDED_MODE_CHANGED",severity:"review",field:"pos.embedded",summary:"POS embedded mode changed; review Shopify POS app behaviour"});const m=readTable(e,"app_preferences");const R=readTable(t,"app_preferences");if(readOptionalString(m,"url")!==readOptionalString(R,"url"))A.push({ruleId:"APP_PREFERENCES_URL_CHANGED",severity:"review",field:"app_preferences.url",summary:"app preferences URL changed; review the destination used by merchants"});A.push(...changedSetFinding("EXTENSION_DIRECTORIES_CHANGED","extension_directories","Extension discovery directory set",core_readStringSet(e,"extension_directories"),core_readStringSet(t,"extension_directories")));A.push(...changedSetFinding("WEB_DIRECTORIES_CHANGED","web_directories","Web discovery directory set",core_readStringSet(e,"web_directories"),core_readStringSet(t,"web_directories")));const D=readTable(e,"build");const b=readTable(t,"build");if(readOptionalBoolean(D,"automatically_update_urls_on_dev")!==readOptionalBoolean(b,"automatically_update_urls_on_dev"))A.push({ruleId:"AUTOMATIC_DEV_URLS_CHANGED",severity:"review",field:"build.automatically_update_urls_on_dev",summary:"automatic development URL updates changed; review local tunnel and callback behaviour"});return A}function decorate(e){return e.map(e=>{const t=metadataFor(e.ruleId,e.field);return{...e,category:t.category,documentationUrl:t.documentationUrl,riskLevel:t.riskLevel,riskRationale:t.riskRationale}})}function compareConfigs(e,t){const A=readScopes(e);const r=readScopes(t);const s=[];for(const e of[...A.optional].filter(e=>r.required.has(e)).sort())s.push({ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",severity:"review",field:"access_scopes",summary:`scope changed from optional to required: ${e}`});for(const e of[...A.required].filter(e=>r.optional.has(e)).sort())s.push({ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",severity:"review",field:"access_scopes",summary:`scope changed from required to optional: ${e}`});const compare=(e,t,n)=>{const i=n==="required"?A.optional:A.required;const o=n==="required"?r.optional:r.required;for(const A of[...t].filter(t=>!e.has(t)&&!i.has(t)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_ADDED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope added: ${A}`});for(const A of[...e].filter(e=>!t.has(e)&&!o.has(e)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_REMOVED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope removed: ${A}`})};compare(A.required,r.required,"required");compare(A.optional,r.optional,"optional");s.push(...compareRootSettings(e,t),...compareClientIds(e,t),...compareUrls(e,t),...compareWebhooks(e,t),...compareEvents(e,t));return decorate(s.sort((e,t)=>e.field.localeCompare(t.field)||e.ruleId.localeCompare(t.ruleId)||e.summary.localeCompare(t.summary)))}var l=A(4572);const h=1024*1024;function resolveCommitRef(e){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes(".."))throw new Error("Invalid Git revision");const t=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],process.cwd()).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(t))throw new Error("Invalid resolved Git commit");return t}function git(e,t){try{return(0,r.execFileSync)("git",e,{cwd:t,stdio:["ignore","pipe","pipe"],maxBuffer:h+4096})}catch{throw new Error("Unable to read the requested Git revision or file")}}function readConfigAtRef(e,t){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes("..")){throw new Error("Invalid Git revision")}if(!t||t.startsWith("/")||t.includes("\\")||t.includes(":")||t.split("/").some(e=>!e||e==="."||e==="..")){throw new Error("Invalid repository-relative file path")}const A=git(["rev-parse","--show-toplevel"],process.cwd()).toString("utf8").trim();const r=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],A).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(r)){throw new Error("Invalid resolved Git commit")}const s=git(["ls-tree","-z",r,"--",t],A).toString("utf8");if(!/^100(?:644|755) blob /.test(s))throw new Error("Git configuration must be a regular file");const n=git(["cat-file","blob",`${r}:${t}`],A);if(n.length>h||n.includes(0)){throw new Error("Git configuration must be a text file up to 1 MiB")}try{return(0,l.parse)(n.toString("utf8"))}catch{throw new Error("Invalid TOML in Git revision; contents were not printed")}}const g=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/;const u=/(^|\/)shopify\.app(?:\.[^/]+)?\.toml$/;function gitDiff(e,t){const A=(0,r.spawnSync)("git",["diff","--find-renames=20%","--name-status","-z",e,t,"--"],{encoding:"buffer",maxBuffer:4*1024*1024});if(A.error||A.status!==0)throw new Error("Unable to inspect the Git changes.");const s=A.stdout.toString("utf8").split("\0");if(s.at(-1)==="")s.pop();const n=[];for(let e=0;eu.test(e.path)||(e.previousPath?u.test(e.previousPath):false));if(r.length>50)throw new Error("Too many configuration changes for this review.");const s=[];const n=[];for(const e of r){try{if(e.status==="M"){s.push({status:"M",path:e.path,findings:compareConfigs(readConfigAtRef(A,e.path),readConfigAtRef(t,e.path))})}else if(e.status==="A"){readConfigAtRef(t,e.path);s.push({status:"A",path:e.path,findings:[lifecycleFinding("CONFIG_ADDED","configuration","Shopify app configuration file added; review the new environment and its deployment selection")]})}else if(e.status==="D"){s.push({status:"D",path:e.path,findings:[lifecycleFinding("CONFIG_REMOVED","configuration","Shopify app configuration file removed; review which environment remains deployable")]})}else{readConfigAtRef(A,e.previousPath??e.path);readConfigAtRef(t,e.path);s.push({status:"R",previousPath:e.previousPath,path:e.path,findings:[lifecycleFinding("CONFIG_RENAMED","configuration","Shopify app configuration file renamed; review environment selection and deployment workflows"),...compareConfigs(readConfigAtRef(A,e.previousPath??e.path),readConfigAtRef(t,e.path))]})}}catch{n.push({path:e.path,reason:"Configuration could not be analyzed."})}}const i=[...new Set(s.flatMap(e=>e.findings.map(e=>e.ruleId)))].sort();return{schemaVersion:1,note:"Review only; not deployment approval.",files:s,unreviewed:n,changedFileCount:r.length,reviewedFileCount:s.length,unreviewedFileCount:n.length,ruleIds:i}}function reviewPullRequest(e,t){return reviewGitRange(e,t)}},4508:(e,t,A)=>{A.d(t,{E:()=>matchesRiskThreshold,p:()=>validateRiskThreshold});const r={low:1,medium:2,high:3};function validateRiskThreshold(e){if(!["none","low","medium","high"].includes(e))throw new Error("fail_on_risk must be one of: none, low, medium, high")}function matchesRiskThreshold(e,t){if(t==="none")return false;return e.some(e=>r[e.riskLevel??"medium"]>=r[t])}},3720:(e,t,A)=>{A.d(t,{B:()=>renderSummary});function renderSummary(e){if(!Array.isArray(e.files)||!Array.isArray(e.unreviewed)){throw new Error("Invalid ChangeGuard report.")}const t=new Map;const A=new Map;const r=new Map;const s=new Map;let n=0;for(const i of e.files){if(!Array.isArray(i.findings))throw new Error("Invalid findings.");for(const e of i.findings){if(typeof e.ruleId!=="string"||!/^[A-Z][A-Z0-9_]{0,79}$/.test(e.ruleId)){throw new Error("Invalid rule ID.")}t.set(e.ruleId,(t.get(e.ruleId)??0)+1);if(e.category)A.set(e.category,(A.get(e.category)??0)+1);if(e.documentationUrl)r.set(e.ruleId,e.documentationUrl);if(e.riskLevel!==undefined){if(!["low","medium","high"].includes(e.riskLevel))throw new Error("Invalid risk level.");s.set(e.riskLevel,(s.get(e.riskLevel)??0)+1)}n++}}const i=["## ChangeGuard review","","> Review only; not deployment approval.","",`- Configuration files reviewed: ${e.reviewedFileCount??e.files.length}`,`- Review findings: ${n}`,`- Unreviewable configurations: ${e.unreviewedFileCount??e.unreviewed.length}`,"","### Review status",""];if(e.lifecycle)i.splice(7,0,`- New: ${e.lifecycle.newCount}; existing: ${e.lifecycle.existingCount}; resolved: ${e.lifecycle.resolvedCount}`);if(s.size){i.push("","### Findings by risk","","| Risk | Count |","| --- | ---: |");for(const e of["high","medium","low"])if(s.has(e))i.push(`| ${e} | ${s.get(e)} |`);const e=["high","medium","low"].find(e=>s.has(e));i.push("",`Highest risk: **${e}**.`)}if(e.unreviewed.length>0){i.push("**Review incomplete:** Some configurations could not be analysed. The configured failure policy determines the check result.")}else if(n>0){i.push("**Manual review recommended:** Supported-field changes were found. The configured failure policy determines the check result.")}else{i.push("**No supported-field changes detected.** This is not a deployment or security approval.")}if(t.size){i.push("","### Findings by rule","","| Rule | Count |","| --- | ---: |");for(const[e,A]of[...t].sort())i.push(`| ${e} | ${A} |`);if(A.size){i.push("","### Findings by category","","| Category | Count |","| --- | ---: |");for(const[e,t]of[...A].sort())i.push(`| ${e} | ${t} |`)}if(r.size){i.push("","### Rule documentation","");for(const[e,t]of[...r].sort())i.push(`- [${e}](${t})`)}}if(e.unreviewed.length)i.push("","Some configurations could not be reviewed.","See the JSON logs for details.");return`${i.join("\n")}\n`}},3218:(e,t,A)=>{A.d(t,{V4:()=>getInput,C1:()=>setFailed,uH:()=>setOutput,z:()=>N,$e:()=>warning});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("os");function utils_toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}function utils_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}}function command_issueCommand(e,t,A){const s=new Command(e,t,A);process.stdout.write(s.toString()+r.EOL)}function command_issue(e,t=""){command_issueCommand(e,{},t)}const s="::";class Command{constructor(e,t,A){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=A}toString(){let e=s+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 r=this.properties[A];if(r){if(t){t=false}else{e+=","}e+=`${A}=${escapeProperty(r)}`}}}}e+=`${s}${escapeData(this.message)}`;return e}}function escapeData(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}const n=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("crypto");const i=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs");function file_command_issueFileCommand(e,t){const A=process.env[`GITHUB_${e}`];if(!A){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!i.existsSync(A)){throw new Error(`Missing file at path: ${A}`)}i.appendFileSync(A,`${utils_toCommandValue(t)}${r.EOL}`,{encoding:"utf8"})}function file_command_prepareKeyValueMessage(e,t){const A=`ghadelimiter_${n.randomUUID()}`;const s=utils_toCommandValue(t);if(e.includes(A)){throw new Error(`Unexpected input: name should not contain the delimiter "${A}"`)}if(s.includes(A)){throw new Error(`Unexpected input: value should not contain the delimiter "${A}"`)}return`${e}<<${A}${r.EOL}${s}${r.EOL}${A}`}const o=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("path");var a=A(8611);var c=A(5692);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 DecodedURL(A)}catch(e){if(!A.startsWith("http://")&&!A.startsWith("https://"))return new DecodedURL(`http://${A}`)}}else{return undefined}}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 r;if(e.port){r=Number(e.port)}else if(e.protocol==="http:"){r=80}else if(e.protocol==="https:"){r=443}const s=[e.hostname.toUpperCase()];if(typeof r==="number"){s.push(`${s[0]}:${r}`)}for(const e of A.split(",").map(e=>e.trim().toUpperCase()).filter(e=>e)){if(e==="*"||s.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(".")&&t.endsWith(`${e}`))){return true}}return false}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]")}class DecodedURL extends URL{constructor(e,t){super(e,t);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}var l=A(770);var h=A(6752);var g=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var u;(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"})(u||(u={}));var E;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(E||(E={}));var Q;(function(e){e["ApplicationJson"]="application/json"})(Q||(Q={}));function lib_getProxyUrl(e){const t=pm.getProxyUrl(new URL(e));return t?t.href:""}const C=[u.MovedPermanently,u.ResourceMoved,u.SeeOther,u.TemporaryRedirect,u.PermanentRedirect];const B=[u.BadGateway,u.ServiceUnavailable,u.GatewayTimeout];const I=null&&["OPTIONS","GET","DELETE","HEAD"];const d=10;const f=5;class HttpClientError extends Error{constructor(e,t){super(e);this.name="HttpClientError";this.statusCode=t;Object.setPrototypeOf(this,HttpClientError.prototype)}}class HttpClientResponse{constructor(e){this.message=e}readBody(){return g(this,void 0,void 0,function*(){return new Promise(e=>g(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 g(this,void 0,void 0,function*(){return new Promise(e=>g(this,void 0,void 0,function*(){const t=[];this.message.on("data",e=>{t.push(e)});this.message.on("end",()=>{e(Buffer.concat(t))})}))})}}function isHttps(e){const t=new URL(e);return t.protocol==="https:"}class lib_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=this._getUserAgentWithOrchestrationId(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 g(this,void 0,void 0,function*(){return this.request("OPTIONS",e,null,t||{})})}get(e,t){return g(this,void 0,void 0,function*(){return this.request("GET",e,null,t||{})})}del(e,t){return g(this,void 0,void 0,function*(){return this.request("DELETE",e,null,t||{})})}post(e,t,A){return g(this,void 0,void 0,function*(){return this.request("POST",e,t,A||{})})}patch(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PATCH",e,t,A||{})})}put(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PUT",e,t,A||{})})}head(e,t){return g(this,void 0,void 0,function*(){return this.request("HEAD",e,null,t||{})})}sendStream(e,t,A,r){return g(this,void 0,void 0,function*(){return this.request(e,t,A,r)})}getJson(e){return g(this,arguments,void 0,function*(e,t={}){t[E.Accept]=this._getExistingOrDefaultHeader(t,E.Accept,Q.ApplicationJson);const A=yield this.get(e,t);return this._processResponse(A,this.requestOptions)})}postJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.post(e,r,A);return this._processResponse(s,this.requestOptions)})}putJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.put(e,r,A);return this._processResponse(s,this.requestOptions)})}patchJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.patch(e,r,A);return this._processResponse(s,this.requestOptions)})}request(e,t,A,r){return g(this,void 0,void 0,function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const s=new URL(t);let n=this._prepareRequest(e,s,r);const i=this._allowRetries&&I.includes(e)?this._maxRetries+1:1;let o=0;let a;do{a=yield this.requestRaw(n,A);if(a&&a.message&&a.message.statusCode===u.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(a)){e=t;break}}if(e){return e.handleAuthentication(this,n,A)}else{return a}}let t=this._maxRedirects;while(a.message.statusCode&&C.includes(a.message.statusCode)&&this._allowRedirects&&t>0){const i=a.message.headers["location"];if(!i){break}const o=new URL(i);if(s.protocol==="https:"&&s.protocol!==o.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(o.hostname!==s.hostname){for(const e in r){if(e.toLowerCase()==="authorization"){delete r[e]}}}n=this._prepareRequest(e,o,r);a=yield this.requestRaw(n,A);t--}if(!a.message.statusCode||!B.includes(a.message.statusCode)){return a}o+=1;if(o{function callbackForResult(e,t){if(e){r(e)}else if(!t){r(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 r=false;function handleResult(e,t){if(!r){r=true;A(e,t)}}const s=e.httpModule.request(e.options,e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)});let n;s.on("socket",e=>{n=e});s.setTimeout(this._socketTimeout||3*6e4,()=>{if(n){n.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))});s.on("error",function(e){handleResult(e)});if(t&&typeof t==="string"){s.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",function(){s.end()});t.pipe(s)}else{s.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){const t=new URL(e);const A=pm.getProxyUrl(t);const r=A&&A.hostname;if(!r){return}return this._getProxyAgentDispatcher(t,A)}_prepareRequest(e,t,A){const r={};r.parsedUrl=t;const s=r.parsedUrl.protocol==="https:";r.httpModule=s?https:http;const n=s?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):n;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=e;r.options.headers=this._mergeHeaders(A);if(this.userAgent!=null){r.options.headers["user-agent"]=this.userAgent}r.options.agent=this._getAgent(r.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(r.options)}}return r}_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 r;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[t];if(e){r=typeof e==="number"?e.toString():e}}const s=e[t];if(s!==undefined){return typeof s==="number"?s.toString():s}if(r!==undefined){return r}return A}_getExistingOrDefaultContentTypeHeader(e,t){let A;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[E.ContentType];if(e){if(typeof e==="number"){A=String(e)}else if(Array.isArray(e)){A=e.join(", ")}else{A=e}}}const r=e[E.ContentType];if(r!==undefined){if(typeof r==="number"){return String(r)}else if(Array.isArray(r)){return r.join(", ")}else{return r}}if(A!==undefined){return A}return t}_getAgent(e){let t;const A=pm.getProxyUrl(e);const r=A&&A.hostname;if(this._keepAlive&&r){t=this._proxyAgent}if(!r){t=this._agent}if(t){return t}const s=e.protocol==="https:";let n=100;if(this.requestOptions){n=this.requestOptions.maxSockets||http.globalAgent.maxSockets}if(A&&A.hostname){const e={maxSockets:n,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(A.username||A.password)&&{proxyAuth:`${A.username}:${A.password}`}),{host:A.hostname,port:A.port})};let r;const i=A.protocol==="https:";if(s){r=i?tunnel.httpsOverHttps:tunnel.httpsOverHttp}else{r=i?tunnel.httpOverHttps:tunnel.httpOverHttp}t=r(e);this._proxyAgent=t}if(!t){const e={keepAlive:this._keepAlive,maxSockets:n};t=s?new https.Agent(e):new http.Agent(e);this._agent=t}if(s&&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 r=e.protocol==="https:";A=new ProxyAgent(Object.assign({uri:t.href,pipelining:!this._keepAlive?0:1},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString("base64")}`}));this._proxyAgentDispatcher=A;if(r&&this._ignoreSslError){A.options=Object.assign(A.options.requestTls||{},{rejectUnauthorized:false})}return A}_getUserAgentWithOrchestrationId(e){const t=e||"actions/http-client";const A=process.env["ACTIONS_ORCHESTRATION_ID"];if(A){const e=A.replace(/[^a-z0-9_.-]/gi,"_");return`${t} actions_orchestration_id/${e}`}return t}_performExponentialBackoff(e){return g(this,void 0,void 0,function*(){e=Math.min(d,e);const t=f*Math.pow(2,e);return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return g(this,void 0,void 0,function*(){return new Promise((A,r)=>g(this,void 0,void 0,function*(){const s=e.message.statusCode||0;const n={statusCode:s,result:null,headers:{}};if(s===u.NotFound){A(n)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let i;let o;try{o=yield e.readBody();if(o&&o.length>0){if(t&&t.deserializeDates){i=JSON.parse(o,dateTimeDeserializer)}else{i=JSON.parse(o)}n.result=i}n.headers=e.message.headers}catch(e){}if(s>299){let e;if(i&&i.message){e=i.message}else if(o&&o.length>0){e=o}else{e=`Failed request: (${s})`}const t=new HttpClientError(e,s);t.result=n.result;r(t)}else{A(n)}}))})}}const lowercaseKeys=e=>Object.keys(e).reduce((t,A)=>(t[A.toLowerCase()]=e[A],t),{});var p=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}class auth_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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}var w=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};class oidc_utils_OidcClient{static createHttpClient(e=true,t=10){const A={allowRetries:e,maxRetries:t};return new HttpClient("actions/oidc-client",[new BearerCredentialHandler(oidc_utils_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){return w(this,void 0,void 0,function*(){var t;const A=oidc_utils_OidcClient.createHttpClient();const r=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 s=(t=r.result)===null||t===void 0?void 0:t.value;if(!s){throw new Error("Response json body do not have ID Token field")}return s})}static getIDToken(e){return w(this,void 0,void 0,function*(){try{let t=oidc_utils_OidcClient.getIDTokenUrl();if(e){const A=encodeURIComponent(e);t=`${t}&audience=${A}`}debug(`ID token url is ${t}`);const A=yield oidc_utils_OidcClient.getCall(t);setSecret(A);return A}catch(e){throw new Error(`Error message: ${e.message}`)}})}}var y=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{access:m,appendFile:R,writeFile:D}=i.promises;const b="GITHUB_STEP_SUMMARY";const k="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return y(this,void 0,void 0,function*(){if(this._filePath){return this._filePath}const e=process.env[b];if(!e){throw new Error(`Unable to find environment variable for $${b}. Check if your runtime environment supports job summaries.`)}try{yield m(e,i.constants.R_OK|i.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 r=Object.entries(A).map(([e,t])=>` ${e}="${t}"`).join("");if(!t){return`<${e}${r}>`}return`<${e}${r}>${t}`}write(e){return y(this,void 0,void 0,function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const A=yield this.filePath();const r=t?D:R;yield r(A,this._buffer,{encoding:"utf8"});return this.emptyBuffer()})}clear(){return y(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(r.EOL)}addCodeBlock(e,t){const A=Object.assign({},t&&{lang:t});const r=this.wrap("pre",this.wrap("code",e),A);return this.addRaw(r).addEOL()}addList(e,t=false){const A=t?"ol":"ul";const r=e.map(e=>this.wrap("li",e)).join("");const s=this.wrap(A,r);return this.addRaw(s).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:r,rowspan:s}=e;const n=t?"th":"td";const i=Object.assign(Object.assign({},r&&{colspan:r}),s&&{rowspan:s});return this.wrap(n,A,i)}).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:r,height:s}=A||{};const n=Object.assign(Object.assign({},r&&{width:r}),s&&{height:s});const i=this.wrap("img",null,Object.assign({src:e,alt:t},n));return this.addRaw(i).addEOL()}addHeading(e,t){const A=`h${t}`;const r=["h1","h2","h3","h4","h5","h6"].includes(A)?A:"h1";const s=this.wrap(r,e);return this.addRaw(s).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 r=this.wrap("blockquote",e,A);return this.addRaw(r).addEOL()}addLink(e,t){const A=this.wrap("a",e,{href:t});return this.addRaw(A).addEOL()}}const S=new Summary;const F=null&&S;const N=S;function toPosixPath(e){return e.replace(/[\\]/g,"/")}function toWin32Path(e){return e.replace(/[/]/g,"\\")}function toPlatformPath(e){return e.replace(/[/\\]/g,path.sep)}var U=A(3193);var T=A(4434);const M=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("child_process");var L=A(2613);var v=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{chmod:H,copyFile:x,lstat:G,mkdir:Y,open:J,readdir:_,rename:V,rm:O,rmdir:P,stat:W,symlink:q,unlink:Z}=i.promises;const z=process.platform==="win32";function readlink(e){return v(this,void 0,void 0,function*(){const t=yield fs.promises.readlink(e);if(z&&!t.endsWith("\\")){return`${t}\\`}return t})}const K=268435456;const X=i.constants.O_RDONLY;function exists(e){return v(this,void 0,void 0,function*(){try{yield W(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}function isDirectory(e){return v(this,arguments,void 0,function*(e,t=false){const A=t?yield W(e):yield G(e);return A.isDirectory()})}function isRooted(e){e=normalizeSeparators(e);if(!e){throw new Error('isRooted() parameter "p" cannot be empty')}if(z){return e.startsWith("\\")||/^[A-Z]:/i.test(e)}return e.startsWith("/")}function tryGetExecutablePath(e,t){return v(this,void 0,void 0,function*(){let A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){const A=o.extname(e).toUpperCase();if(t.some(e=>e.toUpperCase()===A)){return e}}else{if(isUnixExecutable(A)){return e}}}const r=e;for(const s of t){e=r+s;A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){try{const t=o.dirname(e);const A=o.basename(e).toUpperCase();for(const r of yield _(t)){if(A===r.toUpperCase()){e=o.join(t,r);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(A)){return e}}}}return""})}function normalizeSeparators(e){e=e||"";if(z){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==undefined&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==undefined&&e.uid===process.getuid()}function getCmdPath(){var e;return(e=process.env["COMSPEC"])!==null&&e!==void 0?e:`cmd.exe`}var j=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function cp(e,t){return j(this,arguments,void 0,function*(e,t,A={}){const{force:r,recursive:s,copySourceDirectory:n}=readCopyOptions(A);const i=(yield ioUtil.exists(t))?yield ioUtil.stat(t):null;if(i&&i.isFile()&&!r){return}const o=i&&i.isDirectory()&&n?path.join(t,path.basename(e)):t;if(!(yield ioUtil.exists(e))){throw new Error(`no such file or directory: ${e}`)}const a=yield ioUtil.stat(e);if(a.isDirectory()){if(!s){throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(e,o,0,r)}}else{if(path.relative(e,o)===""){throw new Error(`'${o}' and '${e}' are the same file`)}yield io_copyFile(e,o,r)}})}function mv(e,t){return j(this,arguments,void 0,function*(e,t,A={}){if(yield ioUtil.exists(t)){let r=true;if(yield ioUtil.isDirectory(t)){t=path.join(t,path.basename(e));r=yield ioUtil.exists(t)}if(r){if(A.force==null||A.force){yield rmRF(t)}else{throw new Error("Destination already exists")}}}yield mkdirP(path.dirname(t));yield ioUtil.rename(e,t)})}function rmRF(e){return j(this,void 0,void 0,function*(){if(ioUtil.IS_WINDOWS){if(/[*"<>|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield ioUtil.rm(e,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}})}function mkdirP(e){return j(this,void 0,void 0,function*(){ok(e,"a path argument must be provided");yield ioUtil.mkdir(e,{recursive:true})})}function which(e,t){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(z){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return t}const A=yield findInPath(e);if(A&&A.length>0){return A[0]}return""})}function findInPath(e){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}const t=[];if(z&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(o.delimiter)){if(e){t.push(e)}}}if(isRooted(e)){const A=yield tryGetExecutablePath(e,t);if(A){return[A]}return[]}if(e.includes(o.sep)){return[]}const A=[];if(process.env.PATH){for(const e of process.env.PATH.split(o.delimiter)){if(e){A.push(e)}}}const r=[];for(const s of A){const A=yield tryGetExecutablePath(o.join(s,e),t);if(A){r.push(A)}}return r})}function readCopyOptions(e){const t=e.force==null?true:e.force;const A=Boolean(e.recursive);const r=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:t,recursive:A,copySourceDirectory:r}}function cpDirRecursive(e,t,A,r){return j(this,void 0,void 0,function*(){if(A>=255)return;A++;yield mkdirP(t);const s=yield ioUtil.readdir(e);for(const n of s){const s=`${e}/${n}`;const i=`${t}/${n}`;const o=yield ioUtil.lstat(s);if(o.isDirectory()){yield cpDirRecursive(s,i,A,r)}else{yield io_copyFile(s,i,r)}}yield ioUtil.chmod(t,(yield ioUtil.stat(e)).mode)})}function io_copyFile(e,t,A){return j(this,void 0,void 0,function*(){if((yield ioUtil.lstat(e)).isSymbolicLink()){try{yield ioUtil.lstat(t);yield ioUtil.unlink(t)}catch(e){if(e.code==="EPERM"){yield ioUtil.chmod(t,"0666");yield ioUtil.unlink(t)}}const A=yield ioUtil.readlink(e);yield ioUtil.symlink(A,t,ioUtil.IS_WINDOWS?"junction":null)}else if(!(yield ioUtil.exists(t))||A){yield ioUtil.copyFile(e,t)}})}const $=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("timers");var ee=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const te=process.platform==="win32";class ToolRunner extends T.EventEmitter{constructor(e,t,A){super();if(!e){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=e;this.args=t||[];this.options=A||{}}_debug(e){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(e)}}_getCommandString(e,t){const A=this._getSpawnFileName();const r=this._getSpawnArgs(e);let s=t?"":"[command]";if(te){if(this._isCmdFile()){s+=A;for(const e of r){s+=` ${e}`}}else if(e.windowsVerbatimArguments){s+=`"${A}"`;for(const e of r){s+=` ${e}`}}else{s+=this._windowsQuoteCmdArg(A);for(const e of r){s+=` ${this._windowsQuoteCmdArg(e)}`}}}else{s+=A;for(const e of r){s+=` ${e}`}}return s}_processLineBuffer(e,t,A){try{let s=t+e.toString();let n=s.indexOf(r.EOL);while(n>-1){const e=s.substring(0,n);A(e);s=s.substring(n+r.EOL.length);n=s.indexOf(r.EOL)}return s}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(te){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(te){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const A of this.args){t+=" ";t+=e.windowsVerbatimArguments?A:this._windowsQuoteCmdArg(A)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let A=false;for(const r of e){if(t.some(e=>e===r)){A=true;break}}if(!A){return e}let r='"';let s=true;for(let t=e.length;t>0;t--){r+=e[t-1];if(s&&e[t-1]==="\\"){r+="\\"}else if(e[t-1]==='"'){s=true;r+='"'}else{s=false}}r+='"';return r.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let A=true;for(let r=e.length;r>0;r--){t+=e[r-1];if(A&&e[r-1]==="\\"){t+="\\"}else if(e[r-1]==='"'){A=true;t+="\\"}else{A=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const A={};A.cwd=e.cwd;A.env=e.env;A["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){A.argv0=`"${t}"`}return A}exec(){return ee(this,void 0,void 0,function*(){if(!isRooted(this.toolPath)&&(this.toolPath.includes("/")||te&&this.toolPath.includes("\\"))){this.toolPath=o.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield which(this.toolPath,true);return new Promise((e,t)=>ee(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const A=this._cloneExecOptions(this.options);if(!A.silent&&A.outStream){A.outStream.write(this._getCommandString(A)+r.EOL)}const s=new ExecState(A,this.toolPath);s.on("debug",e=>{this._debug(e)});if(this.options.cwd&&!(yield exists(this.options.cwd))){return t(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const n=this._getSpawnFileName();const i=M.spawn(n,this._getSpawnArgs(A),this._getSpawnOptions(this.options,n));let o="";if(i.stdout){i.stdout.on("data",e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!A.silent&&A.outStream){A.outStream.write(e)}o=this._processLineBuffer(e,o,e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}})})}let a="";if(i.stderr){i.stderr.on("data",e=>{s.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!A.silent&&A.errStream&&A.outStream){const t=A.failOnStdErr?A.errStream:A.outStream;t.write(e)}a=this._processLineBuffer(e,a,e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}})})}i.on("error",e=>{s.processError=e.message;s.processExited=true;s.processClosed=true;s.CheckComplete()});i.on("exit",e=>{s.processExitCode=e;s.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);s.CheckComplete()});i.on("close",e=>{s.processExitCode=e;s.processExited=true;s.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);s.CheckComplete()});s.on("done",(A,r)=>{if(o.length>0){this.emit("stdline",o)}if(a.length>0){this.emit("errline",a)}i.removeAllListeners();if(A){t(A)}else{e(r)}});if(this.options.input){if(!i.stdin){throw new Error("child process missing stdin")}i.stdin.end(this.options.input)}}))})}}function argStringToArray(e){const t=[];let A=false;let r=false;let s="";function append(e){if(r&&e!=='"'){s+="\\"}s+=e;r=false}for(let n=0;n0){t.push(s);s=""}continue}append(i)}if(s.length>0){t.push(s.trim())}return t}class ExecState extends T.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,$.setTimeout)(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}var Ae=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function exec_exec(e,t,A){return Ae(this,void 0,void 0,function*(){const r=tr.argStringToArray(e);if(r.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const s=r[0];t=r.slice(1).concat(t||[]);const n=new tr.ToolRunner(s,t,A);return n.exec()})}function getExecOutput(e,t,A){return Ae(this,void 0,void 0,function*(){var r,s;let n="";let i="";const o=new StringDecoder("utf8");const a=new StringDecoder("utf8");const c=(r=A===null||A===void 0?void 0:A.listeners)===null||r===void 0?void 0:r.stdout;const l=(s=A===null||A===void 0?void 0:A.listeners)===null||s===void 0?void 0:s.stderr;const stdErrListener=e=>{i+=a.write(e);if(l){l(e)}};const stdOutListener=e=>{n+=o.write(e);if(c){c(e)}};const h=Object.assign(Object.assign({},A===null||A===void 0?void 0:A.listeners),{stdout:stdOutListener,stderr:stdErrListener});const g=yield exec_exec(e,t,Object.assign(Object.assign({},A),{listeners:h}));n+=o.end();i+=a.end();return{exitCode:g,stdout:n,stderr:i}})}var re=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const getWindowsInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',undefined,{silent:true});const{stdout:t}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',undefined,{silent:true});return{name:t.trim(),version:e.trim()}});const getMacOsInfo=()=>re(void 0,void 0,void 0,function*(){var e,t,A,r;const{stdout:s}=yield exec.getExecOutput("sw_vers",undefined,{silent:true});const n=(t=(e=s.match(/ProductVersion:\s*(.+)/))===null||e===void 0?void 0:e[1])!==null&&t!==void 0?t:"";const i=(r=(A=s.match(/ProductName:\s*(.+)/))===null||A===void 0?void 0:A[1])!==null&&r!==void 0?r:"";return{name:i,version:n}});const getLinuxInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput("lsb_release",["-i","-r","-s"],{silent:true});const[t,A]=e.trim().split("\n");return{name:t,version:A}});const se=r.platform();const ne=r.arch();const ie=se==="win32";const oe=se==="darwin";const ae=se==="linux";function getDetails(){return re(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield ie?getWindowsInfo():oe?getMacOsInfo():getLinuxInfo()),{platform:se,arch:ne,isWindows:ie,isMacOS:oe,isLinux:ae})})}var ce=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var le;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(le||(le={}));function exportVariable(e,t){const A=toCommandValue(t);process.env[e]=A;const r=process.env["GITHUB_ENV"]||"";if(r){return issueFileCommand("ENV",prepareKeyValueMessage(e,t))}issueCommand("set-env",{name:e},A)}function core_setSecret(e){issueCommand("add-mask",{},e)}function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){issueFileCommand("PATH",e)}else{issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${path.delimiter}${process.env["PATH"]}`}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()}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())}function getBooleanInput(e,t){const A=["true","True","TRUE"];const r=["false","False","FALSE"];const s=getInput(e,t);if(A.includes(s))return true;if(r.includes(s))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\``)}function setOutput(e,t){const A=process.env["GITHUB_OUTPUT"]||"";if(A){return file_command_issueFileCommand("OUTPUT",file_command_prepareKeyValueMessage(e,t))}process.stdout.write(r.EOL);command_issueCommand("set-output",{name:e},utils_toCommandValue(t))}function setCommandEcho(e){issue("echo",e?"on":"off")}function setFailed(e){process.exitCode=le.Failure;error(e)}function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}function core_debug(e){issueCommand("debug",{},e)}function error(e,t={}){command_issueCommand("error",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function warning(e,t={}){command_issueCommand("warning",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function notice(e,t={}){issueCommand("notice",toCommandProperties(t),e instanceof Error?e.toString():e)}function info(e){process.stdout.write(e+os.EOL)}function startGroup(e){issue("group",e)}function endGroup(){issue("endgroup")}function group(e,t){return ce(this,void 0,void 0,function*(){startGroup(e);let A;try{A=yield t()}finally{endGroup()}return A})}function saveState(e,t){const A=process.env["GITHUB_STATE"]||"";if(A){return issueFileCommand("STATE",prepareKeyValueMessage(e,t))}issueCommand("save-state",{name:e},toCommandValue(t))}function getState(e){return process.env[`STATE_${e}`]||""}function getIDToken(e){return ce(this,void 0,void 0,function*(){return yield OidcClient.getIDToken(e)})}}};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 r=true;try{__webpack_modules__[e](A,A.exports,__nccwpck_require__);r=false}finally{if(r)delete __webpack_module_cache__[e]}return A.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=decodeURIComponent(new URL(".",import.meta.url).pathname).slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";(()=>{var e=typeof Symbol==="function"?Symbol("webpack queues"):"__webpack_queues__";var t=typeof Symbol==="function"?Symbol("webpack exports"):"__webpack_exports__";var A=typeof Symbol==="function"?Symbol("webpack error"):"__webpack_error__";var resolveQueue=e=>{if(e&&e.d<1){e.d=1;e.forEach(e=>e.r--);e.forEach(e=>e.r--?e.r++:e())}};var wrapDeps=r=>r.map(r=>{if(r!==null&&typeof r==="object"){if(r[e])return r;if(r.then){var s=[];s.d=0;r.then(e=>{n[t]=e;resolveQueue(s)},e=>{n[A]=e;resolveQueue(s)});var n={};n[e]=e=>e(s);return n}}var i={};i[e]=e=>{};i[t]=r;return i});__nccwpck_require__.a=(r,s,n)=>{var i;n&&((i=[]).d=-1);var o=new Set;var a=r.exports;var c;var l;var h;var g=new Promise((e,t)=>{h=t;l=e});g[t]=a;g[e]=e=>(i&&e(i),o.forEach(e),g["catch"](e=>{}));r.exports=g;s(r=>{c=wrapDeps(r);var s;var getResult=()=>c.map(e=>{if(e[A])throw e[A];return e[t]});var n=new Promise(t=>{s=()=>t(getResult);s.r=0;var fnQueue=e=>e!==i&&!o.has(e)&&(o.add(e),e&&!e.d&&(s.r++,e.push(s)));c.map(t=>t[e](fnQueue))});return s.r?n:getResult()},e=>(e?h(g[A]=e):l(a),resolveQueue(i)));i&&i.d<0&&(i.d=0)}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var A in t){if(__nccwpck_require__.o(t,A)&&!__nccwpck_require__.o(e,A)){Object.defineProperty(e,A,{enumerable:true,get:t[A]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();var __webpack_exports__=__nccwpck_require__(6628);__webpack_exports__=await __webpack_exports__; \ No newline at end of file diff --git a/dist/baseline.js b/dist/baseline.js new file mode 100644 index 0000000..c43461d --- /dev/null +++ b/dist/baseline.js @@ -0,0 +1,205 @@ +import { createHash } from 'node:crypto'; +import { lstat, open, readFile, realpath } from 'node:fs/promises'; +import { isAbsolute, relative, resolve, sep, win32 } from 'node:path'; +const MAX_BASELINE_BYTES = 1024 * 1024; +const MAX_BASELINE_FINDINGS = 10_000; +const hashPattern = /^[a-f0-9]{64}$/; +const rulePattern = /^[A-Z0-9][A-Z0-9_-]{0,99}$/; +export function normaliseRepositoryPath(value) { + if (!value || value.includes('\0')) + throw new Error('Baseline configuration paths must be repository-relative.'); + const path = value.replaceAll('\\', '/'); + if (path.startsWith('/') || /^[A-Za-z]:/.test(path) || isAbsolute(value) || win32.isAbsolute(value)) { + throw new Error('Baseline configuration paths must be repository-relative.'); + } + const parts = path.split('/'); + if (parts.some((part) => part === '..')) + throw new Error('Baseline configuration paths must not traverse directories.'); + const normalised = parts.filter((part) => part && part !== '.').join('/'); + if (!normalised || normalised.length > 2048 || normalised.includes(':')) { + throw new Error('Baseline configuration paths must be repository-relative.'); + } + return normalised; +} +export function findingFingerprint(finding, repositoryPath) { + const path = normaliseRepositoryPath(repositoryPath); + const identity = [ + 'changeguard-baseline-v1', + finding.ruleId, + path, + finding.field, + finding.category ?? 'unspecified', + finding.riskLevel ?? 'medium', + finding.summary, + ]; + return createHash('sha256').update(JSON.stringify(identity), 'utf8').digest('hex'); +} +export function createBaseline(kind, current) { + const grouped = new Map(); + for (const item of current) { + const path = normaliseRepositoryPath(item.path); + const fingerprint = findingFingerprint(item.finding, path); + const existing = grouped.get(fingerprint); + if (existing) { + existing.count++; + } + else { + grouped.set(fingerprint, { + fingerprint, + ruleId: item.finding.ruleId, + path, + field: item.finding.field, + riskLevel: item.finding.riskLevel ?? 'medium', + count: 1, + }); + } + } + if (grouped.size > MAX_BASELINE_FINDINGS) + throw new Error('Too many findings for a ChangeGuard baseline.'); + return { + schemaVersion: 1, + comparisonKind: kind, + findings: [...grouped.values()].sort(compareBaselineFinding), + }; +} +function compareBaselineFinding(a, b) { + return a.path.localeCompare(b.path) || a.ruleId.localeCompare(b.ruleId) || a.field.localeCompare(b.field) || a.fingerprint.localeCompare(b.fingerprint); +} +export function validateBaseline(value) { + if (typeof value !== 'object' || value === null || Array.isArray(value)) + throw new Error('Baseline must be a JSON object.'); + const baseline = value; + if (baseline.schemaVersion !== 1) + throw new Error('Unsupported ChangeGuard baseline schema version.'); + if (!['configuration-pair', 'git-file', 'git-all'].includes(String(baseline.comparisonKind))) { + throw new Error('Baseline comparisonKind is invalid.'); + } + if (!Array.isArray(baseline.findings) || baseline.findings.length > MAX_BASELINE_FINDINGS) { + throw new Error('Baseline findings must be a bounded array.'); + } + let total = 0; + const seen = new Set(); + const findings = baseline.findings.map((raw) => { + if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) + throw new Error('Baseline finding is invalid.'); + const item = raw; + if (typeof item.fingerprint !== 'string' || !hashPattern.test(item.fingerprint) || seen.has(item.fingerprint)) { + throw new Error('Baseline finding fingerprint is invalid or duplicated.'); + } + if (typeof item.ruleId !== 'string' || !rulePattern.test(item.ruleId)) + throw new Error('Baseline finding ruleId is invalid.'); + if (typeof item.path !== 'string' || normaliseRepositoryPath(item.path) !== item.path) + throw new Error('Baseline finding path is invalid.'); + if (typeof item.field !== 'string' || !item.field || item.field.length > 256 || /[\r\n\0]/.test(item.field)) { + throw new Error('Baseline finding field is invalid.'); + } + if (item.riskLevel !== 'low' && item.riskLevel !== 'medium' && item.riskLevel !== 'high') { + throw new Error('Baseline finding riskLevel is invalid.'); + } + if (!Number.isSafeInteger(item.count) || item.count < 1 || item.count > MAX_BASELINE_FINDINGS) { + throw new Error('Baseline finding count is invalid.'); + } + total += item.count; + if (total > MAX_BASELINE_FINDINGS) + throw new Error('Baseline contains too many findings.'); + seen.add(item.fingerprint); + return { + fingerprint: item.fingerprint, + ruleId: item.ruleId, + path: item.path, + field: item.field, + riskLevel: item.riskLevel, + count: item.count, + }; + }); + findings.sort(compareBaselineFinding); + return { schemaVersion: 1, comparisonKind: baseline.comparisonKind, findings }; +} +export function classifyFindings(current, baseline, kind) { + if (baseline && baseline.comparisonKind !== kind) + throw new Error('Baseline comparison type does not match the selected review.'); + const known = new Map((baseline?.findings ?? []).map((item) => [item.fingerprint, item.count])); + const used = new Map(); + const counts = { newCount: 0, existingCount: 0, resolvedCount: 0 }; + const findings = current.map(({ path, finding }) => { + const fingerprint = findingFingerprint(finding, path); + const occurrence = (used.get(fingerprint) ?? 0) + 1; + used.set(fingerprint, occurrence); + const lifecycle = occurrence <= (known.get(fingerprint) ?? 0) ? 'EXISTING' : 'NEW'; + if (lifecycle === 'EXISTING') + counts.existingCount++; + else + counts.newCount++; + return { ...finding, lifecycle }; + }); + const resolvedFindings = []; + if (baseline) { + for (const item of baseline.findings) { + const resolvedCount = item.count - (used.get(item.fingerprint) ?? 0); + if (resolvedCount > 0) { + counts.resolvedCount += resolvedCount; + resolvedFindings.push({ ...item, count: resolvedCount, lifecycle: 'RESOLVED' }); + } + } + } + return { findings, resolvedFindings, counts }; +} +async function checkedBaselinePath(userPath, cwd) { + if (!userPath || userPath.includes('\0') || isAbsolute(userPath) || win32.isAbsolute(userPath)) { + throw new Error('Baseline paths must be relative to the repository root.'); + } + const path = userPath.replaceAll('\\', '/'); + const parts = path.split('/'); + if (parts.some((part) => part === '..')) + throw new Error('Baseline paths must not traverse directories.'); + const clean = parts.filter((part) => part && part !== '.').join('/'); + if (!clean) + throw new Error('Baseline path is invalid.'); + const root = await realpath(cwd); + const absolute = resolve(root, clean); + const rel = relative(root, absolute); + if (!rel || rel.startsWith(`..${sep}`) || rel === '..' || isAbsolute(rel)) + throw new Error('Baseline paths must stay within the repository root.'); + const relativeParts = rel.split(sep); + let cursor = root; + for (const part of relativeParts.slice(0, -1)) { + cursor = resolve(cursor, part); + const info = await lstat(cursor).catch(() => undefined); + if (!info?.isDirectory() || info.isSymbolicLink()) + throw new Error('Baseline parent path must be an existing regular directory.'); + } + return { absolute, relative: rel.split(sep).join('/') }; +} +export async function readBaseline(userPath, cwd = process.cwd()) { + const checked = await checkedBaselinePath(userPath, cwd); + const info = await lstat(checked.absolute).catch(() => undefined); + if (!info?.isFile() || info.isSymbolicLink()) + throw new Error('Baseline must be an existing regular file.'); + if (info.size > MAX_BASELINE_BYTES) + throw new Error('Baseline exceeds the supported size limit.'); + let parsed; + try { + parsed = JSON.parse(await readFile(checked.absolute, 'utf8')); + } + catch { + throw new Error('Baseline is not valid JSON.'); + } + return validateBaseline(parsed); +} +export async function writeBaseline(userPath, baseline, cwd = process.cwd()) { + const checked = await checkedBaselinePath(userPath, cwd); + const body = `${JSON.stringify(validateBaseline(baseline), null, 2)}\n`; + if (Buffer.byteLength(body, 'utf8') > MAX_BASELINE_BYTES) + throw new Error('Baseline exceeds the supported size limit.'); + let handle; + try { + handle = await open(checked.absolute, 'wx', 0o600); + await handle.writeFile(body, 'utf8'); + await handle.close(); + } + catch { + await handle?.close().catch(() => undefined); + throw new Error('Unable to create baseline; the destination may already exist or be unavailable.'); + } + return checked.relative; +} diff --git a/dist/cli.js b/dist/cli.js index 522b60a..179de28 100644 --- a/dist/cli.js +++ b/dist/cli.js @@ -7,28 +7,35 @@ import { reviewGitRange } from './pr-review.js'; import { CHANGEGUARD_VERSION } from './generated-version.js'; import { renderMarkdown } from './markdown.js'; import { matchesRiskThreshold, validateRiskThreshold } from './risk-policy.js'; +import { classifyFindings, createBaseline, normaliseRepositoryPath, readBaseline, writeBaseline, } from './baseline.js'; +import { isAbsolute, relative, resolve } from 'node:path'; const VERSION = CHANGEGUARD_VERSION; function usage(exitCode = 2) { const output = `ChangeGuard ${VERSION} Usage: - changeguard --before FILE --after FILE [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] + changeguard --before FILE --after FILE [--config-path PATH] [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] changeguard --base-ref REF --head-ref REF --file PATH [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] changeguard --base-ref REF --head-ref REF --all-configs [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] + changeguard baseline create --baseline FILE [comparison options] + changeguard baseline check --baseline FILE [comparison options] [--fail-on-new] Options: --json Emit a machine-readable report (alias for --format json). --format FORMAT Emit human, json, or markdown output. + --config-path PATH Repository-relative identity for an explicit TOML comparison. + --baseline FILE Read a baseline, or create one with 'baseline create'. --fail-on LEVEL never (default), review, or unreviewed. --fail-on-risk LEVEL Fail when any finding reaches none, low, medium, or high risk. + --fail-on-new Fail when a finding is new against the selected baseline. --all-configs Review every changed shopify.app*.toml file in a Git range. --help Show this help. --version Show the version. Exit codes: 0 Analysis completed without a configured failure condition. - 1 Findings reached --fail-on review. - 2 Input or analysis error, or an unreviewed configuration. + 1 Findings reached a configured finding or risk threshold. + 2 Input or analysis error, or an incomplete review under the selected policy. `; (exitCode === 0 ? console.log : console.error)(output); process.exit(exitCode); @@ -47,8 +54,61 @@ async function readConfig(path) { throw new Error('Invalid TOML in ' + path + '; file contents were not printed'); } } +function itemsForGitReport(report) { + return report.files.flatMap((file) => file.findings.map((finding) => ({ path: file.path, finding }))); +} +function withGitLifecycle(report, result) { + let index = 0; + const files = report.files.map((file) => ({ + ...file, + findings: file.findings.map(() => result.findings[index++]), + })); + return { ...report, files, lifecycle: result.counts, resolvedFindings: result.resolvedFindings }; +} +function pathForExplicitComparison(after, requested) { + if (requested) + return normaliseRepositoryPath(requested); + const absoluteAfter = resolve(after); + const relativeAfter = relative(process.cwd(), absoluteAfter); + if (!relativeAfter || relativeAfter === '..' || relativeAfter.startsWith(`..${process.platform === 'win32' ? '\\' : '/'}`) || isAbsolute(relativeAfter)) { + throw new Error('Use --config-path with a repository-relative path when the compared file is outside the repository.'); + } + return normaliseRepositoryPath(relativeAfter); +} +function printLifecycleCounts(result) { + return `Lifecycle: ${result.counts.newCount} new, ${result.counts.existingCount} existing, ${result.counts.resolvedCount} resolved.`; +} +function outputGitReport(report, format) { + if (format === 'json') + console.log(JSON.stringify(report, null, 2)); + else if (format === 'markdown') + console.log(renderMarkdown(report)); + else { + console.log(`ChangeGuard v${VERSION}`); + console.log(report.note); + for (const reviewed of report.files) + for (const finding of reviewed.findings) { + console.log(`[${(finding.lifecycle ?? finding.riskLevel ?? 'medium').toString()}] ${finding.ruleId}: ${finding.summary}`); + } + for (const finding of report.resolvedFindings ?? []) + console.log(`[RESOLVED] ${finding.path}: ${finding.ruleId} (${finding.count})`); + console.log(`${report.files.flatMap((item) => item.findings).length} finding(s) across ${report.reviewedFileCount} reviewed configuration file(s).`); + if (report.lifecycle) + console.log(`Lifecycle: ${report.lifecycle.newCount} new, ${report.lifecycle.existingCount} existing, ${report.lifecycle.resolvedCount} resolved.`); + if (report.unreviewed.length) + console.log(`${report.unreviewed.length} configuration file(s) could not be reviewed.`); + } +} async function main() { - const args = process.argv.slice(2); + let args = process.argv.slice(2); + let baselineCommand; + if (args[0] === 'baseline') { + const command = args[1]; + if (command !== 'create' && command !== 'check') + usage(); + baselineCommand = command; + args = args.slice(2); + } let before; let after; let json = false; @@ -59,6 +119,9 @@ async function main() { let allConfigs = false; let failOn = 'never'; let failOnRisk = 'none'; + let failOnNew = false; + let baselinePath; + let configPath; const valueFor = (name, index) => { const value = args[index + 1]; if (!value || value.startsWith('--')) @@ -91,6 +154,12 @@ async function main() { headRef = valueFor(arg, i++); else if (arg === '--file') file = valueFor(arg, i++); + else if (arg === '--baseline') + baselinePath = valueFor(arg, i++); + else if (arg === '--config-path') + configPath = valueFor(arg, i++); + else if (arg === '--fail-on-new') + failOnNew = true; else if (arg === '--all-configs') allConfigs = true; else if (arg === '--fail-on') { @@ -112,56 +181,109 @@ async function main() { else usage(); } + if (baselineCommand === 'create' && (!baselinePath || failOnNew)) + usage(); + if (baselineCommand === 'check' && !baselinePath) + usage(); + if (baselineCommand === undefined && failOnNew && baselinePath === undefined) { + // An empty baseline is explicit and useful when introducing a new gate. + } + const createMode = baselineCommand === 'create'; + const checkMode = baselineCommand === 'check' || (baselineCommand === undefined && baselinePath !== undefined); + const lifecycleMode = checkMode || failOnNew; const fileMode = before !== undefined || after !== undefined; - const gitMode = baseRef !== undefined || headRef !== undefined || file !== undefined; + const gitMode = baseRef !== undefined || headRef !== undefined || file !== undefined || allConfigs; if (fileMode === gitMode) usage(); if (json && format !== undefined && format !== 'json') usage(2); format = json ? 'json' : format ?? 'human'; - let oldConfig; - let newConfig; + let baseline; + if (checkMode && baselinePath) + baseline = await readBaseline(baselinePath); if (gitMode) { - if (!baseRef || !headRef || (file === undefined && !allConfigs) || (file !== undefined && allConfigs)) + if (!baseRef || !headRef || (file === undefined && !allConfigs) || (file !== undefined && allConfigs) || configPath !== undefined) usage(); if (allConfigs) { - const report = reviewGitRange(resolveCommitRef(baseRef), resolveCommitRef(headRef)); - if (format === 'json') - console.log(JSON.stringify(report, null, 2)); - else if (format === 'markdown') - console.log(renderMarkdown(report)); - else { - console.log(`ChangeGuard v${VERSION}`); - console.log(report.note); - for (const reviewed of report.files) - for (const finding of reviewed.findings) - console.log(`[${(finding.riskLevel ?? 'medium').toUpperCase()}] ${finding.ruleId}: ${finding.summary}`); - console.log(`${report.files.flatMap((item) => item.findings).length} finding(s) across ${report.reviewedFileCount} reviewed configuration file(s).`); - if (report.unreviewed.length) - console.log(`${report.unreviewed.length} configuration file(s) could not be reviewed.`); + const originalReport = reviewGitRange(resolveCommitRef(baseRef), resolveCommitRef(headRef)); + if (createMode && originalReport.unreviewed.length > 0) { + outputGitReport(originalReport, format); + process.exitCode = 2; + return; + } + const report = lifecycleMode + ? withGitLifecycle(originalReport, classifyFindings(itemsForGitReport(originalReport), baseline, 'git-all')) + : originalReport; + if (createMode && baselinePath) { + const current = itemsForGitReport(originalReport); + const created = createBaseline('git-all', current); + await writeBaseline(baselinePath, created); + if (format === 'json') + console.log(JSON.stringify({ schemaVersion: 1, baselineCreated: true, findingCount: current.length }, null, 2)); + else + console.log(`Baseline created with ${current.length} finding(s).`); + return; } - if (failOn !== 'never' && report.unreviewed.length > 0) + outputGitReport(report, format); + if (report.unreviewed.length > 0 && (failOn !== 'never' || failOnNew)) process.exitCode = 2; else if (matchesRiskThreshold(report.files.flatMap((item) => item.findings), failOnRisk)) process.exitCode = 1; + else if (failOnNew && (report.lifecycle?.newCount ?? 0) > 0) + process.exitCode = 1; else if (failOn === 'review' && report.files.some((item) => item.findings.length > 0)) process.exitCode = 1; return; } - oldConfig = readConfigAtRef(baseRef, file); - newConfig = readConfigAtRef(headRef, file); - } - else { - if (!before || !after) - usage(); - [oldConfig, newConfig] = await Promise.all([ - readConfig(before), - readConfig(after), - ]); + const selectedPath = normaliseRepositoryPath(file); + const oldConfig = readConfigAtRef(baseRef, selectedPath); + const newConfig = readConfigAtRef(headRef, selectedPath); + const findings = compareConfigs(oldConfig, newConfig); + const kind = 'git-file'; + const lifecycle = lifecycleMode ? classifyFindings(findings.map((finding) => ({ path: selectedPath, finding })), baseline, kind) : undefined; + const note = 'Only documented semantic changes in supported Shopify app configuration fields are examined; Shopify CLI remains responsible for schema validation and unsupported fields are not checked.'; + const report = { schemaVersion: 1, note, findings: lifecycle?.findings ?? findings, ...(lifecycle ? { lifecycle: lifecycle.counts, resolvedFindings: lifecycle.resolvedFindings } : {}) }; + if (format === 'json') + console.log(JSON.stringify(report, null, 2)); + else if (format === 'markdown') + console.log(renderMarkdown(report)); + else { + console.log(`ChangeGuard v${VERSION}`); + console.log(note); + for (const finding of report.findings) + console.log(`[${finding.lifecycle ?? 'REVIEW'}] ${finding.ruleId}: ${finding.summary}`); + for (const finding of report.resolvedFindings ?? []) + console.log(`[RESOLVED] ${finding.path}: ${finding.ruleId} (${finding.count})`); + console.log(`${findings.length} finding(s).`); + if (lifecycle) + console.log(printLifecycleCounts(lifecycle)); + } + if (matchesRiskThreshold(findings, failOnRisk) || failOn === 'review' && findings.length > 0 || failOnNew && (lifecycle?.counts.newCount ?? 0) > 0) + process.exitCode = 1; + return; } + if (!before || !after) + usage(); + if (configPath && !lifecycleMode && !createMode) + usage(); + const [oldConfig, newConfig] = await Promise.all([readConfig(before), readConfig(after)]); const findings = compareConfigs(oldConfig, newConfig); + const selectedPath = lifecycleMode || createMode ? pathForExplicitComparison(after, configPath) : undefined; + const kind = 'configuration-pair'; + if (createMode && baselinePath) { + const created = createBaseline(kind, findings.map((finding) => ({ path: selectedPath, finding }))); + await writeBaseline(baselinePath, created); + if (format === 'json') + console.log(JSON.stringify({ schemaVersion: 1, baselineCreated: true, findingCount: findings.length }, null, 2)); + else + console.log(`Baseline created with ${findings.length} finding(s).`); + return; + } + const lifecycle = lifecycleMode + ? classifyFindings(findings.map((finding) => ({ path: selectedPath, finding })), baseline, kind) + : undefined; const note = 'Only documented semantic changes in supported Shopify app configuration fields are examined; Shopify CLI remains responsible for schema validation and unsupported fields are not checked.'; - const report = { schemaVersion: 1, note, findings }; + const report = { schemaVersion: 1, note, findings: lifecycle?.findings ?? findings, ...(lifecycle ? { lifecycle: lifecycle.counts, resolvedFindings: lifecycle.resolvedFindings } : {}) }; if (format === 'json') console.log(JSON.stringify(report, null, 2)); else if (format === 'markdown') @@ -171,11 +293,15 @@ async function main() { console.log(note); if (!findings.length) console.log('No supported-field changes found; this is NOT a deployment approval.'); - for (const finding of findings) - console.log(`[REVIEW] ${finding.ruleId}: ${finding.summary}`); + for (const finding of report.findings) + console.log(`[${finding.lifecycle ?? 'REVIEW'}] ${finding.ruleId}: ${finding.summary}`); + for (const finding of report.resolvedFindings ?? []) + console.log(`[RESOLVED] ${finding.path}: ${finding.ruleId} (${finding.count})`); console.log(`${findings.length} finding(s).`); + if (lifecycle) + console.log(printLifecycleCounts(lifecycle)); } - if (matchesRiskThreshold(findings, failOnRisk) || failOn === 'review' && findings.length > 0) + if (matchesRiskThreshold(findings, failOnRisk) || failOn === 'review' && findings.length > 0 || failOnNew && (lifecycle?.counts.newCount ?? 0) > 0) process.exitCode = 1; } main().catch((err) => { diff --git a/dist/markdown.js b/dist/markdown.js index 74a54d5..54bcff3 100644 --- a/dist/markdown.js +++ b/dist/markdown.js @@ -1,6 +1,7 @@ const escape = (value) => String(value ?? '').replace(/[\\`*_{}\[\]()<>#+.!|]/g, '\\$&').replace(/[\r\n]+/g, ' '); function appendFinding(lines, finding) { - lines.push('', `### ${escape(finding.ruleId)} — ${escape(finding.riskLevel ?? 'medium')} risk`, '', escape(finding.summary), '', `Risk rationale: ${escape(finding.riskRationale ?? 'Review the operational impact of this configuration change.')}`, '', 'Suggested action: Review the affected setting and intended behaviour before deployment.', '', `Category: ${escape(finding.category ?? 'unspecified')}.`, `Evidence: ${finding.documentationUrl ? `[official Shopify reference](${finding.documentationUrl})` : 'No rule-specific reference available'}.`); + const lifecycle = finding.lifecycle ? ` — ${finding.lifecycle}` : ''; + lines.push('', `### ${escape(finding.ruleId)} — ${escape(finding.riskLevel ?? 'medium')} risk${escape(lifecycle)}`, '', escape(finding.summary), '', `Risk rationale: ${escape(finding.riskRationale ?? 'Review the operational impact of this configuration change.')}`, '', 'Suggested action: Review the affected setting and intended behaviour before deployment.', '', `Category: ${escape(finding.category ?? 'unspecified')}.`, `Evidence: ${finding.documentationUrl ? `[official Shopify reference](${finding.documentationUrl})` : 'No rule-specific reference available'}.`); } export function renderMarkdown(report) { const files = report.files ?? []; @@ -16,6 +17,9 @@ export function renderMarkdown(report) { `- Configurations requiring review: ${report.unreviewedFileCount ?? unreviewed.length}`, '- Findings are grouped by configuration file; environment names are not inferred from filenames.', ]; + if (report.lifecycle) { + lines.push(`- New: ${report.lifecycle.newCount}; existing: ${report.lifecycle.existingCount}; resolved: ${report.lifecycle.resolvedCount}`); + } if (risks.length) lines.push('', '## Findings by risk', '', '| Risk | Count |', '| --- | ---: |', ...risks.map(([risk, count]) => `| ${risk} | ${count} |`)); if (files.length) @@ -36,6 +40,11 @@ export function renderMarkdown(report) { for (const item of unreviewed) lines.push(`- \`${escape(item.path)}\`: ${escape(item.reason)}`); } + if (report.resolvedFindings?.length) { + lines.push('', '## Resolved baseline findings', ''); + for (const finding of report.resolvedFindings) + lines.push(`- \`${escape(finding.path)}\`: ${escape(finding.ruleId)} (${finding.count})`); + } if (!findings.length && !unreviewed.length) lines.push('', 'No supported-field changes were found. This is not a deployment or security approval.'); return `${lines.join('\n')}\n`; diff --git a/dist/summary.js b/dist/summary.js index 6ad8ce7..a850942 100644 --- a/dist/summary.js +++ b/dist/summary.js @@ -35,6 +35,8 @@ export function renderSummary(report) { `- Unreviewable configurations: ${report.unreviewedFileCount ?? report.unreviewed.length}`, '', '### Review status', '', ]; + if (report.lifecycle) + lines.splice(7, 0, `- New: ${report.lifecycle.newCount}; existing: ${report.lifecycle.existingCount}; resolved: ${report.lifecycle.resolvedCount}`); if (risks.size) { lines.push('', '### Findings by risk', '', '| Risk | Count |', '| --- | ---: |'); for (const risk of ['high', 'medium', 'low']) diff --git a/docs/architecture.md b/docs/architecture.md index ff23505..089da4b 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,5 +1,5 @@ # Architecture -TypeScript comparison modules parse only supported parts of a TOML object. `core.ts` orchestrates deterministic rules for scopes, app settings, IDs, URLs, access, customer authentication, app proxy, POS, preferences, discovery directories, webhooks, and Events subscriptions. Rule metadata is kept in the small `rule-catalog.ts` catalogue. `git-refs.ts` reads committed blobs through argument-array Git calls. The PR review runner discovers changed `shopify.app*.toml` files, deliberately handles additions/deletions/renames, and fails closed for malformed supported files. +TypeScript comparison modules parse only supported parts of a TOML object. `core.ts` orchestrates deterministic rules for scopes, app settings, IDs, URLs, access, customer authentication, app proxy, POS, preferences, discovery directories, webhooks, and Events subscriptions. Rule metadata is kept in the small `rule-catalog.ts` catalogue. `git-refs.ts` reads committed blobs through argument-array Git calls. The PR review runner discovers changed `shopify.app*.toml` files, deliberately handles additions/deletions/renames, and fails closed for malformed supported files. `baseline.ts` validates bounded, versioned baseline files and fingerprints redacted findings using repository-relative identities. -The CLI remains a normal npm package. `scripts/write-version.mjs` generates the CLI version from `package.json` before TypeScript compilation, so prerelease builds and stable packages cannot drift. `src/action.ts` is bundled with ncc into `dist/action/index.js`, the committed GitHub Action entry point. The Action and local PR runner share the same review implementation and summary model. +The CLI remains a normal npm package with a Node.js 22 minimum. `scripts/write-version.mjs` generates the CLI version from `package.json` before TypeScript compilation, so prerelease builds and stable packages cannot drift. `src/action.ts` is bundled with ncc into `dist/action/index.js`, the committed GitHub Action entry point. The Action and local PR runner share the same review implementation and summary model. diff --git a/docs/cli.md b/docs/cli.md index 68eddbf..4cc80df 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -18,6 +18,19 @@ Repository-wide Git comparison: changeguard --base-ref main --head-ref HEAD --all-configs [--format human|json|markdown] [--fail-on never|review|unreviewed] [--fail-on-risk none|low|medium|high] ``` +Create and check a baseline from the same kind of comparison: + +```sh +changeguard baseline create --baseline changeguard-baseline.json --base-ref main --head-ref HEAD --all-configs +changeguard baseline check --baseline changeguard-baseline.json --base-ref main --head-ref HEAD --all-configs --fail-on-new +``` + +The repository includes a valid example baseline at [`docs/examples/changeguard-baseline.json`](examples/changeguard-baseline.json), generated from the synthetic before/after configuration pair in `examples/`. + +`baseline create` accepts a configuration pair, one Git-selected file, or `--all-configs`. It writes a versioned JSON file and will not overwrite an existing destination. Creation stops if any selected configuration could not be analysed. `baseline check` uses the same comparison options and adds `NEW`, `EXISTING`, and `RESOLVED` lifecycle metadata. The shorthand `--baseline FILE` on an existing comparison command also checks that baseline. + +Baselines contain only a schema version, comparison kind, grouped finding fingerprints, rule IDs, safe repository-relative configuration paths, fields, risk levels, and duplicate counts. They omit commit IDs, timestamps, absolute paths, finding summaries, and raw configuration values. A renamed file is a new identity: findings at the old path resolve and findings at the new path are new. For an explicit before/after comparison outside the repository, pass `--config-path` with a repository-relative identity. + The repository-wide mode discovers `shopify.app.toml` and named `shopify.app..toml` files, reviews additions, deletions, renames, and modifications, and caps a single review at 50 changed configuration files. @@ -29,3 +42,7 @@ and modifications, and caps a single review at 50 changed configuration files. Repository-wide output groups findings by configuration path. It does not infer deployment environments from filenames. Invalid input, malformed TOML, missing files, and unsafe Git changes exit 2. Output is deterministic and findings do not include protected configuration values. JSON findings include `riskLevel` (`low`, `medium`, or `high`) and `riskRationale`. Human-readable Git-range output prefixes each finding with its risk level. Risk is deterministic review guidance; it does not change exit codes or mean that a configuration is valid or approved. + +`--fail-on-new` fails only when the current report contains a new finding. `--fail-on` and `--fail-on-risk` still apply to all current findings, including existing high-risk findings. Incomplete Git reviews fail with exit code 2 under `--fail-on-new`. Missing, malformed, unsupported-version, symlinked, or out-of-repository baselines fail closed with exit code 2. + +When `--fail-on-new` is used without `--baseline`, the selected comparison is checked against an empty baseline, so every current finding is new. This does not create or write a baseline file. diff --git a/docs/ecosystem-workflow.md b/docs/ecosystem-workflow.md index 7612878..68f5218 100644 --- a/docs/ecosystem-workflow.md +++ b/docs/ecosystem-workflow.md @@ -2,6 +2,12 @@ This pull-request workflow runs the currently published ChangeGuard, Upgrade Guard, Scope Guard, and App Review Guard Actions as separate read-only checks. Each Action is pinned to the full commit SHA documented for its current patch release. `actions/checkout` fetches history for Upgrade Guard's base/head comparison and does not persist its token. +## Local integration smoke test + +The synthetic consumer app in `ecosystem-fixtures/` exercises the local CLI checkouts without Shopify credentials, network services, or workflow permissions. With the four repository directories side by side, run `node scripts/ecosystem-smoke.mjs` from ChangeGuard under Node.js 22 or 24. Set `REXCODE_OSS_REPOS_DIR` to the parent directory if the checkouts are elsewhere. The script creates and removes a temporary Git repository, checks ChangeGuard's existing/new finding lifecycle, Upgrade Guard's 2027-01 `owner_type` finding, Scope Guard's missing product-read-scope evidence, and App Review Guard's Next.js webhook route review. + +This validates the local CLI implementations on the selected runtime. It does not exercise GitHub Actions or hosted CI. The workflow below continues to pin released Action commits; do not point it at an unreleased feature branch before review and release. + ```yaml name: Shopify review tools @@ -19,7 +25,7 @@ jobs: with: fetch-depth: 0 persist-credentials: false - - uses: RexCode-Digital/shopify-app-changeguard@67ef54c622788e11b33caab7d9da51ce07294512 # v0.5.2 + - uses: RexCode-Digital/shopify-app-changeguard@1a3e21bfb9cc720b02eb1bc76c3c84672cb2d798 # v0.6.0 with: base_sha: ${{ github.event.pull_request.base.sha }} head_sha: ${{ github.event.pull_request.head.sha }} @@ -32,7 +38,7 @@ jobs: with: fetch-depth: 0 persist-credentials: false - - uses: RexCode-Digital/shopify-upgrade-guard@b0a6816f95d783f703bf031c9920004fbb865bc1 # v0.2.6 + - uses: RexCode-Digital/shopify-upgrade-guard@4bb40f702743cfb0778707b826cb9898944787b4 # v0.3.0 with: target: 2026-10 fail-on: warning @@ -44,7 +50,7 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: RexCode-Digital/shopify-scope-guard@30d08c644114399c0ee0257954205b97fb9fcbd3 # v0.2.4 + - uses: RexCode-Digital/shopify-scope-guard@ec789d778fb2986589625f35c2f48c51259c8919 # v0.3.0 with: fail-on: high @@ -54,7 +60,7 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: RexCode-Digital/shopify-app-review-guard@14aa6c92d68c3f52ea06e8bb608328ce19f998d7 # v0.1.5 + - uses: RexCode-Digital/shopify-app-review-guard@886a729183227ab742effcf7dfea32bbe9756e09 # v0.2.0 with: format: human fail-on: high diff --git a/docs/examples/changeguard-baseline.json b/docs/examples/changeguard-baseline.json new file mode 100644 index 0000000..5148f3e --- /dev/null +++ b/docs/examples/changeguard-baseline.json @@ -0,0 +1,14 @@ +{ + "schemaVersion": 1, + "comparisonKind": "configuration-pair", + "findings": [ + { + "fingerprint": "8e226958b24ce252bebd9f6054549e4f4d080cb74c588d3c6a62d8bc050db9c9", + "ruleId": "SCOPE_OPTIONAL_TO_REQUIRED", + "path": "shopify.app.toml", + "field": "access_scopes", + "riskLevel": "high", + "count": 1 + } + ] +} diff --git a/docs/github-action.md b/docs/github-action.md index d19aa3d..0b5cfd9 100644 --- a/docs/github-action.md +++ b/docs/github-action.md @@ -44,6 +44,17 @@ either policy can fail the job. `fail_on: never` retains its existing meaning; an incomplete result is exposed as `outcome: incomplete` even when the job is allowed to continue. +Set `baseline_path` to a repository-relative versioned baseline JSON file to +classify findings as `NEW`, `EXISTING`, or `RESOLVED`. Set `fail_on_new: true` +to fail only on new findings. The existing `fail_on` and `fail_on_risk` policies +remain independent and still apply to existing findings. The Action exposes +`new_finding_count`, `existing_finding_count`, and `resolved_finding_count` +when `baseline_path` or `fail_on_new` enables classification; these outputs +are empty otherwise. With `fail_on_new: true` and no baseline file, all +findings in the selected comparison are new. Missing or invalid baseline +input fails the action. The Action reads the +baseline and does not write or update it. + The example above pins v0.5.2. That release does not support `fail_on_risk` or `risk_threshold_exceeded`; both are part of the unreleased changes here. Review outcomes: diff --git a/docs/support-matrix.md b/docs/support-matrix.md index a493ed8..3a3767f 100644 --- a/docs/support-matrix.md +++ b/docs/support-matrix.md @@ -1,6 +1,6 @@ # Shopify app configuration support matrix -Reviewed against Shopify's [app configuration reference](https://shopify.dev/docs/apps/build/cli-for-apps/app-configuration) and [configuration-file management guide](https://shopify.dev/docs/apps/build/cli-for-apps/manage-app-config-files) on 2026-09-27. +Reviewed against Shopify's [app configuration reference](https://shopify.dev/docs/apps/build/cli-for-apps/app-configuration) and [configuration-file management guide](https://shopify.dev/docs/apps/build/cli-for-apps/manage-app-config-files) on 2026-10-21. ChangeGuard reviews semantic differences between configuration revisions. It does not replace `shopify app config validate --json`; Shopify CLI remains responsible for complete schema and value validation. @@ -25,3 +25,5 @@ ChangeGuard reviews semantic differences between configuration revisions. It doe | `shopify.extension.toml` | Not supported in the current scope | Extension configuration is a separate type-specific system. | ChangeGuard is offline, read-only, deterministic, and independent from Shopify. It does not call Shopify APIs, approve deployments, certify security, or validate credentials. + +The CLI requires Node.js 22 or newer. CI covers Node.js 22 and 24. The GitHub Action uses the Node.js 24 Action runtime. diff --git a/docs/threat-model.md b/docs/threat-model.md index 5ca79d0..64f0bde 100644 --- a/docs/threat-model.md +++ b/docs/threat-model.md @@ -13,6 +13,8 @@ ChangeGuard reviews committed Shopify app TOML in local or GitHub Actions enviro An attacker may try to execute through a malicious ref or path, cause denial of service with oversized input, exfiltrate configuration through findings or errors, or make a change appear reviewed when it was not. Commit SHA validation, repository-relative paths, file-size limits, `--` separators, redacted findings, fail-closed parsing, a bundled Action, least-privilege permissions, and regression tests address these risks. +Baseline files are treated as untrusted input. Reads reject symlinks, out-of-repository paths, oversized files, malformed entries, and unknown schema versions. Creation uses an exclusive new-file operation and does not overwrite an existing baseline. Baselines contain repository-relative paths and opaque fingerprints, not raw configuration values, finding summaries, commit IDs, or absolute checkout paths. + ## Known limitations ChangeGuard does not prove that Shopify will accept a configuration, that a URL is deployed securely, that scopes are justified by application code, or that webhook handlers verify signatures. A clean report means only that no supported semantic change was found in the compared input. diff --git a/ecosystem-fixtures/app/api/webhooks/products/route.ts b/ecosystem-fixtures/app/api/webhooks/products/route.ts new file mode 100644 index 0000000..59b384d --- /dev/null +++ b/ecosystem-fixtures/app/api/webhooks/products/route.ts @@ -0,0 +1,4 @@ +export async function POST(request: Request) { + const payload = await request.json(); + return Response.json({ received: Boolean(payload) }); +} diff --git a/ecosystem-fixtures/extensions/metafield-example/shopify.extension.toml b/ecosystem-fixtures/extensions/metafield-example/shopify.extension.toml new file mode 100644 index 0000000..a9cb5e4 --- /dev/null +++ b/ecosystem-fixtures/extensions/metafield-example/shopify.extension.toml @@ -0,0 +1,13 @@ +api_version = "2026-10" + +[[extensions]] +type = "ui_extension" +name = "Synthetic checkout extension" + +[[extensions.targeting]] +target = "purchase.checkout.block.render" +module = "./src/Checkout.tsx" + +[[extensions.metafields]] +namespace = "$app:example" +key = "customer_preference" diff --git a/ecosystem-fixtures/shopify.app.toml b/ecosystem-fixtures/shopify.app.toml new file mode 100644 index 0000000..8b0bb7f --- /dev/null +++ b/ecosystem-fixtures/shopify.app.toml @@ -0,0 +1,12 @@ +client_id = "a61950a2cbd5f32876b0b55587ec7a27" +api_version = "2026-10" + +[access_scopes] +scopes = "" + +[webhooks] +api_version = "2026-10" + +[[webhooks.subscriptions]] +topics = ["products/update"] +uri = "https://shop.example.test/api/webhooks/products" diff --git a/package-lock.json b/package-lock.json index f1393e8..ceae493 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "typescript": "7.0.2" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@actions/core": { diff --git a/package.json b/package.json index 017e7ab..a25bb53 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Offline semantic review of Shopify app configuration changes, with risk findings for CI and pull requests.", "type": "module", "engines": { - "node": ">=20" + "node": ">=22" }, "bin": { "changeguard": "dist/cli.js" @@ -57,6 +57,7 @@ "LICENSE", "THIRD_PARTY_NOTICES.md", "dist/cli.js", + "dist/baseline.js", "dist/client-id.js", "dist/core.js", "dist/git-refs.js", diff --git a/scripts/ecosystem-smoke.mjs b/scripts/ecosystem-smoke.mjs new file mode 100644 index 0000000..8a24085 --- /dev/null +++ b/scripts/ecosystem-smoke.mjs @@ -0,0 +1,94 @@ +import assert from 'node:assert/strict'; +import { execFileSync, spawnSync } from 'node:child_process'; +import { cpSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { dirname, join, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const changeguardRoot = resolve(fileURLToPath(new URL('..', import.meta.url))); +const repositoriesRoot = resolve(process.env.REXCODE_OSS_REPOS_DIR || dirname(changeguardRoot)); +const roots = { + changeguard: changeguardRoot, + upgrade: join(repositoriesRoot, 'shopify-upgrade-guard'), + scope: join(repositoriesRoot, 'shopify-scope-guard'), + appReview: join(repositoriesRoot, 'shopify-app-review-guard'), +}; +const fixtureSource = join(changeguardRoot, 'ecosystem-fixtures'); +const workspace = mkdtempSync(join(tmpdir(), 'rexcode-ecosystem-smoke-')); +const appRoot = join(workspace, 'consumer-app'); + +function runNode(root, script, args, { expectedStatus = 0 } = {}) { + const result = spawnSync(process.execPath, [join(root, script), ...args], { + cwd: appRoot, + encoding: 'utf8', + timeout: 30_000, + maxBuffer: 4 * 1024 * 1024, + env: { ...process.env, CI: '1' }, + }); + if (result.error) throw result.error; + assert.equal(result.status, expectedStatus, `${script} exited ${result.status}:\n${result.stderr}\n${result.stdout}`); + return result.stdout; +} + +function commit(message) { + execFileSync('git', ['add', '-A'], { cwd: appRoot, stdio: 'ignore' }); + execFileSync('git', ['commit', '-m', message], { cwd: appRoot, stdio: 'ignore' }); + return execFileSync('git', ['rev-parse', 'HEAD'], { cwd: appRoot, encoding: 'utf8' }).trim(); +} + +try { + mkdirSync(appRoot); + for (const entry of readdirSync(fixtureSource)) cpSync(join(fixtureSource, entry), join(appRoot, entry), { recursive: true }); + execFileSync('git', ['init', '-q', '-b', 'main'], { cwd: appRoot }); + execFileSync('git', ['config', 'user.name', 'RexCode ecosystem fixture'], { cwd: appRoot }); + execFileSync('git', ['config', 'user.email', 'ecosystem@example.invalid'], { cwd: appRoot }); + const base = commit('synthetic app baseline'); + + const configPath = join(appRoot, 'shopify.app.toml'); + let appConfig = readFileSync(configPath, 'utf8').replace('scopes = ""', 'scopes = "read_orders"'); + writeFileSync(configPath, appConfig); + const reviewed = commit('introduce a reviewed scope configuration change'); + + runNode(roots.changeguard, 'dist/cli.js', [ + 'baseline', 'create', '--baseline', '.changeguard-baseline.json', + '--base-ref', base, '--head-ref', reviewed, '--all-configs', + ]); + + appConfig = appConfig.replace('api_version = "2026-10"', 'api_version = "2026-10"\napplication_url = "https://shop.example.test"'); + writeFileSync(configPath, appConfig); + const head = commit('introduce a separate application URL change'); + + const ordinary = JSON.parse(runNode(roots.changeguard, 'dist/cli.js', [ + '--base-ref', base, '--head-ref', head, '--all-configs', '--json', + ])); + assert.ok(ordinary.files.some((file) => file.findings.length > 0), 'ChangeGuard should review the changed app configuration'); + + const lifecycle = JSON.parse(runNode(roots.changeguard, 'dist/cli.js', [ + 'baseline', 'check', '--baseline', '.changeguard-baseline.json', + '--base-ref', base, '--head-ref', head, '--all-configs', '--fail-on-new', '--json', + ], { expectedStatus: 1 })); + assert.ok(lifecycle.lifecycle.existingCount > 0, 'ChangeGuard should retain the reviewed finding'); + assert.ok(lifecycle.lifecycle.newCount > 0, 'ChangeGuard should identify the new finding'); + + const upgrade = JSON.parse(runNode(roots.upgrade, 'src/cli.js', [ + 'scan', '--target', '2027-01', '--format', 'json', '--fail-on', 'never', '--path', appRoot, + ])); + assert.ok(upgrade.findings.some((finding) => finding.ruleId === 'UG-EXT-001' && finding.severity === 'error'), 'Upgrade Guard should report the 2027-01 owner_type blocker'); + + const scope = JSON.parse(runNode(roots.scope, 'src/cli/index.js', [ + 'audit', '--path', appRoot, '--api-version', '2026-10', '--format', 'json', '--fail-on', 'none', + ])); + assert.equal(scope.summary.classicWebhooks.notEvidenced, 1, 'Scope Guard should report missing product read scope evidence'); + assert.ok(scope.findings.some((finding) => finding.ruleId === 'SG-SCOPE-001'), 'Scope Guard should emit the mapped webhook scope finding'); + + const review = JSON.parse(runNode(roots.appReview, 'src/cli.js', [ + 'check', '--path', appRoot, '--format', 'json', '--fail-on', 'none', + ])); + assert.ok(review.findings.some((finding) => finding.ruleId === 'AR-WEBHOOK-001' + && finding.status === 'NEEDS_REVIEW' + && finding.file === 'app/api/webhooks/products/route.ts'), 'App Review Guard should flag the matched Next.js route for review'); + + console.log('Four-tool local integration smoke test passed.'); +} finally { + rmSync(workspace, { recursive: true, force: true }); +} diff --git a/scripts/package-smoke.mjs b/scripts/package-smoke.mjs index 7dfda48..418d476 100644 --- a/scripts/package-smoke.mjs +++ b/scripts/package-smoke.mjs @@ -49,6 +49,11 @@ try { const head = git('rev-parse', 'HEAD'); const gitResult = JSON.parse(run(cli, ['--base-ref', base, '--head-ref', head, '--file', 'shopify.app.toml', '--json'], { cwd: gitDir })); if (!gitResult.findings.length) throw new Error('Git package comparison produced no findings.'); + run(cli, ['baseline', 'create', '--baseline', 'changeguard-baseline.json', '--base-ref', base, '--head-ref', head, '--all-configs'], { cwd: gitDir }); + const baselineResult = JSON.parse(run(cli, ['baseline', 'check', '--baseline', 'changeguard-baseline.json', '--base-ref', base, '--head-ref', head, '--all-configs', '--json'], { cwd: gitDir })); + if (baselineResult.lifecycle?.existingCount !== 1 || baselineResult.lifecycle.newCount !== 0) { + throw new Error('Packaged baseline comparison did not classify the reviewed finding as existing.'); + } console.log('Package smoke test passed.'); } finally { rmSync(workspace, { recursive: true, force: true }); diff --git a/src/action.ts b/src/action.ts index 7d9fe7a..bcfda45 100644 --- a/src/action.ts +++ b/src/action.ts @@ -2,12 +2,32 @@ import * as core from '@actions/core'; import { renderSummary } from './summary.js'; import { reviewPullRequest } from './pr-review.js'; import { matchesRiskThreshold, validateRiskThreshold } from './risk-policy.js'; +import { classifyFindings, readBaseline } from './baseline.js'; async function main(): Promise { - const report = reviewPullRequest( + const originalReport = reviewPullRequest( core.getInput('base_sha', { required: true }), core.getInput('head_sha', { required: true }), ); + const baselinePath = core.getInput('baseline_path'); + const failOnNewValue = core.getInput('fail_on_new').toLowerCase(); + if (failOnNewValue !== '' && failOnNewValue !== 'true' && failOnNewValue !== 'false') { + throw new Error('fail_on_new must be true or false'); + } + const failOnNew = failOnNewValue === 'true'; + const baseline = baselinePath ? await readBaseline(baselinePath) : undefined; + const lifecycle = baselinePath || failOnNew + ? classifyFindings(originalReport.files.flatMap((file) => file.findings.map((finding) => ({ path: file.path, finding }))), baseline, 'git-all') + : undefined; + let findingIndex = 0; + const report = lifecycle + ? { + ...originalReport, + files: originalReport.files.map((file) => ({ ...file, findings: file.findings.map(() => lifecycle.findings[findingIndex++]!) })), + lifecycle: lifecycle.counts, + resolvedFindings: lifecycle.resolvedFindings, + } + : originalReport; const allFindings = report.files.flatMap((file) => file.findings); const policy = core.getInput('fail_on') || 'unreviewed'; if (!['never', 'review', 'unreviewed'].includes(policy)) { @@ -33,16 +53,20 @@ async function main(): Promise { }, 'none'); core.setOutput('highest_risk', highestRisk); core.setOutput('risk_threshold_exceeded', String(matchesRiskThreshold(allFindings, failOnRisk))); + core.setOutput('new_finding_count', lifecycle ? String(lifecycle.counts.newCount) : ''); + core.setOutput('existing_finding_count', lifecycle ? String(lifecycle.counts.existingCount) : ''); + core.setOutput('resolved_finding_count', lifecycle ? String(lifecycle.counts.resolvedCount) : ''); core.setOutput('report', JSON.stringify(report)); await core.summary.addRaw(renderSummary(report)).write(); for (const reviewed of report.files) for (const finding of reviewed.findings) { core.warning(`${finding.ruleId}: ${finding.summary}`, { file: reviewed.path, title: `${finding.ruleId} (${finding.riskLevel ?? 'medium'} risk)` }); } - if (policy !== 'never' && report.unreviewed.length > 0) { + if ((policy !== 'never' || failOnNew) && report.unreviewed.length > 0) { throw new Error('Review incomplete: one or more configurations could not be analyzed.'); } if (policy === 'review' && allFindings.length > 0) throw new Error('Review findings detected.'); if (matchesRiskThreshold(allFindings, failOnRisk)) throw new Error(`Review findings meet the ${failOnRisk} risk threshold.`); + if (failOnNew && (lifecycle?.counts.newCount ?? 0) > 0) throw new Error('New review findings detected.'); } try { diff --git a/src/baseline.ts b/src/baseline.ts new file mode 100644 index 0000000..5e90ec9 --- /dev/null +++ b/src/baseline.ts @@ -0,0 +1,223 @@ +import { createHash } from 'node:crypto'; +import { lstat, open, readFile, realpath } from 'node:fs/promises'; +import { isAbsolute, relative, resolve, sep, win32 } from 'node:path'; +import type { Finding } from './core.js'; + +export type ComparisonKind = 'configuration-pair' | 'git-file' | 'git-all'; +export type FindingLifecycle = 'NEW' | 'EXISTING' | 'RESOLVED'; +export type BaselineFinding = { + fingerprint: string; + ruleId: string; + path: string; + field: string; + riskLevel: 'low' | 'medium' | 'high'; + count: number; +}; +export type Baseline = { + schemaVersion: 1; + comparisonKind: ComparisonKind; + findings: BaselineFinding[]; +}; +export type CurrentFinding = { path: string; finding: Finding }; +export type LifecycleFinding = Finding & { lifecycle: FindingLifecycle }; +export type ResolvedFinding = BaselineFinding & { lifecycle: 'RESOLVED' }; +export type LifecycleCounts = { newCount: number; existingCount: number; resolvedCount: number }; +export type LifecycleResult = { + findings: LifecycleFinding[]; + resolvedFindings: ResolvedFinding[]; + counts: LifecycleCounts; +}; + +const MAX_BASELINE_BYTES = 1024 * 1024; +const MAX_BASELINE_FINDINGS = 10_000; +const hashPattern = /^[a-f0-9]{64}$/; +const rulePattern = /^[A-Z0-9][A-Z0-9_-]{0,99}$/; + +export function normaliseRepositoryPath(value: string): string { + if (!value || value.includes('\0')) throw new Error('Baseline configuration paths must be repository-relative.'); + const path = value.replaceAll('\\', '/'); + if (path.startsWith('/') || /^[A-Za-z]:/.test(path) || isAbsolute(value) || win32.isAbsolute(value)) { + throw new Error('Baseline configuration paths must be repository-relative.'); + } + const parts = path.split('/'); + if (parts.some((part) => part === '..')) throw new Error('Baseline configuration paths must not traverse directories.'); + const normalised = parts.filter((part) => part && part !== '.').join('/'); + if (!normalised || normalised.length > 2048 || normalised.includes(':')) { + throw new Error('Baseline configuration paths must be repository-relative.'); + } + return normalised; +} + +export function findingFingerprint(finding: Finding, repositoryPath: string): string { + const path = normaliseRepositoryPath(repositoryPath); + const identity = [ + 'changeguard-baseline-v1', + finding.ruleId, + path, + finding.field, + finding.category ?? 'unspecified', + finding.riskLevel ?? 'medium', + finding.summary, + ]; + return createHash('sha256').update(JSON.stringify(identity), 'utf8').digest('hex'); +} + +export function createBaseline(kind: ComparisonKind, current: CurrentFinding[]): Baseline { + const grouped = new Map(); + for (const item of current) { + const path = normaliseRepositoryPath(item.path); + const fingerprint = findingFingerprint(item.finding, path); + const existing = grouped.get(fingerprint); + if (existing) { + existing.count++; + } else { + grouped.set(fingerprint, { + fingerprint, + ruleId: item.finding.ruleId, + path, + field: item.finding.field, + riskLevel: item.finding.riskLevel ?? 'medium', + count: 1, + }); + } + } + if (grouped.size > MAX_BASELINE_FINDINGS) throw new Error('Too many findings for a ChangeGuard baseline.'); + return { + schemaVersion: 1, + comparisonKind: kind, + findings: [...grouped.values()].sort(compareBaselineFinding), + }; +} + +function compareBaselineFinding(a: BaselineFinding, b: BaselineFinding): number { + return a.path.localeCompare(b.path) || a.ruleId.localeCompare(b.ruleId) || a.field.localeCompare(b.field) || a.fingerprint.localeCompare(b.fingerprint); +} + +export function validateBaseline(value: unknown): Baseline { + if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('Baseline must be a JSON object.'); + const baseline = value as Record; + if (baseline.schemaVersion !== 1) throw new Error('Unsupported ChangeGuard baseline schema version.'); + if (!['configuration-pair', 'git-file', 'git-all'].includes(String(baseline.comparisonKind))) { + throw new Error('Baseline comparisonKind is invalid.'); + } + if (!Array.isArray(baseline.findings) || baseline.findings.length > MAX_BASELINE_FINDINGS) { + throw new Error('Baseline findings must be a bounded array.'); + } + let total = 0; + const seen = new Set(); + const findings: BaselineFinding[] = baseline.findings.map((raw): BaselineFinding => { + if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) throw new Error('Baseline finding is invalid.'); + const item = raw as Record; + if (typeof item.fingerprint !== 'string' || !hashPattern.test(item.fingerprint) || seen.has(item.fingerprint)) { + throw new Error('Baseline finding fingerprint is invalid or duplicated.'); + } + if (typeof item.ruleId !== 'string' || !rulePattern.test(item.ruleId)) throw new Error('Baseline finding ruleId is invalid.'); + if (typeof item.path !== 'string' || normaliseRepositoryPath(item.path) !== item.path) throw new Error('Baseline finding path is invalid.'); + if (typeof item.field !== 'string' || !item.field || item.field.length > 256 || /[\r\n\0]/.test(item.field)) { + throw new Error('Baseline finding field is invalid.'); + } + if (item.riskLevel !== 'low' && item.riskLevel !== 'medium' && item.riskLevel !== 'high') { + throw new Error('Baseline finding riskLevel is invalid.'); + } + if (!Number.isSafeInteger(item.count) || (item.count as number) < 1 || (item.count as number) > MAX_BASELINE_FINDINGS) { + throw new Error('Baseline finding count is invalid.'); + } + total += item.count as number; + if (total > MAX_BASELINE_FINDINGS) throw new Error('Baseline contains too many findings.'); + seen.add(item.fingerprint); + return { + fingerprint: item.fingerprint, + ruleId: item.ruleId, + path: item.path, + field: item.field, + riskLevel: item.riskLevel, + count: item.count as number, + }; + }); + findings.sort(compareBaselineFinding); + return { schemaVersion: 1, comparisonKind: baseline.comparisonKind as ComparisonKind, findings }; +} + +export function classifyFindings( + current: CurrentFinding[], + baseline: Baseline | undefined, + kind: ComparisonKind, +): LifecycleResult { + if (baseline && baseline.comparisonKind !== kind) throw new Error('Baseline comparison type does not match the selected review.'); + const known = new Map((baseline?.findings ?? []).map((item) => [item.fingerprint, item.count])); + const used = new Map(); + const counts: LifecycleCounts = { newCount: 0, existingCount: 0, resolvedCount: 0 }; + const findings = current.map(({ path, finding }): LifecycleFinding => { + const fingerprint = findingFingerprint(finding, path); + const occurrence = (used.get(fingerprint) ?? 0) + 1; + used.set(fingerprint, occurrence); + const lifecycle: FindingLifecycle = occurrence <= (known.get(fingerprint) ?? 0) ? 'EXISTING' : 'NEW'; + if (lifecycle === 'EXISTING') counts.existingCount++; + else counts.newCount++; + return { ...finding, lifecycle }; + }); + const resolvedFindings: ResolvedFinding[] = []; + if (baseline) { + for (const item of baseline.findings) { + const resolvedCount = item.count - (used.get(item.fingerprint) ?? 0); + if (resolvedCount > 0) { + counts.resolvedCount += resolvedCount; + resolvedFindings.push({ ...item, count: resolvedCount, lifecycle: 'RESOLVED' }); + } + } + } + return { findings, resolvedFindings, counts }; +} + +async function checkedBaselinePath(userPath: string, cwd: string): Promise<{ absolute: string; relative: string }> { + if (!userPath || userPath.includes('\0') || isAbsolute(userPath) || win32.isAbsolute(userPath)) { + throw new Error('Baseline paths must be relative to the repository root.'); + } + const path = userPath.replaceAll('\\', '/'); + const parts = path.split('/'); + if (parts.some((part) => part === '..')) throw new Error('Baseline paths must not traverse directories.'); + const clean = parts.filter((part) => part && part !== '.').join('/'); + if (!clean) throw new Error('Baseline path is invalid.'); + const root = await realpath(cwd); + const absolute = resolve(root, clean); + const rel = relative(root, absolute); + if (!rel || rel.startsWith(`..${sep}`) || rel === '..' || isAbsolute(rel)) throw new Error('Baseline paths must stay within the repository root.'); + const relativeParts = rel.split(sep); + let cursor = root; + for (const part of relativeParts.slice(0, -1)) { + cursor = resolve(cursor, part); + const info = await lstat(cursor).catch(() => undefined); + if (!info?.isDirectory() || info.isSymbolicLink()) throw new Error('Baseline parent path must be an existing regular directory.'); + } + return { absolute, relative: rel.split(sep).join('/') }; +} + +export async function readBaseline(userPath: string, cwd = process.cwd()): Promise { + const checked = await checkedBaselinePath(userPath, cwd); + const info = await lstat(checked.absolute).catch(() => undefined); + if (!info?.isFile() || info.isSymbolicLink()) throw new Error('Baseline must be an existing regular file.'); + if (info.size > MAX_BASELINE_BYTES) throw new Error('Baseline exceeds the supported size limit.'); + let parsed: unknown; + try { + parsed = JSON.parse(await readFile(checked.absolute, 'utf8')) as unknown; + } catch { + throw new Error('Baseline is not valid JSON.'); + } + return validateBaseline(parsed); +} + +export async function writeBaseline(userPath: string, baseline: Baseline, cwd = process.cwd()): Promise { + const checked = await checkedBaselinePath(userPath, cwd); + const body = `${JSON.stringify(validateBaseline(baseline), null, 2)}\n`; + if (Buffer.byteLength(body, 'utf8') > MAX_BASELINE_BYTES) throw new Error('Baseline exceeds the supported size limit.'); + let handle; + try { + handle = await open(checked.absolute, 'wx', 0o600); + await handle.writeFile(body, 'utf8'); + await handle.close(); + } catch { + await handle?.close().catch(() => undefined); + throw new Error('Unable to create baseline; the destination may already exist or be unavailable.'); + } + return checked.relative; +} diff --git a/src/cli.ts b/src/cli.ts index 393c04c..847f777 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -3,10 +3,21 @@ import { readFile, lstat } from 'node:fs/promises'; import { parse } from '@iarna/toml'; import { compareConfigs } from './core.js'; import { readConfigAtRef, resolveCommitRef } from './git-refs.js'; -import { reviewGitRange } from './pr-review.js'; +import { reviewGitRange, type ReviewReport } from './pr-review.js'; import { CHANGEGUARD_VERSION } from './generated-version.js'; import { renderMarkdown } from './markdown.js'; import { matchesRiskThreshold, validateRiskThreshold, type RiskThreshold } from './risk-policy.js'; +import { + classifyFindings, + createBaseline, + normaliseRepositoryPath, + readBaseline, + writeBaseline, + type Baseline, + type ComparisonKind, + type LifecycleResult, +} from './baseline.js'; +import { isAbsolute, relative, resolve } from 'node:path'; const VERSION = CHANGEGUARD_VERSION; @@ -14,23 +25,28 @@ function usage(exitCode = 2): never { const output = `ChangeGuard ${VERSION} Usage: - changeguard --before FILE --after FILE [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] + changeguard --before FILE --after FILE [--config-path PATH] [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] changeguard --base-ref REF --head-ref REF --file PATH [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] changeguard --base-ref REF --head-ref REF --all-configs [--format human|json|markdown] [--fail-on LEVEL] [--fail-on-risk LEVEL] + changeguard baseline create --baseline FILE [comparison options] + changeguard baseline check --baseline FILE [comparison options] [--fail-on-new] Options: --json Emit a machine-readable report (alias for --format json). --format FORMAT Emit human, json, or markdown output. + --config-path PATH Repository-relative identity for an explicit TOML comparison. + --baseline FILE Read a baseline, or create one with 'baseline create'. --fail-on LEVEL never (default), review, or unreviewed. --fail-on-risk LEVEL Fail when any finding reaches none, low, medium, or high risk. + --fail-on-new Fail when a finding is new against the selected baseline. --all-configs Review every changed shopify.app*.toml file in a Git range. --help Show this help. --version Show the version. Exit codes: 0 Analysis completed without a configured failure condition. - 1 Findings reached --fail-on review. - 2 Input or analysis error, or an unreviewed configuration. + 1 Findings reached a configured finding or risk threshold. + 2 Input or analysis error, or an incomplete review under the selected policy. `; (exitCode === 0 ? console.log : console.error)(output); process.exit(exitCode); @@ -50,8 +66,59 @@ async function readConfig(path: string): Promise> { } } +function itemsForGitReport(report: ReviewReport) { + return report.files.flatMap((file) => file.findings.map((finding) => ({ path: file.path, finding }))); +} + +function withGitLifecycle(report: ReviewReport, result: LifecycleResult): ReviewReport { + let index = 0; + const files = report.files.map((file) => ({ + ...file, + findings: file.findings.map(() => result.findings[index++]!), + })); + return { ...report, files, lifecycle: result.counts, resolvedFindings: result.resolvedFindings }; +} + +function pathForExplicitComparison(after: string, requested?: string): string { + if (requested) return normaliseRepositoryPath(requested); + const absoluteAfter = resolve(after); + const relativeAfter = relative(process.cwd(), absoluteAfter); + if (!relativeAfter || relativeAfter === '..' || relativeAfter.startsWith(`..${process.platform === 'win32' ? '\\' : '/'}`) || isAbsolute(relativeAfter)) { + throw new Error('Use --config-path with a repository-relative path when the compared file is outside the repository.'); + } + return normaliseRepositoryPath(relativeAfter); +} + +function printLifecycleCounts(result: LifecycleResult): string { + return `Lifecycle: ${result.counts.newCount} new, ${result.counts.existingCount} existing, ${result.counts.resolvedCount} resolved.`; +} + +function outputGitReport(report: ReviewReport, format: 'human' | 'json' | 'markdown'): void { + if (format === 'json') console.log(JSON.stringify(report, null, 2)); + else if (format === 'markdown') console.log(renderMarkdown(report)); + else { + console.log(`ChangeGuard v${VERSION}`); + console.log(report.note); + for (const reviewed of report.files) for (const finding of reviewed.findings) { + console.log(`[${(finding.lifecycle ?? finding.riskLevel ?? 'medium').toString()}] ${finding.ruleId}: ${finding.summary}`); + } + for (const finding of report.resolvedFindings ?? []) console.log(`[RESOLVED] ${finding.path}: ${finding.ruleId} (${finding.count})`); + console.log(`${report.files.flatMap((item) => item.findings).length} finding(s) across ${report.reviewedFileCount} reviewed configuration file(s).`); + if (report.lifecycle) console.log(`Lifecycle: ${report.lifecycle.newCount} new, ${report.lifecycle.existingCount} existing, ${report.lifecycle.resolvedCount} resolved.`); + if (report.unreviewed.length) console.log(`${report.unreviewed.length} configuration file(s) could not be reviewed.`); + } +} + async function main(): Promise { - const args = process.argv.slice(2); + let args = process.argv.slice(2); + let baselineCommand: 'create' | 'check' | undefined; + if (args[0] === 'baseline') { + const command = args[1]; + if (command !== 'create' && command !== 'check') usage(); + baselineCommand = command; + args = args.slice(2); + } + let before: string | undefined; let after: string | undefined; let json = false; @@ -62,6 +129,9 @@ async function main(): Promise { let allConfigs = false; let failOn: 'never' | 'review' | 'unreviewed' = 'never'; let failOnRisk: RiskThreshold = 'none'; + let failOnNew = false; + let baselinePath: string | undefined; + let configPath: string | undefined; const valueFor = (name: string, index: number): string => { const value = args[index + 1]; if (!value || value.startsWith('--')) usage(2); @@ -84,6 +154,9 @@ async function main(): Promise { else if (arg === '--base-ref') baseRef = valueFor(arg, i++); else if (arg === '--head-ref') headRef = valueFor(arg, i++); else if (arg === '--file') file = valueFor(arg, i++); + else if (arg === '--baseline') baselinePath = valueFor(arg, i++); + else if (arg === '--config-path') configPath = valueFor(arg, i++); + else if (arg === '--fail-on-new') failOnNew = true; else if (arg === '--all-configs') allConfigs = true; else if (arg === '--fail-on') { const value = valueFor(arg, i++); @@ -97,56 +170,103 @@ async function main(): Promise { } else usage(); } + if (baselineCommand === 'create' && (!baselinePath || failOnNew)) usage(); + if (baselineCommand === 'check' && !baselinePath) usage(); + if (baselineCommand === undefined && failOnNew && baselinePath === undefined) { + // An empty baseline is explicit and useful when introducing a new gate. + } + const createMode = baselineCommand === 'create'; + const checkMode = baselineCommand === 'check' || (baselineCommand === undefined && baselinePath !== undefined); + const lifecycleMode = checkMode || failOnNew; const fileMode = before !== undefined || after !== undefined; - const gitMode = baseRef !== undefined || headRef !== undefined || file !== undefined; + const gitMode = baseRef !== undefined || headRef !== undefined || file !== undefined || allConfigs; if (fileMode === gitMode) usage(); if (json && format !== undefined && format !== 'json') usage(2); format = json ? 'json' : format ?? 'human'; - let oldConfig: Record; - let newConfig: Record; + let baseline: Baseline | undefined; + if (checkMode && baselinePath) baseline = await readBaseline(baselinePath); if (gitMode) { - if (!baseRef || !headRef || (file === undefined && !allConfigs) || (file !== undefined && allConfigs)) usage(); + if (!baseRef || !headRef || (file === undefined && !allConfigs) || (file !== undefined && allConfigs) || configPath !== undefined) usage(); if (allConfigs) { - const report = reviewGitRange(resolveCommitRef(baseRef), resolveCommitRef(headRef)); - if (format === 'json') console.log(JSON.stringify(report, null, 2)); - else if (format === 'markdown') console.log(renderMarkdown(report)); - else { - console.log(`ChangeGuard v${VERSION}`); - console.log(report.note); - for (const reviewed of report.files) for (const finding of reviewed.findings) console.log(`[${(finding.riskLevel ?? 'medium').toUpperCase()}] ${finding.ruleId}: ${finding.summary}`); - console.log(`${report.files.flatMap((item) => item.findings).length} finding(s) across ${report.reviewedFileCount} reviewed configuration file(s).`); - if (report.unreviewed.length) console.log(`${report.unreviewed.length} configuration file(s) could not be reviewed.`); + const originalReport = reviewGitRange(resolveCommitRef(baseRef), resolveCommitRef(headRef)); + if (createMode && originalReport.unreviewed.length > 0) { + outputGitReport(originalReport, format); + process.exitCode = 2; + return; + } + const report = lifecycleMode + ? withGitLifecycle(originalReport, classifyFindings(itemsForGitReport(originalReport), baseline, 'git-all')) + : originalReport; + if (createMode && baselinePath) { + const current = itemsForGitReport(originalReport); + const created = createBaseline('git-all', current); + await writeBaseline(baselinePath, created); + if (format === 'json') console.log(JSON.stringify({ schemaVersion: 1, baselineCreated: true, findingCount: current.length }, null, 2)); + else console.log(`Baseline created with ${current.length} finding(s).`); + return; } - if (failOn !== 'never' && report.unreviewed.length > 0) process.exitCode = 2; + outputGitReport(report, format); + if (report.unreviewed.length > 0 && (failOn !== 'never' || failOnNew)) process.exitCode = 2; else if (matchesRiskThreshold(report.files.flatMap((item) => item.findings), failOnRisk)) process.exitCode = 1; + else if (failOnNew && (report.lifecycle?.newCount ?? 0) > 0) process.exitCode = 1; else if (failOn === 'review' && report.files.some((item) => item.findings.length > 0)) process.exitCode = 1; return; } - oldConfig = readConfigAtRef(baseRef, file as string); - newConfig = readConfigAtRef(headRef, file as string); - } else { - if (!before || !after) usage(); - [oldConfig, newConfig] = await Promise.all([ - readConfig(before), - readConfig(after), - ]); + const selectedPath = normaliseRepositoryPath(file as string); + const oldConfig = readConfigAtRef(baseRef, selectedPath); + const newConfig = readConfigAtRef(headRef, selectedPath); + const findings = compareConfigs(oldConfig, newConfig); + const kind: ComparisonKind = 'git-file'; + const lifecycle = lifecycleMode ? classifyFindings(findings.map((finding) => ({ path: selectedPath, finding })), baseline, kind) : undefined; + const note = 'Only documented semantic changes in supported Shopify app configuration fields are examined; Shopify CLI remains responsible for schema validation and unsupported fields are not checked.'; + const report = { schemaVersion: 1, note, findings: lifecycle?.findings ?? findings, ...(lifecycle ? { lifecycle: lifecycle.counts, resolvedFindings: lifecycle.resolvedFindings } : {}) }; + if (format === 'json') console.log(JSON.stringify(report, null, 2)); + else if (format === 'markdown') console.log(renderMarkdown(report)); + else { + console.log(`ChangeGuard v${VERSION}`); + console.log(note); + for (const finding of report.findings) console.log(`[${finding.lifecycle ?? 'REVIEW'}] ${finding.ruleId}: ${finding.summary}`); + for (const finding of report.resolvedFindings ?? []) console.log(`[RESOLVED] ${finding.path}: ${finding.ruleId} (${finding.count})`); + console.log(`${findings.length} finding(s).`); + if (lifecycle) console.log(printLifecycleCounts(lifecycle)); + } + if (matchesRiskThreshold(findings, failOnRisk) || failOn === 'review' && findings.length > 0 || failOnNew && (lifecycle?.counts.newCount ?? 0) > 0) process.exitCode = 1; + return; } + + if (!before || !after) usage(); + if (configPath && !lifecycleMode && !createMode) usage(); + const [oldConfig, newConfig] = await Promise.all([readConfig(before), readConfig(after)]); const findings = compareConfigs(oldConfig, newConfig); + const selectedPath = lifecycleMode || createMode ? pathForExplicitComparison(after, configPath) : undefined; + const kind: ComparisonKind = 'configuration-pair'; + if (createMode && baselinePath) { + const created = createBaseline(kind, findings.map((finding) => ({ path: selectedPath!, finding }))); + await writeBaseline(baselinePath, created); + if (format === 'json') console.log(JSON.stringify({ schemaVersion: 1, baselineCreated: true, findingCount: findings.length }, null, 2)); + else console.log(`Baseline created with ${findings.length} finding(s).`); + return; + } + const lifecycle = lifecycleMode + ? classifyFindings(findings.map((finding) => ({ path: selectedPath!, finding })), baseline, kind) + : undefined; const note = 'Only documented semantic changes in supported Shopify app configuration fields are examined; Shopify CLI remains responsible for schema validation and unsupported fields are not checked.'; - const report = { schemaVersion: 1, note, findings }; + const report = { schemaVersion: 1, note, findings: lifecycle?.findings ?? findings, ...(lifecycle ? { lifecycle: lifecycle.counts, resolvedFindings: lifecycle.resolvedFindings } : {}) }; if (format === 'json') console.log(JSON.stringify(report, null, 2)); else if (format === 'markdown') console.log(renderMarkdown(report)); else { console.log(`ChangeGuard v${VERSION}`); console.log(note); if (!findings.length) console.log('No supported-field changes found; this is NOT a deployment approval.'); - for (const finding of findings) console.log(`[REVIEW] ${finding.ruleId}: ${finding.summary}`); + for (const finding of report.findings) console.log(`[${finding.lifecycle ?? 'REVIEW'}] ${finding.ruleId}: ${finding.summary}`); + for (const finding of report.resolvedFindings ?? []) console.log(`[RESOLVED] ${finding.path}: ${finding.ruleId} (${finding.count})`); console.log(`${findings.length} finding(s).`); + if (lifecycle) console.log(printLifecycleCounts(lifecycle)); } - if (matchesRiskThreshold(findings, failOnRisk) || failOn === 'review' && findings.length > 0) process.exitCode = 1; + if (matchesRiskThreshold(findings, failOnRisk) || failOn === 'review' && findings.length > 0 || failOnNew && (lifecycle?.counts.newCount ?? 0) > 0) process.exitCode = 1; } main().catch((err: unknown) => { diff --git a/src/core.ts b/src/core.ts index 2592dd9..d89a1bc 100644 --- a/src/core.ts +++ b/src/core.ts @@ -14,6 +14,7 @@ export type Finding = { documentationUrl?: string; riskLevel?: RiskLevel; riskRationale?: string; + lifecycle?: 'NEW' | 'EXISTING'; }; export type Config = Record; diff --git a/src/markdown.ts b/src/markdown.ts index b333864..ad8efa6 100644 --- a/src/markdown.ts +++ b/src/markdown.ts @@ -1,14 +1,24 @@ import type { Finding } from './core.js'; type ReviewFile = { path: string; status: string; findings: Finding[] }; -type MarkdownReport = { note: string; files?: ReviewFile[]; findings?: Finding[]; unreviewed?: Array<{ path: string; reason: string }>; reviewedFileCount?: number; unreviewedFileCount?: number }; +type MarkdownReport = { + note: string; + files?: ReviewFile[]; + findings?: Finding[]; + unreviewed?: Array<{ path: string; reason: string }>; + reviewedFileCount?: number; + unreviewedFileCount?: number; + lifecycle?: { newCount: number; existingCount: number; resolvedCount: number }; + resolvedFindings?: Array<{ ruleId: string; path: string; count: number; lifecycle: 'RESOLVED' }>; +}; const escape = (value: unknown): string => String(value ?? '').replace(/[\\`*_{}\[\]()<>#+.!|]/g, '\\$&').replace(/[\r\n]+/g, ' '); function appendFinding(lines: string[], finding: Finding): void { + const lifecycle = finding.lifecycle ? ` — ${finding.lifecycle}` : ''; lines.push( '', - `### ${escape(finding.ruleId)} — ${escape(finding.riskLevel ?? 'medium')} risk`, + `### ${escape(finding.ruleId)} — ${escape(finding.riskLevel ?? 'medium')} risk${escape(lifecycle)}`, '', escape(finding.summary), '', @@ -35,6 +45,9 @@ export function renderMarkdown(report: MarkdownReport): string { `- Configurations requiring review: ${report.unreviewedFileCount ?? unreviewed.length}`, '- Findings are grouped by configuration file; environment names are not inferred from filenames.', ]; + if (report.lifecycle) { + lines.push(`- New: ${report.lifecycle.newCount}; existing: ${report.lifecycle.existingCount}; resolved: ${report.lifecycle.resolvedCount}`); + } if (risks.length) lines.push('', '## Findings by risk', '', '| Risk | Count |', '| --- | ---: |', ...risks.map(([risk, count]) => `| ${risk} | ${count} |`)); if (files.length) for (const file of files) { lines.push('', `## Configuration: \`${escape(file.path)}\``, '', `Status: ${file.status}.`); @@ -49,6 +62,10 @@ export function renderMarkdown(report: MarkdownReport): string { lines.push('', '## Incomplete reviews', ''); for (const item of unreviewed) lines.push(`- \`${escape(item.path)}\`: ${escape(item.reason)}`); } + if (report.resolvedFindings?.length) { + lines.push('', '## Resolved baseline findings', ''); + for (const finding of report.resolvedFindings) lines.push(`- \`${escape(finding.path)}\`: ${escape(finding.ruleId)} (${finding.count})`); + } if (!findings.length && !unreviewed.length) lines.push('', 'No supported-field changes were found. This is not a deployment or security approval.'); return `${lines.join('\n')}\n`; } diff --git a/src/pr-review.ts b/src/pr-review.ts index 612ebb9..29d63aa 100644 --- a/src/pr-review.ts +++ b/src/pr-review.ts @@ -13,6 +13,8 @@ export type ReviewReport = { reviewedFileCount: number; unreviewedFileCount: number; ruleIds: string[]; + lifecycle?: { newCount: number; existingCount: number; resolvedCount: number }; + resolvedFindings?: Array<{ fingerprint: string; ruleId: string; path: string; field: string; riskLevel: 'low' | 'medium' | 'high'; count: number; lifecycle: 'RESOLVED' }>; }; const validSha = /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/; diff --git a/src/summary.ts b/src/summary.ts index 61a4177..9a23308 100644 --- a/src/summary.ts +++ b/src/summary.ts @@ -3,6 +3,7 @@ export type SummaryReport = { unreviewed: unknown[]; reviewedFileCount?: number; unreviewedFileCount?: number; + lifecycle?: { newCount: number; existingCount: number; resolvedCount: number }; }; export function renderSummary(report: SummaryReport): string { @@ -38,6 +39,7 @@ export function renderSummary(report: SummaryReport): string { `- Unreviewable configurations: ${report.unreviewedFileCount ?? report.unreviewed.length}`, '', '### Review status', '', ]; + if (report.lifecycle) lines.splice(7, 0, `- New: ${report.lifecycle.newCount}; existing: ${report.lifecycle.existingCount}; resolved: ${report.lifecycle.resolvedCount}`); if (risks.size) { lines.push('', '### Findings by risk', '', '| Risk | Count |', '| --- | ---: |'); for (const risk of ['high', 'medium', 'low']) if (risks.has(risk)) lines.push(`| ${risk} | ${risks.get(risk)} |`); diff --git a/tests/action.test.mjs b/tests/action.test.mjs index 7c6b3ef..0ea1ce6 100644 --- a/tests/action.test.mjs +++ b/tests/action.test.mjs @@ -5,6 +5,8 @@ import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { fileURLToPath } from 'node:url'; +import { compareConfigs } from '../dist/core.js'; +import { createBaseline } from '../dist/baseline.js'; const action = fileURLToPath(new URL('../dist/action/index.js', import.meta.url)); const oldConfig = '[access_scopes]\nscopes = "read_orders"\n'; @@ -31,7 +33,7 @@ function fixture(config, check) { } } -function run(dir, base, head, policy, risk = 'none') { +function run(dir, base, head, policy, risk = 'none', baselinePath = '', failOnNew = 'false') { const output = join(dir, 'output.txt'); const summary = join(dir, 'summary.md'); writeFileSync(output, ''); @@ -48,6 +50,8 @@ function run(dir, base, head, policy, risk = 'none') { INPUT_HEAD_SHA: head, INPUT_FAIL_ON: policy, INPUT_FAIL_ON_RISK: risk, + INPUT_BASELINE_PATH: baselinePath, + INPUT_FAIL_ON_NEW: failOnNew, }, }); } @@ -70,6 +74,35 @@ test('bundled Action emits outputs and succeeds for informational findings', () }); }); +test('Action reports baseline lifecycle, fails only on new findings, and retains existing risk policy', () => { + fixture(newConfig, ({ dir, base, head }) => { + const finding = compareConfigs( + { access_scopes: { scopes: 'read_orders' } }, + { access_scopes: { scopes: 'read_orders,read_products' } }, + )[0]; + const known = createBaseline('git-all', [{ path: 'shopify.app.toml', finding }]); + writeFileSync(join(dir, 'baseline.json'), JSON.stringify(known)); + + const existing = run(dir, base, head, 'never', 'none', 'baseline.json', 'true'); + assert.equal(existing.status, 0, `${existing.stdout}\n${existing.stderr}`); + const outputs = readFileSync(join(dir, 'output.txt'), 'utf8'); + assert.match(outputs, /new_finding_count< { fixture(newConfig, ({ dir, base, head }) => { const result = run(dir, base, head, 'review'); diff --git a/tests/baseline-cli.test.mjs b/tests/baseline-cli.test.mjs new file mode 100644 index 0000000..bbd2816 --- /dev/null +++ b/tests/baseline-cli.test.mjs @@ -0,0 +1,153 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { execFileSync, spawnSync } from 'node:child_process'; +import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const cli = fileURLToPath(new URL('../dist/cli.js', import.meta.url)); +const oldConfig = '[access_scopes]\nscopes = "read_orders"\n'; +const reviewedConfig = '[access_scopes]\nscopes = "read_orders,read_products"\n'; +const extendedConfig = '[access_scopes]\nscopes = "read_orders,read_products,read_customers"\n'; + +function run(args, cwd) { + return spawnSync(process.execPath, [cli, ...args], { cwd, encoding: 'utf8' }); +} + +test('CLI creates and checks a baseline with new, existing, and resolved counts', (t) => { + const dir = mkdtempSync(join(tmpdir(), 'changeguard-baseline-cli-')); + t.after(() => rmSync(dir, { recursive: true, force: true })); + const before = join(dir, 'before.toml'); + const after = join(dir, 'after.toml'); + const extended = join(dir, 'extended.toml'); + writeFileSync(before, oldConfig); + writeFileSync(after, reviewedConfig); + writeFileSync(extended, extendedConfig); + const baselinePath = 'review-baseline.json'; + const create = run(['baseline', 'create', '--baseline', baselinePath, '--before', before, '--after', after, '--config-path', 'shopify.app.toml'], dir); + assert.equal(create.status, 0, create.stderr); + assert.match(create.stdout, /Baseline created with 1 finding/); + const baselineText = readFileSync(join(dir, baselinePath), 'utf8'); + assert.doesNotMatch(baselineText, /read_products|read_orders/); + assert.doesNotMatch(baselineText, new RegExp(dir.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))); + + const existing = run(['baseline', 'check', '--baseline', baselinePath, '--before', before, '--after', after, '--config-path', 'shopify.app.toml', '--fail-on-new', '--json'], dir); + assert.equal(existing.status, 0, existing.stderr); + const existingReport = JSON.parse(existing.stdout); + assert.deepEqual(existingReport.lifecycle, { newCount: 0, existingCount: 1, resolvedCount: 0 }); + assert.equal(existingReport.findings[0].lifecycle, 'EXISTING'); + const repeated = run(['baseline', 'check', '--baseline', baselinePath, '--before', before, '--after', after, '--config-path', 'shopify.app.toml', '--fail-on-new', '--json'], dir); + assert.equal(repeated.stdout, existing.stdout); + + const added = run(['--baseline', baselinePath, '--before', before, '--after', extended, '--config-path', 'shopify.app.toml', '--fail-on-new', '--format', 'markdown'], dir); + assert.equal(added.status, 1); + assert.match(added.stdout, /New: 1; existing: 1; resolved: 0/); + assert.match(added.stdout, /NEW/); + + const resolved = run(['--baseline', baselinePath, '--before', before, '--after', before, '--config-path', 'shopify.app.toml', '--fail-on-new', '--json'], dir); + assert.equal(resolved.status, 0, resolved.stderr); + const resolvedReport = JSON.parse(resolved.stdout); + assert.deepEqual(resolvedReport.lifecycle, { newCount: 0, existingCount: 0, resolvedCount: 1 }); + assert.equal(resolvedReport.resolvedFindings[0].lifecycle, 'RESOLVED'); + assert.equal(resolvedReport.resolvedFindings[0].path, 'shopify.app.toml'); +}); + +test('existing high-risk findings remain visible and the risk threshold remains independent', (t) => { + const dir = mkdtempSync(join(tmpdir(), 'changeguard-baseline-risk-')); + t.after(() => rmSync(dir, { recursive: true, force: true })); + const before = join(dir, 'before.toml'); + const after = join(dir, 'after.toml'); + writeFileSync(before, oldConfig); + writeFileSync(after, reviewedConfig); + const create = run(['baseline', 'create', '--baseline', 'baseline.json', '--before', before, '--after', after, '--config-path', 'shopify.app.toml'], dir); + assert.equal(create.status, 0, create.stderr); + const checked = run(['--baseline', 'baseline.json', '--before', before, '--after', after, '--config-path', 'shopify.app.toml', '--fail-on-new', '--fail-on-risk', 'high', '--json'], dir); + assert.equal(checked.status, 1); + const report = JSON.parse(checked.stdout); + assert.equal(report.lifecycle.existingCount, 1); + assert.equal(report.findings[0].lifecycle, 'EXISTING'); + assert.equal(report.findings[0].riskLevel, 'high'); +}); + +test('baseline checks fail closed for absent or unsupported files and invalid options', (t) => { + const dir = mkdtempSync(join(tmpdir(), 'changeguard-baseline-invalid-')); + t.after(() => rmSync(dir, { recursive: true, force: true })); + writeFileSync(join(dir, 'before.toml'), oldConfig); + writeFileSync(join(dir, 'after.toml'), reviewedConfig); + const common = ['--before', 'before.toml', '--after', 'after.toml', '--config-path', 'shopify.app.toml']; + assert.equal(run(['--baseline', 'missing.json', ...common], dir).status, 2); + writeFileSync(join(dir, 'bad.json'), '{broken'); + assert.equal(run(['--baseline', 'bad.json', ...common], dir).status, 2); + writeFileSync(join(dir, 'v2.json'), JSON.stringify({ schemaVersion: 2, comparisonKind: 'git-all', findings: [] })); + assert.equal(run(['--baseline', 'v2.json', ...common], dir).status, 2); + assert.equal(run([...common, '--fail-on-new', '--fail-on-risk', 'critical'], dir).status, 2); + assert.equal(run(['baseline', 'create', '--baseline', 'created.json', '--before', 'before.toml', '--after', 'after.toml', '--config-path', '../outside.toml'], dir).status, 2); +}); + +test('Git baseline treats file renames as a new path identity and records resolved findings', (t) => { + const dir = mkdtempSync(join(tmpdir(), 'changeguard-baseline-git-')); + t.after(() => rmSync(dir, { recursive: true, force: true })); + const git = (...args) => execFileSync('git', args, { cwd: dir, encoding: 'utf8' }).trim(); + const commit = (message) => { + git('add', '-A'); + git('commit', '-q', '-m', message); + return git('rev-parse', 'HEAD'); + }; + git('init', '-q', '-b', 'main'); + git('config', 'user.name', 'ChangeGuard Tests'); + git('config', 'user.email', 'tests@example.invalid'); + writeFileSync(join(dir, 'shopify.app.toml'), oldConfig); + const base = commit('base'); + writeFileSync(join(dir, 'shopify.app.toml'), reviewedConfig); + const reviewed = commit('add a finding'); + const create = run(['baseline', 'create', '--baseline', 'baseline.json', '--base-ref', base, '--head-ref', reviewed, '--all-configs'], dir); + assert.equal(create.status, 0, create.stderr); + + git('mv', 'shopify.app.toml', 'shopify.app.staging.toml'); + const renamed = commit('rename configuration'); + const checkRename = run(['baseline', 'check', '--baseline', 'baseline.json', '--base-ref', reviewed, '--head-ref', renamed, '--all-configs', '--json'], dir); + assert.equal(checkRename.status, 0, checkRename.stderr); + const renameReport = JSON.parse(checkRename.stdout); + assert.deepEqual(renameReport.lifecycle, { newCount: 1, existingCount: 0, resolvedCount: 1 }); + assert.equal(renameReport.files[0].findings[0].ruleId, 'CONFIG_RENAMED'); + assert.equal(renameReport.files[0].findings[0].lifecycle, 'NEW'); + assert.equal(renameReport.resolvedFindings[0].path, 'shopify.app.toml'); + + git('rm', 'shopify.app.staging.toml'); + const deleted = commit('delete configuration'); + const checkDelete = run(['baseline', 'check', '--baseline', 'baseline.json', '--base-ref', renamed, '--head-ref', deleted, '--all-configs', '--json'], dir); + assert.equal(checkDelete.status, 0, checkDelete.stderr); + const deleteReport = JSON.parse(checkDelete.stdout); + assert.equal(deleteReport.files[0].findings[0].ruleId, 'CONFIG_REMOVED'); + assert.equal(deleteReport.files[0].findings[0].lifecycle, 'NEW'); + assert.equal(deleteReport.lifecycle.newCount, 1); +}); + +test('Git baseline supports added configurations and multiple named app files', (t) => { + const dir = mkdtempSync(join(tmpdir(), 'changeguard-baseline-added-')); + t.after(() => rmSync(dir, { recursive: true, force: true })); + const git = (...args) => execFileSync('git', args, { cwd: dir, encoding: 'utf8' }).trim(); + const commit = (message) => { + git('add', '-A'); + git('commit', '-q', '-m', message); + return git('rev-parse', 'HEAD'); + }; + git('init', '-q', '-b', 'main'); + git('config', 'user.name', 'ChangeGuard Tests'); + git('config', 'user.email', 'tests@example.invalid'); + writeFileSync(join(dir, 'README.md'), 'Synthetic app fixture\n'); + const base = commit('empty base'); + writeFileSync(join(dir, 'shopify.app.toml'), oldConfig); + const first = commit('add default app configuration'); + const create = run(['baseline', 'create', '--baseline', 'baseline.json', '--base-ref', base, '--head-ref', first, '--all-configs'], dir); + assert.equal(create.status, 0, create.stderr); + writeFileSync(join(dir, 'shopify.app.production.toml'), '[access_scopes]\nscopes = "read_orders,read_products"\n'); + const second = commit('add production configuration'); + const checked = run(['baseline', 'check', '--baseline', 'baseline.json', '--base-ref', first, '--head-ref', second, '--all-configs', '--json'], dir); + assert.equal(checked.status, 0, checked.stderr); + const report = JSON.parse(checked.stdout); + assert.deepEqual(report.lifecycle, { newCount: 1, existingCount: 0, resolvedCount: 1 }); + assert.deepEqual(report.files.map((file) => file.path), ['shopify.app.production.toml']); + assert.equal(report.files[0].findings[0].ruleId, 'CONFIG_ADDED'); +}); diff --git a/tests/baseline.test.mjs b/tests/baseline.test.mjs new file mode 100644 index 0000000..7e4e472 --- /dev/null +++ b/tests/baseline.test.mjs @@ -0,0 +1,116 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { mkdtempSync, readFileSync, rmSync, symlinkSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { parse } from '@iarna/toml'; +import { compareConfigs } from '../dist/core.js'; +import { + classifyFindings, + createBaseline, + findingFingerprint, + normaliseRepositoryPath, + readBaseline, + validateBaseline, + writeBaseline, +} from '../dist/baseline.js'; + +const before = { access_scopes: { scopes: 'read_orders' } }; +const after = { access_scopes: { scopes: 'read_orders,read_products' } }; +const finding = compareConfigs(before, after)[0]; + +test('fingerprints are stable, path-sensitive, and expose no summary values', () => { + assert.equal(findingFingerprint(finding, './shopify.app.toml'), findingFingerprint(finding, 'shopify.app.toml')); + assert.notEqual(findingFingerprint(finding, 'shopify.app.toml'), findingFingerprint(finding, 'shopify.app.staging.toml')); + const privateFinding = { ...finding, summary: 'Client ID changed; review the app identity configuration' }; + const baseline = createBaseline('configuration-pair', [{ path: 'shopify.app.toml', finding: privateFinding }]); + const serialised = JSON.stringify(baseline); + assert.doesNotMatch(serialised, /Client ID changed/); + assert.doesNotMatch(serialised, /read_products/); + assert.match(baseline.findings[0].fingerprint, /^[a-f0-9]{64}$/); +}); + +test('fingerprints remain stable when equivalent TOML fields are reordered', () => { + const firstBefore = { access_scopes: { scopes: 'read_orders', optional_scopes: ['read_products'] } }; + const firstAfter = { access_scopes: { scopes: 'read_orders,read_products' } }; + const secondBefore = { access_scopes: { optional_scopes: ['read_products'], scopes: 'read_orders' } }; + const secondAfter = { access_scopes: { scopes: 'read_products,read_orders' } }; + const first = compareConfigs(firstBefore, firstAfter); + const second = compareConfigs(secondBefore, secondAfter); + assert.deepEqual(first.map((item) => findingFingerprint(item, 'shopify.app.toml')), + second.map((item) => findingFingerprint(item, 'shopify.app.toml'))); + const formatted = '[access_scopes]\nscopes = "read_orders"\noptional_scopes = ["read_products"]\n'; + const reordered = '[access_scopes]\noptional_scopes=["read_products"]\n\nscopes="read_orders"\n'; + const empty = '[access_scopes]\nscopes = "read_orders"\n'; + const firstParsed = compareConfigs(parse(empty), parse(formatted)); + const secondParsed = compareConfigs(parse(empty), parse(reordered)); + assert.deepEqual(firstParsed.map((item) => findingFingerprint(item, 'shopify.app.toml')), + secondParsed.map((item) => findingFingerprint(item, 'shopify.app.toml'))); + assert.deepEqual(compareConfigs(parse(formatted), parse(reordered)), []); +}); + +test('baseline lifecycle distinguishes new, existing, and resolved findings', () => { + const first = compareConfigs(before, after)[0]; + const second = { ...first, ruleId: 'APP_PROXY_ENABLED', field: 'app_proxy', summary: 'App proxy enabled; review routing behaviour' }; + const baseline = createBaseline('git-all', [ + { path: 'shopify.app.toml', finding: first }, + { path: 'shopify.app.staging.toml', finding: second }, + ]); + const result = classifyFindings([ + { path: 'shopify.app.toml', finding: first }, + { path: 'shopify.app.toml', finding: second }, + ], baseline, 'git-all'); + assert.deepEqual(result.findings.map((item) => item.lifecycle), ['EXISTING', 'NEW']); + assert.deepEqual(result.counts, { newCount: 1, existingCount: 1, resolvedCount: 1 }); + assert.equal(result.resolvedFindings[0].path, 'shopify.app.staging.toml'); + assert.equal(result.resolvedFindings[0].lifecycle, 'RESOLVED'); +}); + +test('duplicate findings retain counts without duplicating baseline entries', () => { + const baseline = createBaseline('git-file', [ + { path: 'shopify.app.toml', finding }, + { path: 'shopify.app.toml', finding }, + ]); + assert.equal(baseline.findings.length, 1); + assert.equal(baseline.findings[0].count, 2); + const result = classifyFindings([{ path: 'shopify.app.toml', finding }], baseline, 'git-file'); + assert.equal(result.counts.existingCount, 1); + assert.equal(result.counts.resolvedCount, 1); + assert.equal(result.resolvedFindings[0].count, 1); +}); + +test('baseline version, comparison kind, fields, and fingerprints are validated', () => { + const baseline = createBaseline('git-all', [{ path: 'shopify.app.toml', finding }]); + assert.equal(validateBaseline(baseline).schemaVersion, 1); + assert.throws(() => validateBaseline({ ...baseline, schemaVersion: 2 }), /Unsupported.*schema version/); + assert.throws(() => validateBaseline({ ...baseline, comparisonKind: 'other' }), /comparisonKind/); + assert.throws(() => validateBaseline({ ...baseline, findings: [{ ...baseline.findings[0], fingerprint: 'bad' }] }), /fingerprint/); + assert.throws(() => classifyFindings([], baseline, 'configuration-pair'), /does not match/); + assert.throws(() => normaliseRepositoryPath('../private.toml'), /traverse/); + assert.throws(() => normaliseRepositoryPath('/private/shopify.app.toml'), /repository-relative/); +}); + +test('baseline reads and writes are bounded, relative, and do not overwrite', async (t) => { + const dir = mkdtempSync(join(tmpdir(), 'changeguard-baseline-')); + t.after(() => rmSync(dir, { recursive: true, force: true })); + const baseline = createBaseline('configuration-pair', [{ path: 'shopify.app.toml', finding }]); + assert.equal(await writeBaseline('baseline.json', baseline, dir), 'baseline.json'); + assert.deepEqual(await readBaseline('baseline.json', dir), baseline); + await assert.rejects(writeBaseline('baseline.json', baseline, dir), /Unable to create baseline/); + await assert.rejects(readBaseline('../baseline.json', dir), /traverse/); + const malformed = join(dir, 'malformed.json'); + writeFileSync(malformed, '{bad json'); + await assert.rejects(readBaseline('malformed.json', dir), /not valid JSON/); + const unknown = join(dir, 'unknown.json'); + writeFileSync(unknown, JSON.stringify({ ...baseline, schemaVersion: 99 })); + await assert.rejects(readBaseline('unknown.json', dir), /Unsupported.*schema version/); + const link = join(dir, 'linked.json'); + try { + symlinkSync(malformed, link); + } catch (error) { + if (error.code === 'EPERM') return t.skip('Symlink privileges unavailable'); + throw error; + } + await assert.rejects(readBaseline('linked.json', dir), /regular file/); + assert.match(readFileSync(join(dir, 'baseline.json'), 'utf8'), /"comparisonKind": "configuration-pair"/); +}); From bb6d5e9f4228b0962cfc4f80de6d16542b505fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=B6kdemir?= Date: Wed, 21 Oct 2026 22:59:48 +0300 Subject: [PATCH 2/2] fix: stabilise baseline ordering --- .github/workflows/ci.yml | 4 +++- dist/action/index.js | 2 +- dist/baseline.js | 5 ++++- src/baseline.ts | 6 +++++- tests/baseline.test.mjs | 9 +++++++++ 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68d1dbc..9a1c2d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,9 @@ jobs: test: strategy: matrix: - node: [22, 24] + # Keep the required Node 20 branch-protection check while testing the + # supported Node 22 and 24 runtimes. The package engine floor remains 22. + node: [20, 22, 24] runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 diff --git a/dist/action/index.js b/dist/action/index.js index acde9e9..fc611ae 100644 --- a/dist/action/index.js +++ b/dist/action/index.js @@ -1,3 +1,3 @@ import{createRequire as __WEBPACK_EXTERNAL_createRequire}from"module";var __webpack_modules__={8557:(e,t,A)=>{const r=A(9470);const s=global.Date;class Date extends s{constructor(e){super(e);this.isDate=true}toISOString(){return`${this.getUTCFullYear()}-${r(2,this.getUTCMonth()+1)}-${r(2,this.getUTCDate())}`}}e.exports=e=>{const t=new Date(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},9487:(e,t,A)=>{const r=A(9470);class FloatingDateTime extends Date{constructor(e){super(e+"Z");this.isFloating=true}toISOString(){const e=`${this.getUTCFullYear()}-${r(2,this.getUTCMonth()+1)}-${r(2,this.getUTCDate())}`;const t=`${r(2,this.getUTCHours())}:${r(2,this.getUTCMinutes())}:${r(2,this.getUTCSeconds())}.${r(3,this.getUTCMilliseconds())}`;return`${e}T${t}`}}e.exports=e=>{const t=new FloatingDateTime(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},6376:e=>{e.exports=e=>{const t=new Date(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},420:(e,t,A)=>{const r=A(9470);class Time extends Date{constructor(e){super(`0000-01-01T${e}Z`);this.isTime=true}toISOString(){return`${r(2,this.getUTCHours())}:${r(2,this.getUTCMinutes())}:${r(2,this.getUTCSeconds())}.${r(3,this.getUTCMilliseconds())}`}}e.exports=e=>{const t=new Time(e);if(isNaN(t)){throw new TypeError("Invalid Datetime")}else{return t}}},9470:e=>{e.exports=(e,t)=>{t=String(t);while(t.length{const t=1114112;class ParserError extends Error{constructor(e,t,A){super("[ParserError] "+e,t,A);this.name="ParserError";this.code="ParserError";if(Error.captureStackTrace)Error.captureStackTrace(this,ParserError)}}class State{constructor(e){this.parser=e;this.buf="";this.returned=null;this.result=null;this.resultTable=null;this.resultArr=null}}class Parser{constructor(){this.pos=0;this.col=0;this.line=0;this.obj={};this.ctx=this.obj;this.stack=[];this._buf="";this.char=null;this.ii=0;this.state=new State(this.parseStart)}parse(e){if(e.length===0||e.length==null)return;this._buf=String(e);this.ii=-1;this.char=-1;let t;while(t===false||this.nextChar()){t=this.runOne()}this._buf=null}nextChar(){if(this.char===10){++this.line;this.col=-1}++this.ii;this.char=this._buf.codePointAt(this.ii);++this.pos;++this.col;return this.haveBuffer()}haveBuffer(){return this.ii{module.exports=makeParserClass(__nccwpck_require__(5991));module.exports.makeParserClass=makeParserClass;class TomlError extends Error{constructor(e){super(e);this.name="TomlError";if(Error.captureStackTrace)Error.captureStackTrace(this,TomlError);this.fromTOML=true;this.wrapped=null}}TomlError.wrap=e=>{const t=new TomlError(e.message);t.code=e.code;t.wrapped=e;return t};module.exports.TomlError=TomlError;const createDateTime=__nccwpck_require__(6376);const createDateTimeFloat=__nccwpck_require__(9487);const createDate=__nccwpck_require__(8557);const createTime=__nccwpck_require__(420);const CTRL_I=9;const CTRL_J=10;const CTRL_M=13;const CTRL_CHAR_BOUNDARY=31;const CHAR_SP=32;const CHAR_QUOT=34;const CHAR_NUM=35;const CHAR_APOS=39;const CHAR_PLUS=43;const CHAR_COMMA=44;const CHAR_HYPHEN=45;const CHAR_PERIOD=46;const CHAR_0=48;const CHAR_1=49;const CHAR_7=55;const CHAR_9=57;const CHAR_COLON=58;const CHAR_EQUALS=61;const CHAR_A=65;const CHAR_E=69;const CHAR_F=70;const CHAR_T=84;const CHAR_U=85;const CHAR_Z=90;const CHAR_LOWBAR=95;const CHAR_a=97;const CHAR_b=98;const CHAR_e=101;const CHAR_f=102;const CHAR_i=105;const CHAR_l=108;const CHAR_n=110;const CHAR_o=111;const CHAR_r=114;const CHAR_s=115;const CHAR_t=116;const CHAR_u=117;const CHAR_x=120;const CHAR_z=122;const CHAR_LCUB=123;const CHAR_RCUB=125;const CHAR_LSQB=91;const CHAR_BSOL=92;const CHAR_RSQB=93;const CHAR_DEL=127;const SURROGATE_FIRST=55296;const SURROGATE_LAST=57343;const escapes={[CHAR_b]:"\b",[CHAR_t]:"\t",[CHAR_n]:"\n",[CHAR_f]:"\f",[CHAR_r]:"\r",[CHAR_QUOT]:'"',[CHAR_BSOL]:"\\"};function isDigit(e){return e>=CHAR_0&&e<=CHAR_9}function isHexit(e){return e>=CHAR_A&&e<=CHAR_F||e>=CHAR_a&&e<=CHAR_f||e>=CHAR_0&&e<=CHAR_9}function isBit(e){return e===CHAR_1||e===CHAR_0}function isOctit(e){return e>=CHAR_0&&e<=CHAR_7}function isAlphaNumQuoteHyphen(e){return e>=CHAR_A&&e<=CHAR_Z||e>=CHAR_a&&e<=CHAR_z||e>=CHAR_0&&e<=CHAR_9||e===CHAR_APOS||e===CHAR_QUOT||e===CHAR_LOWBAR||e===CHAR_HYPHEN}function isAlphaNumHyphen(e){return e>=CHAR_A&&e<=CHAR_Z||e>=CHAR_a&&e<=CHAR_z||e>=CHAR_0&&e<=CHAR_9||e===CHAR_LOWBAR||e===CHAR_HYPHEN}const _type=Symbol("type");const _declared=Symbol("declared");const hasOwnProperty=Object.prototype.hasOwnProperty;const defineProperty=Object.defineProperty;const descriptor={configurable:true,enumerable:true,writable:true,value:undefined};function hasKey(e,t){if(hasOwnProperty.call(e,t))return true;if(t==="__proto__")defineProperty(e,"__proto__",descriptor);return false}const INLINE_TABLE=Symbol("inline-table");function InlineTable(){return Object.defineProperties({},{[_type]:{value:INLINE_TABLE}})}function isInlineTable(e){if(e===null||typeof e!=="object")return false;return e[_type]===INLINE_TABLE}const TABLE=Symbol("table");function Table(){return Object.defineProperties({},{[_type]:{value:TABLE},[_declared]:{value:false,writable:true}})}function isTable(e){if(e===null||typeof e!=="object")return false;return e[_type]===TABLE}const _contentType=Symbol("content-type");const INLINE_LIST=Symbol("inline-list");function InlineList(e){return Object.defineProperties([],{[_type]:{value:INLINE_LIST},[_contentType]:{value:e}})}function isInlineList(e){if(e===null||typeof e!=="object")return false;return e[_type]===INLINE_LIST}const LIST=Symbol("list");function List(){return Object.defineProperties([],{[_type]:{value:LIST}})}function isList(e){if(e===null||typeof e!=="object")return false;return e[_type]===LIST}let _custom;try{const utilInspect=eval("require('util').inspect");_custom=utilInspect.custom}catch(e){}const _inspect=_custom||"inspect";class BoxedBigInt{constructor(e){try{this.value=global.BigInt.asIntN(64,e)}catch(e){this.value=null}Object.defineProperty(this,_type,{value:INTEGER})}isNaN(){return this.value===null}toString(){return String(this.value)}[_inspect](){return`[BigInt: ${this.toString()}]}`}valueOf(){return this.value}}const INTEGER=Symbol("integer");function Integer(e){let t=Number(e);if(Object.is(t,-0))t=0;if(global.BigInt&&!Number.isSafeInteger(t)){return new BoxedBigInt(e)}else{return Object.defineProperties(new Number(t),{isNaN:{value:function(){return isNaN(this)}},[_type]:{value:INTEGER},[_inspect]:{value:()=>`[Integer: ${e}]`}})}}function isInteger(e){if(e===null||typeof e!=="object")return false;return e[_type]===INTEGER}const FLOAT=Symbol("float");function Float(e){return Object.defineProperties(new Number(e),{[_type]:{value:FLOAT},[_inspect]:{value:()=>`[Float: ${e}]`}})}function isFloat(e){if(e===null||typeof e!=="object")return false;return e[_type]===FLOAT}function tomlType(e){const t=typeof e;if(t==="object"){if(e===null)return"null";if(e instanceof Date)return"datetime";if(_type in e){switch(e[_type]){case INLINE_TABLE:return"inline-table";case INLINE_LIST:return"inline-list";case TABLE:return"table";case LIST:return"list";case FLOAT:return"float";case INTEGER:return"integer"}}}return t}function makeParserClass(e){class TOMLParser extends e{constructor(){super();this.ctx=this.obj=Table()}atEndOfWord(){return this.char===CHAR_NUM||this.char===CTRL_I||this.char===CHAR_SP||this.atEndOfLine()}atEndOfLine(){return this.char===e.END||this.char===CTRL_J||this.char===CTRL_M}parseStart(){if(this.char===e.END){return null}else if(this.char===CHAR_LSQB){return this.call(this.parseTableOrList)}else if(this.char===CHAR_NUM){return this.call(this.parseComment)}else if(this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M){return null}else if(isAlphaNumQuoteHyphen(this.char)){return this.callNow(this.parseAssignStatement)}else{throw this.error(new TomlError(`Unknown character "${this.char}"`))}}parseWhitespaceToEOL(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M){return null}else if(this.char===CHAR_NUM){return this.goto(this.parseComment)}else if(this.char===e.END||this.char===CTRL_J){return this.return()}else{throw this.error(new TomlError("Unexpected character, expected only whitespace or comments till end of line"))}}parseAssignStatement(){return this.callNow(this.parseAssign,this.recordAssignStatement)}recordAssignStatement(e){let t=this.ctx;let A=e.key.pop();for(let A of e.key){if(hasKey(t,A)&&(!isTable(t[A])||t[A][_declared])){throw this.error(new TomlError("Can't redefine existing key"))}t=t[A]=t[A]||Table()}if(hasKey(t,A)){throw this.error(new TomlError("Can't redefine existing key"))}if(isInteger(e.value)||isFloat(e.value)){t[A]=e.value.valueOf()}else{t[A]=e.value}return this.goto(this.parseWhitespaceToEOL)}parseAssign(){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}recordAssignKeyword(e){if(this.state.resultTable){this.state.resultTable.push(e)}else{this.state.resultTable=[e]}return this.goto(this.parseAssignKeywordPreDot)}parseAssignKeywordPreDot(){if(this.char===CHAR_PERIOD){return this.next(this.parseAssignKeywordPostDot)}else if(this.char!==CHAR_SP&&this.char!==CTRL_I){return this.goto(this.parseAssignEqual)}}parseAssignKeywordPostDot(){if(this.char!==CHAR_SP&&this.char!==CTRL_I){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}}parseAssignEqual(){if(this.char===CHAR_EQUALS){return this.next(this.parseAssignPreValue)}else{throw this.error(new TomlError('Invalid character, expected "="'))}}parseAssignPreValue(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else{return this.callNow(this.parseValue,this.recordAssignValue)}}recordAssignValue(e){return this.returnNow({key:this.state.resultTable,value:e})}parseComment(){do{if(this.char===e.END||this.char===CTRL_J){return this.return()}}while(this.nextChar())}parseTableOrList(){if(this.char===CHAR_LSQB){this.next(this.parseList)}else{return this.goto(this.parseTable)}}parseTable(){this.ctx=this.obj;return this.goto(this.parseTableNext)}parseTableNext(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else{return this.callNow(this.parseKeyword,this.parseTableMore)}}parseTableMore(e){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===CHAR_RSQB){if(hasKey(this.ctx,e)&&(!isTable(this.ctx[e])||this.ctx[e][_declared])){throw this.error(new TomlError("Can't redefine existing key"))}else{this.ctx=this.ctx[e]=this.ctx[e]||Table();this.ctx[_declared]=true}return this.next(this.parseWhitespaceToEOL)}else if(this.char===CHAR_PERIOD){if(!hasKey(this.ctx,e)){this.ctx=this.ctx[e]=Table()}else if(isTable(this.ctx[e])){this.ctx=this.ctx[e]}else if(isList(this.ctx[e])){this.ctx=this.ctx[e][this.ctx[e].length-1]}else{throw this.error(new TomlError("Can't redefine existing key"))}return this.next(this.parseTableNext)}else{throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}}parseList(){this.ctx=this.obj;return this.goto(this.parseListNext)}parseListNext(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else{return this.callNow(this.parseKeyword,this.parseListMore)}}parseListMore(e){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===CHAR_RSQB){if(!hasKey(this.ctx,e)){this.ctx[e]=List()}if(isInlineList(this.ctx[e])){throw this.error(new TomlError("Can't extend an inline array"))}else if(isList(this.ctx[e])){const t=Table();this.ctx[e].push(t);this.ctx=t}else{throw this.error(new TomlError("Can't redefine an existing key"))}return this.next(this.parseListEnd)}else if(this.char===CHAR_PERIOD){if(!hasKey(this.ctx,e)){this.ctx=this.ctx[e]=Table()}else if(isInlineList(this.ctx[e])){throw this.error(new TomlError("Can't extend an inline array"))}else if(isInlineTable(this.ctx[e])){throw this.error(new TomlError("Can't extend an inline table"))}else if(isList(this.ctx[e])){this.ctx=this.ctx[e][this.ctx[e].length-1]}else if(isTable(this.ctx[e])){this.ctx=this.ctx[e]}else{throw this.error(new TomlError("Can't redefine an existing key"))}return this.next(this.parseListNext)}else{throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}}parseListEnd(e){if(this.char===CHAR_RSQB){return this.next(this.parseWhitespaceToEOL)}else{throw this.error(new TomlError("Unexpected character, expected whitespace, . or ]"))}}parseValue(){if(this.char===e.END){throw this.error(new TomlError("Key without value"))}else if(this.char===CHAR_QUOT){return this.next(this.parseDoubleString)}if(this.char===CHAR_APOS){return this.next(this.parseSingleString)}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){return this.goto(this.parseNumberSign)}else if(this.char===CHAR_i){return this.next(this.parseInf)}else if(this.char===CHAR_n){return this.next(this.parseNan)}else if(isDigit(this.char)){return this.goto(this.parseNumberOrDateTime)}else if(this.char===CHAR_t||this.char===CHAR_f){return this.goto(this.parseBoolean)}else if(this.char===CHAR_LSQB){return this.call(this.parseInlineList,this.recordValue)}else if(this.char===CHAR_LCUB){return this.call(this.parseInlineTable,this.recordValue)}else{throw this.error(new TomlError("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table"))}}recordValue(e){return this.returnNow(e)}parseInf(){if(this.char===CHAR_n){return this.next(this.parseInf2)}else{throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}}parseInf2(){if(this.char===CHAR_f){if(this.state.buf==="-"){return this.return(-Infinity)}else{return this.return(Infinity)}}else{throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'))}}parseNan(){if(this.char===CHAR_a){return this.next(this.parseNan2)}else{throw this.error(new TomlError('Unexpected character, expected "nan"'))}}parseNan2(){if(this.char===CHAR_n){return this.return(NaN)}else{throw this.error(new TomlError('Unexpected character, expected "nan"'))}}parseKeyword(){if(this.char===CHAR_QUOT){return this.next(this.parseBasicString)}else if(this.char===CHAR_APOS){return this.next(this.parseLiteralString)}else{return this.goto(this.parseBareKey)}}parseBareKey(){do{if(this.char===e.END){throw this.error(new TomlError("Key ended without value"))}else if(isAlphaNumHyphen(this.char)){this.consume()}else if(this.state.buf.length===0){throw this.error(new TomlError("Empty bare keys are not allowed"))}else{return this.returnNow()}}while(this.nextChar())}parseSingleString(){if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiStringMaybe)}else{return this.goto(this.parseLiteralString)}}parseLiteralString(){do{if(this.char===CHAR_APOS){return this.return()}else if(this.atEndOfLine()){throw this.error(new TomlError("Unterminated string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}parseLiteralMultiStringMaybe(){if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiString)}else{return this.returnNow()}}parseLiteralMultiString(){if(this.char===CTRL_M){return null}else if(this.char===CTRL_J){return this.next(this.parseLiteralMultiStringContent)}else{return this.goto(this.parseLiteralMultiStringContent)}}parseLiteralMultiStringContent(){do{if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiEnd)}else if(this.char===e.END){throw this.error(new TomlError("Unterminated multi-line string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}parseLiteralMultiEnd(){if(this.char===CHAR_APOS){return this.next(this.parseLiteralMultiEnd2)}else{this.state.buf+="'";return this.goto(this.parseLiteralMultiStringContent)}}parseLiteralMultiEnd2(){if(this.char===CHAR_APOS){return this.return()}else{this.state.buf+="''";return this.goto(this.parseLiteralMultiStringContent)}}parseDoubleString(){if(this.char===CHAR_QUOT){return this.next(this.parseMultiStringMaybe)}else{return this.goto(this.parseBasicString)}}parseBasicString(){do{if(this.char===CHAR_BSOL){return this.call(this.parseEscape,this.recordEscapeReplacement)}else if(this.char===CHAR_QUOT){return this.return()}else if(this.atEndOfLine()){throw this.error(new TomlError("Unterminated string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}recordEscapeReplacement(e){this.state.buf+=e;return this.goto(this.parseBasicString)}parseMultiStringMaybe(){if(this.char===CHAR_QUOT){return this.next(this.parseMultiString)}else{return this.returnNow()}}parseMultiString(){if(this.char===CTRL_M){return null}else if(this.char===CTRL_J){return this.next(this.parseMultiStringContent)}else{return this.goto(this.parseMultiStringContent)}}parseMultiStringContent(){do{if(this.char===CHAR_BSOL){return this.call(this.parseMultiEscape,this.recordMultiEscapeReplacement)}else if(this.char===CHAR_QUOT){return this.next(this.parseMultiEnd)}else if(this.char===e.END){throw this.error(new TomlError("Unterminated multi-line string"))}else if(this.char===CHAR_DEL||this.char<=CTRL_CHAR_BOUNDARY&&this.char!==CTRL_I&&this.char!==CTRL_J&&this.char!==CTRL_M){throw this.errorControlCharInString()}else{this.consume()}}while(this.nextChar())}errorControlCharInString(){let e="\\u00";if(this.char<16){e+="0"}e+=this.char.toString(16);return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${e} instead`))}recordMultiEscapeReplacement(e){this.state.buf+=e;return this.goto(this.parseMultiStringContent)}parseMultiEnd(){if(this.char===CHAR_QUOT){return this.next(this.parseMultiEnd2)}else{this.state.buf+='"';return this.goto(this.parseMultiStringContent)}}parseMultiEnd2(){if(this.char===CHAR_QUOT){return this.return()}else{this.state.buf+='""';return this.goto(this.parseMultiStringContent)}}parseMultiEscape(){if(this.char===CTRL_M||this.char===CTRL_J){return this.next(this.parseMultiTrim)}else if(this.char===CHAR_SP||this.char===CTRL_I){return this.next(this.parsePreMultiTrim)}else{return this.goto(this.parseEscape)}}parsePreMultiTrim(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===CTRL_M||this.char===CTRL_J){return this.next(this.parseMultiTrim)}else{throw this.error(new TomlError("Can't escape whitespace"))}}parseMultiTrim(){if(this.char===CTRL_J||this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M){return null}else{return this.returnNow()}}parseEscape(){if(this.char in escapes){return this.return(escapes[this.char])}else if(this.char===CHAR_u){return this.call(this.parseSmallUnicode,this.parseUnicodeReturn)}else if(this.char===CHAR_U){return this.call(this.parseLargeUnicode,this.parseUnicodeReturn)}else{throw this.error(new TomlError("Unknown escape character: "+this.char))}}parseUnicodeReturn(e){try{const t=parseInt(e,16);if(t>=SURROGATE_FIRST&&t<=SURROGATE_LAST){throw this.error(new TomlError("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved"))}return this.returnNow(String.fromCodePoint(t))}catch(e){throw this.error(TomlError.wrap(e))}}parseSmallUnicode(){if(!isHexit(this.char)){throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"))}else{this.consume();if(this.state.buf.length>=4)return this.return()}}parseLargeUnicode(){if(!isHexit(this.char)){throw this.error(new TomlError("Invalid character in unicode sequence, expected hex"))}else{this.consume();if(this.state.buf.length>=8)return this.return()}}parseNumberSign(){this.consume();return this.next(this.parseMaybeSignedInfOrNan)}parseMaybeSignedInfOrNan(){if(this.char===CHAR_i){return this.next(this.parseInf)}else if(this.char===CHAR_n){return this.next(this.parseNan)}else{return this.callNow(this.parseNoUnder,this.parseNumberIntegerStart)}}parseNumberIntegerStart(){if(this.char===CHAR_0){this.consume();return this.next(this.parseNumberIntegerExponentOrDecimal)}else{return this.goto(this.parseNumberInteger)}}parseNumberIntegerExponentOrDecimal(){if(this.char===CHAR_PERIOD){this.consume();return this.call(this.parseNoUnder,this.parseNumberFloat)}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else{return this.returnNow(Integer(this.state.buf))}}parseNumberInteger(){if(isDigit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder)}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else if(this.char===CHAR_PERIOD){this.consume();return this.call(this.parseNoUnder,this.parseNumberFloat)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseNoUnder(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD||this.char===CHAR_E||this.char===CHAR_e){throw this.error(new TomlError("Unexpected character, expected digit"))}else if(this.atEndOfWord()){throw this.error(new TomlError("Incomplete number"))}return this.returnNow()}parseNoUnderHexOctBinLiteral(){if(this.char===CHAR_LOWBAR||this.char===CHAR_PERIOD){throw this.error(new TomlError("Unexpected character, expected digit"))}else if(this.atEndOfWord()){throw this.error(new TomlError("Incomplete number"))}return this.returnNow()}parseNumberFloat(){if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder,this.parseNumberFloat)}else if(isDigit(this.char)){this.consume()}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else{return this.returnNow(Float(this.state.buf))}}parseNumberExponentSign(){if(isDigit(this.char)){return this.goto(this.parseNumberExponent)}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){this.consume();this.call(this.parseNoUnder,this.parseNumberExponent)}else{throw this.error(new TomlError("Unexpected character, expected -, + or digit"))}}parseNumberExponent(){if(isDigit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder)}else{return this.returnNow(Float(this.state.buf))}}parseNumberOrDateTime(){if(this.char===CHAR_0){this.consume();return this.next(this.parseNumberBaseOrDateTime)}else{return this.goto(this.parseNumberOrDateTimeOnly)}}parseNumberOrDateTimeOnly(){if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnder,this.parseNumberInteger)}else if(isDigit(this.char)){this.consume();if(this.state.buf.length>4)this.next(this.parseNumberInteger)}else if(this.char===CHAR_E||this.char===CHAR_e){this.consume();return this.next(this.parseNumberExponentSign)}else if(this.char===CHAR_PERIOD){this.consume();return this.call(this.parseNoUnder,this.parseNumberFloat)}else if(this.char===CHAR_HYPHEN){return this.goto(this.parseDateTime)}else if(this.char===CHAR_COLON){return this.goto(this.parseOnlyTimeHour)}else{return this.returnNow(Integer(this.state.buf))}}parseDateTimeOnly(){if(this.state.buf.length<4){if(isDigit(this.char)){return this.consume()}else if(this.char===CHAR_COLON){return this.goto(this.parseOnlyTimeHour)}else{throw this.error(new TomlError("Expected digit while parsing year part of a date"))}}else{if(this.char===CHAR_HYPHEN){return this.goto(this.parseDateTime)}else{throw this.error(new TomlError("Expected hyphen (-) while parsing year part of date"))}}}parseNumberBaseOrDateTime(){if(this.char===CHAR_b){this.consume();return this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerBin)}else if(this.char===CHAR_o){this.consume();return this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerOct)}else if(this.char===CHAR_x){this.consume();return this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerHex)}else if(this.char===CHAR_PERIOD){return this.goto(this.parseNumberInteger)}else if(isDigit(this.char)){return this.goto(this.parseDateTimeOnly)}else{return this.returnNow(Integer(this.state.buf))}}parseIntegerHex(){if(isHexit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnderHexOctBinLiteral)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseIntegerOct(){if(isOctit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnderHexOctBinLiteral)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseIntegerBin(){if(isBit(this.char)){this.consume()}else if(this.char===CHAR_LOWBAR){return this.call(this.parseNoUnderHexOctBinLiteral)}else{const e=Integer(this.state.buf);if(e.isNaN()){throw this.error(new TomlError("Invalid number"))}else{return this.returnNow(e)}}}parseDateTime(){if(this.state.buf.length<4){throw this.error(new TomlError("Years less than 1000 must be zero padded to four characters"))}this.state.result=this.state.buf;this.state.buf="";return this.next(this.parseDateMonth)}parseDateMonth(){if(this.char===CHAR_HYPHEN){if(this.state.buf.length<2){throw this.error(new TomlError("Months less than 10 must be zero padded to two characters"))}this.state.result+="-"+this.state.buf;this.state.buf="";return this.next(this.parseDateDay)}else if(isDigit(this.char)){this.consume()}else{throw this.error(new TomlError("Incomplete datetime"))}}parseDateDay(){if(this.char===CHAR_T||this.char===CHAR_SP){if(this.state.buf.length<2){throw this.error(new TomlError("Days less than 10 must be zero padded to two characters"))}this.state.result+="-"+this.state.buf;this.state.buf="";return this.next(this.parseStartTimeHour)}else if(this.atEndOfWord()){return this.returnNow(createDate(this.state.result+"-"+this.state.buf))}else if(isDigit(this.char)){this.consume()}else{throw this.error(new TomlError("Incomplete datetime"))}}parseStartTimeHour(){if(this.atEndOfWord()){return this.returnNow(createDate(this.state.result))}else{return this.goto(this.parseTimeHour)}}parseTimeHour(){if(this.char===CHAR_COLON){if(this.state.buf.length<2){throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"))}this.state.result+="T"+this.state.buf;this.state.buf="";return this.next(this.parseTimeMin)}else if(isDigit(this.char)){this.consume()}else{throw this.error(new TomlError("Incomplete datetime"))}}parseTimeMin(){if(this.state.buf.length<2&&isDigit(this.char)){this.consume()}else if(this.state.buf.length===2&&this.char===CHAR_COLON){this.state.result+=":"+this.state.buf;this.state.buf="";return this.next(this.parseTimeSec)}else{throw this.error(new TomlError("Incomplete datetime"))}}parseTimeSec(){if(isDigit(this.char)){this.consume();if(this.state.buf.length===2){this.state.result+=":"+this.state.buf;this.state.buf="";return this.next(this.parseTimeZoneOrFraction)}}else{throw this.error(new TomlError("Incomplete datetime"))}}parseOnlyTimeHour(){if(this.char===CHAR_COLON){if(this.state.buf.length<2){throw this.error(new TomlError("Hours less than 10 must be zero padded to two characters"))}this.state.result=this.state.buf;this.state.buf="";return this.next(this.parseOnlyTimeMin)}else{throw this.error(new TomlError("Incomplete time"))}}parseOnlyTimeMin(){if(this.state.buf.length<2&&isDigit(this.char)){this.consume()}else if(this.state.buf.length===2&&this.char===CHAR_COLON){this.state.result+=":"+this.state.buf;this.state.buf="";return this.next(this.parseOnlyTimeSec)}else{throw this.error(new TomlError("Incomplete time"))}}parseOnlyTimeSec(){if(isDigit(this.char)){this.consume();if(this.state.buf.length===2){return this.next(this.parseOnlyTimeFractionMaybe)}}else{throw this.error(new TomlError("Incomplete time"))}}parseOnlyTimeFractionMaybe(){this.state.result+=":"+this.state.buf;if(this.char===CHAR_PERIOD){this.state.buf="";this.next(this.parseOnlyTimeFraction)}else{return this.return(createTime(this.state.result))}}parseOnlyTimeFraction(){if(isDigit(this.char)){this.consume()}else if(this.atEndOfWord()){if(this.state.buf.length===0)throw this.error(new TomlError("Expected digit in milliseconds"));return this.returnNow(createTime(this.state.result+"."+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}}parseTimeZoneOrFraction(){if(this.char===CHAR_PERIOD){this.consume();this.next(this.parseDateTimeFraction)}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){this.consume();this.next(this.parseTimeZoneHour)}else if(this.char===CHAR_Z){this.consume();return this.return(createDateTime(this.state.result+this.state.buf))}else if(this.atEndOfWord()){return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}}parseDateTimeFraction(){if(isDigit(this.char)){this.consume()}else if(this.state.buf.length===1){throw this.error(new TomlError("Expected digit in milliseconds"))}else if(this.char===CHAR_HYPHEN||this.char===CHAR_PLUS){this.consume();this.next(this.parseTimeZoneHour)}else if(this.char===CHAR_Z){this.consume();return this.return(createDateTime(this.state.result+this.state.buf))}else if(this.atEndOfWord()){return this.returnNow(createDateTimeFloat(this.state.result+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}}parseTimeZoneHour(){if(isDigit(this.char)){this.consume();if(/\d\d$/.test(this.state.buf))return this.next(this.parseTimeZoneSep)}else{throw this.error(new TomlError("Unexpected character in datetime, expected digit"))}}parseTimeZoneSep(){if(this.char===CHAR_COLON){this.consume();this.next(this.parseTimeZoneMin)}else{throw this.error(new TomlError("Unexpected character in datetime, expected colon"))}}parseTimeZoneMin(){if(isDigit(this.char)){this.consume();if(/\d\d$/.test(this.state.buf))return this.return(createDateTime(this.state.result+this.state.buf))}else{throw this.error(new TomlError("Unexpected character in datetime, expected digit"))}}parseBoolean(){if(this.char===CHAR_t){this.consume();return this.next(this.parseTrue_r)}else if(this.char===CHAR_f){this.consume();return this.next(this.parseFalse_a)}}parseTrue_r(){if(this.char===CHAR_r){this.consume();return this.next(this.parseTrue_u)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseTrue_u(){if(this.char===CHAR_u){this.consume();return this.next(this.parseTrue_e)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseTrue_e(){if(this.char===CHAR_e){return this.return(true)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_a(){if(this.char===CHAR_a){this.consume();return this.next(this.parseFalse_l)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_l(){if(this.char===CHAR_l){this.consume();return this.next(this.parseFalse_s)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_s(){if(this.char===CHAR_s){this.consume();return this.next(this.parseFalse_e)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseFalse_e(){if(this.char===CHAR_e){return this.return(false)}else{throw this.error(new TomlError("Invalid boolean, expected true or false"))}}parseInlineList(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J){return null}else if(this.char===e.END){throw this.error(new TomlError("Unterminated inline array"))}else if(this.char===CHAR_NUM){return this.call(this.parseComment)}else if(this.char===CHAR_RSQB){return this.return(this.state.resultArr||InlineList())}else{return this.callNow(this.parseValue,this.recordInlineListValue)}}recordInlineListValue(e){if(this.state.resultArr){const t=this.state.resultArr[_contentType];const A=tomlType(e);if(t!==A){throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${t} and ${A}`))}}else{this.state.resultArr=InlineList(tomlType(e))}if(isFloat(e)||isInteger(e)){this.state.resultArr.push(e.valueOf())}else{this.state.resultArr.push(e)}return this.goto(this.parseInlineListNext)}parseInlineListNext(){if(this.char===CHAR_SP||this.char===CTRL_I||this.char===CTRL_M||this.char===CTRL_J){return null}else if(this.char===CHAR_NUM){return this.call(this.parseComment)}else if(this.char===CHAR_COMMA){return this.next(this.parseInlineList)}else if(this.char===CHAR_RSQB){return this.goto(this.parseInlineList)}else{throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}}parseInlineTable(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===e.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M){throw this.error(new TomlError("Unterminated inline array"))}else if(this.char===CHAR_RCUB){return this.return(this.state.resultTable||InlineTable())}else{if(!this.state.resultTable)this.state.resultTable=InlineTable();return this.callNow(this.parseAssign,this.recordInlineTableValue)}}recordInlineTableValue(e){let t=this.state.resultTable;let A=e.key.pop();for(let A of e.key){if(hasKey(t,A)&&(!isTable(t[A])||t[A][_declared])){throw this.error(new TomlError("Can't redefine existing key"))}t=t[A]=t[A]||Table()}if(hasKey(t,A)){throw this.error(new TomlError("Can't redefine existing key"))}if(isInteger(e.value)||isFloat(e.value)){t[A]=e.value.valueOf()}else{t[A]=e.value}return this.goto(this.parseInlineTableNext)}parseInlineTableNext(){if(this.char===CHAR_SP||this.char===CTRL_I){return null}else if(this.char===e.END||this.char===CHAR_NUM||this.char===CTRL_J||this.char===CTRL_M){throw this.error(new TomlError("Unterminated inline array"))}else if(this.char===CHAR_COMMA){return this.next(this.parseInlineTable)}else if(this.char===CHAR_RCUB){return this.goto(this.parseInlineTable)}else{throw this.error(new TomlError("Invalid character, expected whitespace, comma (,) or close bracket (])"))}}}return TOMLParser}},7072:(e,t,A)=>{e.exports=parseAsync;const r=A(2862);const s=A(7349);function parseAsync(e,t){if(!t)t={};const A=0;const n=t.blocksize||40960;const i=new r;return new Promise((e,t)=>{setImmediate(parseAsyncNext,A,n,e,t)});function parseAsyncNext(t,A,r,n){if(t>=e.length){try{return r(i.finish())}catch(t){return n(s(t,e))}}try{i.parse(e.slice(t,t+A));setImmediate(parseAsyncNext,t+A,A,r,n)}catch(t){n(s(t,e))}}}},7349:e=>{e.exports=prettyError;function prettyError(e,t){if(e.pos==null||e.line==null)return e;let A=e.message;A+=` at row ${e.line+1}, col ${e.col+1}, pos ${e.pos}:\n`;if(t&&t.split){const r=t.split(/\n/);const s=String(Math.min(r.length,e.line+3)).length;let n=" ";while(n.length "+r[t]+"\n";A+=n+" ";for(let t=0;t{e.exports=parseStream;const r=A(2203);const s=A(2862);function parseStream(e){if(e){return parseReadable(e)}else{return parseTransform(e)}}function parseReadable(e){const t=new s;e.setEncoding("utf8");return new Promise((A,r)=>{let s;let n=false;let i=false;function finish(){n=true;if(s)return;try{A(t.finish())}catch(e){r(e)}}function error(e){i=true;r(e)}e.once("end",finish);e.once("error",error);readNext();function readNext(){s=true;let A;while((A=e.read())!==null){try{t.parse(A)}catch(e){return error(e)}}s=false;if(n)return finish();if(i)return;e.once("readable",readNext)}})}function parseTransform(){const e=new s;return new r.Transform({objectMode:true,transform(t,A,r){try{e.parse(t.toString(A))}catch(e){this.emit("error",e)}r()},flush(t){try{this.push(e.finish())}catch(e){this.emit("error",e)}t()}})}},4171:(e,t,A)=>{e.exports=parseString;const r=A(2862);const s=A(7349);function parseString(e){if(global.Buffer&&global.Buffer.isBuffer(e)){e=e.toString("utf8")}const t=new r;try{t.parse(e);return t.finish()}catch(t){throw s(t,e)}}},9185:(e,t,A)=>{e.exports=A(4171);e.exports.async=A(7072);e.exports.stream=A(6874);e.exports.prettyError=A(7349)},3887:e=>{e.exports=stringify;e.exports.value=stringifyInline;function stringify(e){if(e===null)throw typeError("null");if(e===void 0)throw typeError("undefined");if(typeof e!=="object")throw typeError(typeof e);if(typeof e.toJSON==="function")e=e.toJSON();if(e==null)return null;const t=tomlType(e);if(t!=="table")throw typeError(t);return stringifyObject("","",e)}function typeError(e){return new Error("Can only stringify objects, not "+e)}function arrayOneTypeError(){return new Error("Array values can't have mixed types")}function getInlineKeys(e){return Object.keys(e).filter(t=>isInline(e[t]))}function getComplexKeys(e){return Object.keys(e).filter(t=>!isInline(e[t]))}function toJSON(e){let t=Array.isArray(e)?[]:Object.prototype.hasOwnProperty.call(e,"__proto__")?{["__proto__"]:undefined}:{};for(let A of Object.keys(e)){if(e[A]&&typeof e[A].toJSON==="function"&&!("toISOString"in e[A])){t[A]=e[A].toJSON()}else{t[A]=e[A]}}return t}function stringifyObject(e,t,A){A=toJSON(A);var r;var s;r=getInlineKeys(A);s=getComplexKeys(A);var n=[];var i=t||"";r.forEach(e=>{var t=tomlType(A[e]);if(t!=="undefined"&&t!=="null"){n.push(i+stringifyKey(e)+" = "+stringifyAnyInline(A[e],true))}});if(n.length>0)n.push("");var o=e&&r.length>0?t+" ":"";s.forEach(t=>{n.push(stringifyComplex(e,o,t,A[t]))});return n.join("\n")}function isInline(e){switch(tomlType(e)){case"undefined":case"null":case"integer":case"nan":case"float":case"boolean":case"string":case"datetime":return true;case"array":return e.length===0||tomlType(e[0])!=="table";case"table":return Object.keys(e).length===0;default:return false}}function tomlType(e){if(e===undefined){return"undefined"}else if(e===null){return"null"}else if(typeof e==="bigint"||Number.isInteger(e)&&!Object.is(e,-0)){return"integer"}else if(typeof e==="number"){return"float"}else if(typeof e==="boolean"){return"boolean"}else if(typeof e==="string"){return"string"}else if("toISOString"in e){return isNaN(e)?"undefined":"datetime"}else if(Array.isArray(e)){return"array"}else{return"table"}}function stringifyKey(e){var t=String(e);if(/^[-A-Za-z0-9_]+$/.test(t)){return t}else{return stringifyBasicString(t)}}function stringifyBasicString(e){return'"'+escapeString(e).replace(/"/g,'\\"')+'"'}function stringifyLiteralString(e){return"'"+e+"'"}function numpad(e,t){while(t.length"\\u"+numpad(4,e.codePointAt(0).toString(16)))}function stringifyMultilineString(e){let t=e.split(/\n/).map(e=>escapeString(e).replace(/"(?="")/g,'\\"')).join("\n");if(t.slice(-1)==='"')t+="\\\n";return'"""\n'+t+'"""'}function stringifyAnyInline(e,t){let A=tomlType(e);if(A==="string"){if(t&&/\n/.test(e)){A="string-multiline"}else if(!/[\b\t\n\f\r']/.test(e)&&/"/.test(e)){A="string-literal"}}return stringifyInline(e,A)}function stringifyInline(e,t){if(!t)t=tomlType(e);switch(t){case"string-multiline":return stringifyMultilineString(e);case"string":return stringifyBasicString(e);case"string-literal":return stringifyLiteralString(e);case"integer":return stringifyInteger(e);case"float":return stringifyFloat(e);case"boolean":return stringifyBoolean(e);case"datetime":return stringifyDatetime(e);case"array":return stringifyInlineArray(e.filter(e=>tomlType(e)!=="null"&&tomlType(e)!=="undefined"&&tomlType(e)!=="nan"));case"table":return stringifyInlineTable(e);default:throw typeError(t)}}function stringifyInteger(e){return String(e).replace(/\B(?=(\d{3})+(?!\d))/g,"_")}function stringifyFloat(e){if(e===Infinity){return"inf"}else if(e===-Infinity){return"-inf"}else if(Object.is(e,NaN)){return"nan"}else if(Object.is(e,-0)){return"-0.0"}var t=String(e).split(".");var A=t[0];var r=t[1]||0;return stringifyInteger(A)+"."+r}function stringifyBoolean(e){return String(e)}function stringifyDatetime(e){return e.toISOString()}function isNumber(e){return e==="float"||e==="integer"}function arrayType(e){var t=tomlType(e[0]);if(e.every(e=>tomlType(e)===t))return t;if(e.every(e=>isNumber(tomlType(e))))return"float";return"mixed"}function validateArray(e){const t=arrayType(e);if(t==="mixed"){throw arrayOneTypeError()}return t}function stringifyInlineArray(e){e=toJSON(e);const t=validateArray(e);var A="[";var r=e.map(e=>stringifyInline(e,t));if(r.join(", ").length>60||/\n/.test(r)){A+="\n "+r.join(",\n ")+"\n"}else{A+=" "+r.join(", ")+(r.length>0?" ":"")}return A+"]"}function stringifyInlineTable(e){e=toJSON(e);var t=[];Object.keys(e).forEach(A=>{t.push(stringifyKey(A)+" = "+stringifyAnyInline(e[A],false))});return"{ "+t.join(", ")+(t.length>0?" ":"")+"}"}function stringifyComplex(e,t,A,r){var s=tomlType(r);if(s==="array"){return stringifyArrayOfTables(e,t,A,r)}else if(s==="table"){return stringifyComplexTable(e,t,A,r)}else{throw typeError(s)}}function stringifyArrayOfTables(e,t,A,r){r=toJSON(r);validateArray(r);var s=tomlType(r[0]);if(s!=="table")throw typeError(s);var n=e+stringifyKey(A);var i="";r.forEach(e=>{if(i.length>0)i+="\n";i+=t+"[["+n+"]]\n";i+=stringifyObject(n+".",t,e)});return i}function stringifyComplexTable(e,t,A,r){var s=e+stringifyKey(A);var n="";if(getInlineKeys(r).length>0){n+=t+"["+s+"]\n"}return n+stringifyObject(s+".",t,r)}},4572:(e,t,A)=>{t.parse=A(9185);A(3887)},770:(e,t,A)=>{A(218)},218:(e,t,A)=>{var r;var s=A(9278);var n=A(4756);var i=A(8611);var o=A(5692);var a=A(4434);var c=A(2613);var l=A(9023);r=httpOverHttp;r=httpsOverHttp;r=httpOverHttps;r=httpsOverHttps;function httpOverHttp(e){var t=new TunnelingAgent(e);t.request=i.request;return t}function httpsOverHttp(e){var t=new TunnelingAgent(e);t.request=i.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||i.Agent.defaultMaxSockets;t.requests=[];t.sockets=[];t.on("free",function onFree(e,A,r,s){var n=toOptions(A,r,s);for(var i=0,o=t.requests.length;i=this.maxSockets){s.requests.push(n);return}s.createSocket(n,function(t){t.on("free",onFree);t.on("close",onCloseOrRemove);t.on("agentRemove",onCloseOrRemove);e.onSocket(t);function onFree(){s.emit("free",t,n)}function onCloseOrRemove(e){s.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 r={};A.sockets.push(r);var s=mergeOptions({},A.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:false,headers:{host:e.host+":"+e.port}});if(e.localAddress){s.localAddress=e.localAddress}if(s.proxyAuth){s.headers=s.headers||{};s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")}h("making CONNECT request");var n=A.request(s);n.useChunkedEncodingByDefault=false;n.once("response",onResponse);n.once("upgrade",onUpgrade);n.once("connect",onConnect);n.once("error",onError);n.end();function onResponse(e){e.upgrade=true}function onUpgrade(e,t,A){process.nextTick(function(){onConnect(e,t,A)})}function onConnect(s,i,o){n.removeAllListeners();i.removeAllListeners();if(s.statusCode!==200){h("tunneling socket could not be established, statusCode=%d",s.statusCode);i.destroy();var a=new Error("tunneling socket could not be established, "+"statusCode="+s.statusCode);a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(r);return}if(o.length>0){h("got illegal response body from proxy");i.destroy();var a=new Error("got illegal response body from proxy");a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(r);return}h("tunneling connection has established");A.sockets[A.sockets.indexOf(r)]=i;return t(i)}function onError(t){n.removeAllListeners();h("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var s=new Error("tunneling socket could not be established, "+"cause="+t.message);s.code="ECONNRESET";e.request.emit("error",s);A.removeSocket(r)}};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(r){var s=e.request.getHeader("host");var i=mergeOptions({},A.options,{socket:r,servername:s?s.replace(/:.*$/,""):e.host});var o=n.connect(0,i);A.sockets[A.sockets.indexOf(r)]=o;t(o)})}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{var r;const s=A(3701);const n=A(883);const i=A(628);const o=A(837);const a=A(7405);const c=A(6672);const l=A(3137);const h=A(50);const g=A(8707);const u=A(3440);const{InvalidArgumentError:E}=g;const Q=A(6615);const C=A(9136);const B=A(7365);const I=A(7501);const d=A(4004);const f=A(2429);const p=A(7816);const{getGlobalDispatcher:w,setGlobalDispatcher:y}=A(2581);const m=A(8155);const R=A(8754);const D=A(5092);Object.assign(n.prototype,Q);r=n;r=s;r=i;r=o;r=a;r=c;r=l;r=h;r=p;r=m;r=R;r=D;r={redirect:A(1514),retry:A(2026),dump:A(8060),dns:A(379)};r=C;r=g;r={parseHeaders:u.parseHeaders,headerNameToString:u.headerNameToString};function makeDispatcher(e){return(t,A,r)=>{if(typeof A==="function"){r=A;A=null}if(!t||typeof t!=="string"&&typeof t!=="object"&&!(t instanceof URL)){throw new E("invalid url")}if(A!=null&&typeof A!=="object"){throw new E("invalid opts")}if(A&&A.path!=null){if(typeof A.path!=="string"){throw new E("invalid opts.path")}let e=A.path;if(!A.path.startsWith("/")){e=`/${e}`}t=new URL(u.parseOrigin(t).origin+e)}else{if(!A){A=typeof t==="object"?t:{}}t=u.parseURL(t)}const{agent:s,dispatcher:n=w()}=A;if(s){throw new E("unsupported opts.agent. Did you mean opts.client?")}return e.call(n,{...A,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:A.method||(A.body?"PUT":"GET")},r)}}r=y;r=w;const b=A(4398).fetch;r=async function fetch(e,t=undefined){try{return await b(e,t)}catch(e){if(e&&typeof e==="object"){Error.captureStackTrace(e)}throw e}};A(660).Headers;A(9051).Response;A(9967).Request;A(5910).FormData;r=globalThis.File??A(4573).File;A(8355).FileReader;const{setGlobalOrigin:k,getGlobalOrigin:S}=A(1059);r=k;r=S;const{CacheStorage:F}=A(3245);const{kConstruct:N}=A(109);r=new F(N);const{deleteCookie:U,getCookies:T,getSetCookies:M,setCookie:L}=A(9061);r=U;r=T;r=M;r=L;const{parseMIMEType:v,serializeAMimeType:H}=A(1900);r=v;r=H;const{CloseEvent:x,ErrorEvent:G,MessageEvent:Y}=A(5188);A(3726).WebSocket;r=x;r=G;r=Y;r=makeDispatcher(Q.request);r=makeDispatcher(Q.stream);r=makeDispatcher(Q.pipeline);r=makeDispatcher(Q.connect);r=makeDispatcher(Q.upgrade);r=B;r=d;r=I;r=f;const{EventSource:J}=A(1238);r=J},158:(e,t,A)=>{const{addAbortListener:r}=A(3440);const{RequestAbortedError:s}=A(8707);const n=Symbol("kListener");const i=Symbol("kSignal");function abort(e){if(e.abort){e.abort(e[i]?.reason)}else{e.reason=e[i]?.reason??new s}removeSignal(e)}function addSignal(e,t){e.reason=null;e[i]=null;e[n]=null;if(!t){return}if(t.aborted){abort(e);return}e[i]=t;e[n]=()=>{abort(e)};r(e[i],e[n])}function removeSignal(e){if(!e[i]){return}if("removeEventListener"in e[i]){e[i].removeEventListener("abort",e[n])}else{e[i].removeListener("abort",e[n])}e[i]=null;e[n]=null}e.exports={addSignal:addSignal,removeSignal:removeSignal}},2279:(e,t,A)=>{const r=A(4589);const{AsyncResource:s}=A(6698);const{InvalidArgumentError:n,SocketError:i}=A(8707);const o=A(3440);const{addSignal:a,removeSignal:c}=A(158);class ConnectHandler extends s{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:r,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=r||null;this.responseHeaders=s||null;this.callback=t;this.abort=null;a(this,A)}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(){throw new i("bad connect",null)}onUpgrade(e,t,A){const{callback:r,opaque:s,context:n}=this;c(this);this.callback=null;let i=t;if(i!=null){i=this.responseHeaders==="raw"?o.parseRawHeaders(t):o.parseHeaders(t)}this.runInAsyncScope(r,null,null,{statusCode:e,headers:i,socket:A,opaque:s,context:n})}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,r)=>e?A(e):t(r))})}try{const A=new ConnectHandler(e,t);this.dispatch({...e,method:"CONNECT"},A)}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}e.exports=connect},6862:(e,t,A)=>{const{Readable:r,Duplex:s,PassThrough:n}=A(7075);const{InvalidArgumentError:i,InvalidReturnValueError:o,RequestAbortedError:a}=A(8707);const c=A(3440);const{AsyncResource:l}=A(6698);const{addSignal:h,removeSignal:g}=A(158);const u=A(4589);const E=Symbol("resume");class PipelineRequest extends r{constructor(){super({autoDestroy:true});this[E]=null}_read(){const{[E]:e}=this;if(e){this[E]=null;e()}}_destroy(e,t){this._read();t(e)}}class PipelineResponse extends r{constructor(e){super({autoDestroy:true});this[E]=e}_read(){this[E]()}_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 i("invalid opts")}if(typeof t!=="function"){throw new i("invalid handler")}const{signal:A,method:r,opaque:n,onInfo:o,responseHeaders:l}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new i("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new i("invalid method")}if(o&&typeof o!=="function"){throw new i("invalid onInfo callback")}super("UNDICI_PIPELINE");this.opaque=n||null;this.responseHeaders=l||null;this.handler=t;this.abort=null;this.context=null;this.onInfo=o||null;this.req=(new PipelineRequest).on("error",c.nop);this.ret=new s({readableObjectMode:e.objectMode,autoDestroy:true,read:()=>{const{body:e}=this;if(e?.resume){e.resume()}},write:(e,t,A)=>{const{req:r}=this;if(r.push(e,t)||r._readableState.destroyed){A()}else{r[E]=A}},destroy:(e,t)=>{const{body:A,req:r,res:s,ret:n,abort:i}=this;if(!e&&!n._readableState.endEmitted){e=new a}if(i&&e){i()}c.destroy(A,e);c.destroy(r,e);c.destroy(s,e);g(this);t(e)}}).on("prefinish",()=>{const{req:e}=this;e.push(null)});this.res=null;h(this,A)}onConnect(e,t){const{ret:A,res:r}=this;if(this.reason){e(this.reason);return}u(!r,"pipeline cannot be retried");u(!A.destroyed);this.abort=e;this.context=t}onHeaders(e,t,A){const{opaque:r,handler:s,context:n}=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 i;try{this.handler=null;const A=this.responseHeaders==="raw"?c.parseRawHeaders(t):c.parseHeaders(t);i=this.runInAsyncScope(s,null,{statusCode:e,headers:A,opaque:r,body:this.res,context:n})}catch(e){this.res.on("error",c.nop);throw e}if(!i||typeof i.on!=="function"){throw new o("expected Readable")}i.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=i}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 n).destroy(e)}}e.exports=pipeline},4043:(e,t,A)=>{const r=A(4589);const{Readable:s}=A(9927);const{InvalidArgumentError:n,RequestAbortedError:i}=A(8707);const o=A(3440);const{getResolveErrorBodyCallback:a}=A(7655);const{AsyncResource:c}=A(6698);class RequestHandler extends c{constructor(e,t){if(!e||typeof e!=="object"){throw new n("invalid opts")}const{signal:A,method:r,opaque:s,body:a,onInfo:c,responseHeaders:l,throwOnError:h,highWaterMark:g}=e;try{if(typeof t!=="function"){throw new n("invalid callback")}if(g&&(typeof g!=="number"||g<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(r==="CONNECT"){throw new n("invalid method")}if(c&&typeof c!=="function"){throw new n("invalid onInfo callback")}super("UNDICI_REQUEST")}catch(e){if(o.isStream(a)){o.destroy(a.on("error",o.nop),e)}throw e}this.method=r;this.responseHeaders=l||null;this.opaque=s||null;this.callback=t;this.res=null;this.abort=null;this.body=a;this.trailers={};this.context=null;this.onInfo=c||null;this.throwOnError=h;this.highWaterMark=g;this.signal=A;this.reason=null;this.removeAbortListener=null;if(o.isStream(a)){a.on("error",e=>{this.onError(e)})}if(this.signal){if(this.signal.aborted){this.reason=this.signal.reason??new i}else{this.removeAbortListener=o.addAbortListener(this.signal,()=>{this.reason=this.signal.reason??new i;if(this.res){o.destroy(this.res.on("error",o.nop),this.reason)}else if(this.abort){this.abort(this.reason)}if(this.removeAbortListener){this.res?.off("close",this.removeAbortListener);this.removeAbortListener();this.removeAbortListener=null}})}}}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(e,t,A,r){const{callback:n,opaque:i,abort:c,context:l,responseHeaders:h,highWaterMark:g}=this;const u=h==="raw"?o.parseRawHeaders(t):o.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:u})}return}const E=h==="raw"?o.parseHeaders(t):u;const Q=E["content-type"];const C=E["content-length"];const B=new s({resume:A,abort:c,contentType:Q,contentLength:this.method!=="HEAD"&&C?Number(C):null,highWaterMark:g});if(this.removeAbortListener){B.on("close",this.removeAbortListener)}this.callback=null;this.res=B;if(n!==null){if(this.throwOnError&&e>=400){this.runInAsyncScope(a,null,{callback:n,body:B,contentType:Q,statusCode:e,statusMessage:r,headers:u})}else{this.runInAsyncScope(n,null,null,{statusCode:e,headers:u,trailers:this.trailers,opaque:i,body:B,context:l})}}}onData(e){return this.res.push(e)}onComplete(e){o.parseHeaders(e,this.trailers);this.res.push(null)}onError(e){const{res:t,callback:A,body:r,opaque:s}=this;if(A){this.callback=null;queueMicrotask(()=>{this.runInAsyncScope(A,null,e,{opaque:s})})}if(t){this.res=null;queueMicrotask(()=>{o.destroy(t,e)})}if(r){this.body=null;o.destroy(r,e)}if(this.removeAbortListener){t?.off("close",this.removeAbortListener);this.removeAbortListener();this.removeAbortListener=null}}}function request(e,t){if(t===undefined){return new Promise((t,A)=>{request.call(this,e,(e,r)=>e?A(e):t(r))})}try{this.dispatch(e,new RequestHandler(e,t))}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}e.exports=request;e.exports.RequestHandler=RequestHandler},3560:(e,t,A)=>{const r=A(4589);const{finished:s,PassThrough:n}=A(7075);const{InvalidArgumentError:i,InvalidReturnValueError:o}=A(8707);const a=A(3440);const{getResolveErrorBodyCallback:c}=A(7655);const{AsyncResource:l}=A(6698);const{addSignal:h,removeSignal:g}=A(158);class StreamHandler extends l{constructor(e,t,A){if(!e||typeof e!=="object"){throw new i("invalid opts")}const{signal:r,method:s,opaque:n,body:o,onInfo:c,responseHeaders:l,throwOnError:g}=e;try{if(typeof A!=="function"){throw new i("invalid callback")}if(typeof t!=="function"){throw new i("invalid factory")}if(r&&typeof r.on!=="function"&&typeof r.addEventListener!=="function"){throw new i("signal must be an EventEmitter or EventTarget")}if(s==="CONNECT"){throw new i("invalid method")}if(c&&typeof c!=="function"){throw new i("invalid onInfo callback")}super("UNDICI_STREAM")}catch(e){if(a.isStream(o)){a.destroy(o.on("error",a.nop),e)}throw e}this.responseHeaders=l||null;this.opaque=n||null;this.factory=t;this.callback=A;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=o;this.onInfo=c||null;this.throwOnError=g||false;if(a.isStream(o)){o.on("error",e=>{this.onError(e)})}h(this,r)}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(e,t,A,r){const{factory:i,opaque:l,context:h,callback:g,responseHeaders:u}=this;const E=u==="raw"?a.parseRawHeaders(t):a.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:E})}return}this.factory=null;let Q;if(this.throwOnError&&e>=400){const A=u==="raw"?a.parseHeaders(t):E;const s=A["content-type"];Q=new n;this.callback=null;this.runInAsyncScope(c,null,{callback:g,body:Q,contentType:s,statusCode:e,statusMessage:r,headers:E})}else{if(i===null){return}Q=this.runInAsyncScope(i,null,{statusCode:e,headers:E,opaque:l,context:h});if(!Q||typeof Q.write!=="function"||typeof Q.end!=="function"||typeof Q.on!=="function"){throw new o("expected Writable")}s(Q,{readable:false},e=>{const{callback:t,res:A,opaque:r,trailers:s,abort:n}=this;this.res=null;if(e||!A.readable){a.destroy(A,e)}this.callback=null;this.runInAsyncScope(t,null,e||null,{opaque:r,trailers:s});if(e){n()}})}Q.on("drain",A);this.res=Q;const C=Q.writableNeedDrain!==undefined?Q.writableNeedDrain:Q._writableState?.needDrain;return C!==true}onData(e){const{res:t}=this;return t?t.write(e):true}onComplete(e){const{res:t}=this;g(this);if(!t){return}this.trailers=a.parseHeaders(e);t.end()}onError(e){const{res:t,callback:A,opaque:r,body:s}=this;g(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:r})})}if(s){this.body=null;a.destroy(s,e)}}}function stream(e,t,A){if(A===undefined){return new Promise((A,r)=>{stream.call(this,e,t,(e,t)=>e?r(e):A(t))})}try{this.dispatch(e,new StreamHandler(e,t,A))}catch(t){if(typeof A!=="function"){throw t}const r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}e.exports=stream},1882:(e,t,A)=>{const{InvalidArgumentError:r,SocketError:s}=A(8707);const{AsyncResource:n}=A(6698);const i=A(3440);const{addSignal:o,removeSignal:a}=A(158);const c=A(4589);class UpgradeHandler extends n{constructor(e,t){if(!e||typeof e!=="object"){throw new r("invalid opts")}if(typeof t!=="function"){throw new r("invalid callback")}const{signal:A,opaque:s,responseHeaders:n}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new r("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=n||null;this.opaque=s||null;this.callback=t;this.abort=null;this.context=null;o(this,A)}onConnect(e,t){if(this.reason){e(this.reason);return}c(this.callback);this.abort=e;this.context=null}onHeaders(){throw new s("bad upgrade",null)}onUpgrade(e,t,A){c(e===101);const{callback:r,opaque:s,context:n}=this;a(this);this.callback=null;const o=this.responseHeaders==="raw"?i.parseRawHeaders(t):i.parseHeaders(t);this.runInAsyncScope(r,null,null,{headers:o,socket:A,opaque:s,context:n})}onError(e){const{callback:t,opaque:A}=this;a(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,r)=>e?A(e):t(r))})}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 r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}e.exports=upgrade},6615:(e,t,A)=>{e.exports.request=A(4043);e.exports.stream=A(3560);e.exports.pipeline=A(6862);e.exports.upgrade=A(1882);e.exports.connect=A(2279)},9927:(e,t,A)=>{const r=A(4589);const{Readable:s}=A(7075);const{RequestAbortedError:n,NotSupportedError:i,InvalidArgumentError:o,AbortError:a}=A(8707);const c=A(3440);const{ReadableStreamFrom:l}=A(3440);const h=Symbol("kConsume");const g=Symbol("kReading");const u=Symbol("kBody");const E=Symbol("kAbort");const Q=Symbol("kContentType");const C=Symbol("kContentLength");const noop=()=>{};class BodyReadable extends s{constructor({resume:e,abort:t,contentType:A="",contentLength:r,highWaterMark:s=64*1024}){super({autoDestroy:true,read:e,highWaterMark:s});this._readableState.dataEmitted=false;this[E]=t;this[h]=null;this[u]=null;this[Q]=A;this[C]=r;this[g]=false}destroy(e){if(!e&&!this._readableState.endEmitted){e=new n}if(e){this[E]()}return super.destroy(e)}_destroy(e,t){if(!this[g]){setImmediate(()=>{t(e)})}else{t(e)}}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[h]&&e!==null){consumePush(this[h],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 bytes(){return consume(this,"bytes")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new i}get bodyUsed(){return c.isDisturbed(this)}get body(){if(!this[u]){this[u]=l(this);if(this[h]){this[u].getReader();r(this[u].locked)}}return this[u]}async dump(e){let t=Number.isFinite(e?.limit)?e.limit:128*1024;const A=e?.signal;if(A!=null&&(typeof A!=="object"||!("aborted"in A))){throw new o("signal must be an AbortSignal")}A?.throwIfAborted();if(this._readableState.closeEmitted){return null}return await new Promise((e,r)=>{if(this[C]>t){this.destroy(new a)}const onAbort=()=>{this.destroy(A.reason??new a)};A?.addEventListener("abort",onAbort);this.on("close",function(){A?.removeEventListener("abort",onAbort);if(A?.aborted){r(A.reason??new a)}else{e(null)}}).on("error",noop).on("data",function(e){t-=e.length;if(t<=0){this.destroy()}}).resume()})}}function isLocked(e){return e[u]&&e[u].locked===true||e[h]}function isUnusable(e){return c.isDisturbed(e)||isLocked(e)}async function consume(e,t){r(!e[h]);return new Promise((A,r)=>{if(isUnusable(e)){const t=e._readableState;if(t.destroyed&&t.closeEmitted===false){e.on("error",e=>{r(e)}).on("close",()=>{r(new TypeError("unusable"))})}else{r(t.errored??new TypeError("unusable"))}}else{queueMicrotask(()=>{e[h]={type:t,stream:e,resolve:A,reject:r,length:0,body:[]};e.on("error",function(e){consumeFinish(this[h],e)}).on("close",function(){if(this[h].body!==null){consumeFinish(this[h],new n)}});consumeStart(e[h])})}})}function consumeStart(e){if(e.body===null){return}const{_readableState:t}=e.stream;if(t.bufferIndex){const A=t.bufferIndex;const r=t.buffer.length;for(let s=A;s2&&A[0]===239&&A[1]===187&&A[2]===191?3:0;return A.utf8Slice(s,r)}function chunksConcat(e,t){if(e.length===0||t===0){return new Uint8Array(0)}if(e.length===1){return new Uint8Array(e[0])}const A=new Uint8Array(Buffer.allocUnsafeSlow(t).buffer);let r=0;for(let t=0;t{const r=A(4589);const{ResponseStatusCodeError:s}=A(8707);const{chunksDecode:n}=A(9927);const i=128*1024;async function getResolveErrorBodyCallback({callback:e,body:t,contentType:A,statusCode:o,statusMessage:a,headers:c}){r(t);let l=[];let h=0;try{for await(const e of t){l.push(e);h+=e.length;if(h>i){l=[];h=0;break}}}catch{l=[];h=0}const g=`Response status code ${o}${a?`: ${a}`:""}`;if(o===204||!A||!h){queueMicrotask(()=>e(new s(g,o,c)));return}const u=Error.stackTraceLimit;Error.stackTraceLimit=0;let E;try{if(isContentTypeApplicationJson(A)){E=JSON.parse(n(l,h))}else if(isContentTypeText(A)){E=n(l,h)}}catch{}finally{Error.stackTraceLimit=u}queueMicrotask(()=>e(new s(g,o,c,E)))}const isContentTypeApplicationJson=e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n";const isContentTypeText=e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t";e.exports={getResolveErrorBodyCallback:getResolveErrorBodyCallback,isContentTypeApplicationJson:isContentTypeApplicationJson,isContentTypeText:isContentTypeText}},9136:(e,t,A)=>{const r=A(7030);const s=A(4589);const n=A(3440);const{InvalidArgumentError:i,ConnectTimeoutError:o}=A(8707);const a=A(6603);function noop(){}let c;let l;if(global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)){l=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:o,timeout:a,session:g,...u}){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new i("maxCachedSessions must be a positive integer or zero")}const E={path:o,...u};const Q=new l(t==null?100:t);a=a==null?1e4:a;e=e!=null?e:false;return function connect({hostname:t,host:i,protocol:o,port:l,servername:u,localAddress:C,httpSocket:B},I){let d;if(o==="https:"){if(!c){c=A(1692)}u=u||E.servername||n.getServerName(i)||null;const r=u||t;s(r);const o=g||Q.get(r)||null;l=l||443;d=c.connect({highWaterMark:16384,...E,servername:u,session:o,localAddress:C,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:B,port:l,host:t});d.on("session",function(e){Q.set(r,e)})}else{s(!B,"httpSocket can only be sent on TLS update");l=l||80;d=r.connect({highWaterMark:64*1024,...E,localAddress:C,port:l,host:t})}if(E.keepAlive==null||E.keepAlive){const e=E.keepAliveInitialDelay===undefined?6e4:E.keepAliveInitialDelay;d.setKeepAlive(true,e)}const f=h(new WeakRef(d),{timeout:a,hostname:t,port:l});d.setNoDelay(true).once(o==="https:"?"secureConnect":"connect",function(){queueMicrotask(f);if(I){const e=I;I=null;e(null,this)}}).on("error",function(e){queueMicrotask(f);if(I){const t=I;I=null;t(e)}});return d}}const h=process.platform==="win32"?(e,t)=>{if(!t.timeout){return noop}let A=null;let r=null;const s=a.setFastTimeout(()=>{A=setImmediate(()=>{r=setImmediate(()=>onConnectTimeout(e.deref(),t))})},t.timeout);return()=>{a.clearFastTimeout(s);clearImmediate(A);clearImmediate(r)}}:(e,t)=>{if(!t.timeout){return noop}let A=null;const r=a.setFastTimeout(()=>{A=setImmediate(()=>{onConnectTimeout(e.deref(),t)})},t.timeout);return()=>{a.clearFastTimeout(r);clearImmediate(A)}};function onConnectTimeout(e,t){if(e==null){return}let A="Connect Timeout Error";if(Array.isArray(e.autoSelectFamilyAttemptedAddresses)){A+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`}else{A+=` (attempted address: ${t.hostname}:${t.port},`}A+=` timeout: ${t.timeout}ms)`;n.destroy(e,new o(A))}e.exports=buildConnector},735:e=>{const t={};const A=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e{const r=A(3053);const s=A(7975);const n=s.debuglog("undici");const i=s.debuglog("fetch");const o=s.debuglog("websocket");let a=false;const c={beforeConnect:r.channel("undici:client:beforeConnect"),connected:r.channel("undici:client:connected"),connectError:r.channel("undici:client:connectError"),sendHeaders:r.channel("undici:client:sendHeaders"),create:r.channel("undici:request:create"),bodySent:r.channel("undici:request:bodySent"),headers:r.channel("undici:request:headers"),trailers:r.channel("undici:request:trailers"),error:r.channel("undici:request:error"),open:r.channel("undici:websocket:open"),close:r.channel("undici:websocket:close"),socketError:r.channel("undici:websocket:socket_error"),ping:r.channel("undici:websocket:ping"),pong:r.channel("undici:websocket:pong")};if(n.enabled||i.enabled){const e=i.enabled?i:n;r.channel("undici:client:beforeConnect").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connecting to %s using %s%s",`${n}${s?`:${s}`:""}`,r,A)});r.channel("undici:client:connected").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connected to %s using %s%s",`${n}${s?`:${s}`:""}`,r,A)});r.channel("undici:client:connectError").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n},error:i}=t;e("connection to %s using %s%s errored - %s",`${n}${s?`:${s}`:""}`,r,A,i.message)});r.channel("undici:client:sendHeaders").subscribe(t=>{const{request:{method:A,path:r,origin:s}}=t;e("sending request to %s %s/%s",A,s,r)});r.channel("undici:request:headers").subscribe(t=>{const{request:{method:A,path:r,origin:s},response:{statusCode:n}}=t;e("received response to %s %s/%s - HTTP %d",A,s,r,n)});r.channel("undici:request:trailers").subscribe(t=>{const{request:{method:A,path:r,origin:s}}=t;e("trailers received from %s %s/%s",A,s,r)});r.channel("undici:request:error").subscribe(t=>{const{request:{method:A,path:r,origin:s},error:n}=t;e("request to %s %s/%s errored - %s",A,s,r,n.message)});a=true}if(o.enabled){if(!a){const e=n.enabled?n:o;r.channel("undici:client:beforeConnect").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connecting to %s%s using %s%s",n,s?`:${s}`:"",r,A)});r.channel("undici:client:connected").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n}}=t;e("connected to %s%s using %s%s",n,s?`:${s}`:"",r,A)});r.channel("undici:client:connectError").subscribe(t=>{const{connectParams:{version:A,protocol:r,port:s,host:n},error:i}=t;e("connection to %s%s using %s%s errored - %s",n,s?`:${s}`:"",r,A,i.message)});r.channel("undici:client:sendHeaders").subscribe(t=>{const{request:{method:A,path:r,origin:s}}=t;e("sending request to %s %s/%s",A,s,r)})}r.channel("undici:websocket:open").subscribe(e=>{const{address:{address:t,port:A}}=e;o("connection opened %s%s",t,A?`:${A}`:"")});r.channel("undici:websocket:close").subscribe(e=>{const{websocket:t,code:A,reason:r}=e;o("closed connection to %s - %s %s",t.url,A,r)});r.channel("undici:websocket:socket_error").subscribe(e=>{o("connection errored - %s",e.message)});r.channel("undici:websocket:ping").subscribe(e=>{o("ping received")});r.channel("undici:websocket:pong").subscribe(e=>{o("pong received")})}e.exports={channels:c}},8707:e=>{const t=Symbol.for("undici.error.UND_ERR");class UndiciError extends Error{constructor(e){super(e);this.name="UndiciError";this.code="UND_ERR"}static[Symbol.hasInstance](e){return e&&e[t]===true}[t]=true}const A=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");class ConnectTimeoutError extends UndiciError{constructor(e){super(e);this.name="ConnectTimeoutError";this.message=e||"Connect Timeout Error";this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[A]===true}[A]=true}const r=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");class HeadersTimeoutError extends UndiciError{constructor(e){super(e);this.name="HeadersTimeoutError";this.message=e||"Headers Timeout Error";this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[r]===true}[r]=true}const s=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");class HeadersOverflowError extends UndiciError{constructor(e){super(e);this.name="HeadersOverflowError";this.message=e||"Headers Overflow Error";this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](e){return e&&e[s]===true}[s]=true}const n=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");class BodyTimeoutError extends UndiciError{constructor(e){super(e);this.name="BodyTimeoutError";this.message=e||"Body Timeout Error";this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[n]===true}[n]=true}const i=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE");class ResponseStatusCodeError extends UndiciError{constructor(e,t,A,r){super(e);this.name="ResponseStatusCodeError";this.message=e||"Response Status Code Error";this.code="UND_ERR_RESPONSE_STATUS_CODE";this.body=r;this.status=t;this.statusCode=t;this.headers=A}static[Symbol.hasInstance](e){return e&&e[i]===true}[i]=true}const o=Symbol.for("undici.error.UND_ERR_INVALID_ARG");class InvalidArgumentError extends UndiciError{constructor(e){super(e);this.name="InvalidArgumentError";this.message=e||"Invalid Argument Error";this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](e){return e&&e[o]===true}[o]=true}const a=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");class InvalidReturnValueError extends UndiciError{constructor(e){super(e);this.name="InvalidReturnValueError";this.message=e||"Invalid Return Value Error";this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](e){return e&&e[a]===true}[a]=true}const c=Symbol.for("undici.error.UND_ERR_ABORT");class AbortError extends UndiciError{constructor(e){super(e);this.name="AbortError";this.message=e||"The operation was aborted";this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](e){return e&&e[c]===true}[c]=true}const l=Symbol.for("undici.error.UND_ERR_ABORTED");class RequestAbortedError extends AbortError{constructor(e){super(e);this.name="AbortError";this.message=e||"Request aborted";this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](e){return e&&e[l]===true}[l]=true}const h=Symbol.for("undici.error.UND_ERR_INFO");class InformationalError extends UndiciError{constructor(e){super(e);this.name="InformationalError";this.message=e||"Request information";this.code="UND_ERR_INFO"}static[Symbol.hasInstance](e){return e&&e[h]===true}[h]=true}const g=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");class RequestContentLengthMismatchError extends UndiciError{constructor(e){super(e);this.name="RequestContentLengthMismatchError";this.message=e||"Request body length does not match content-length header";this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](e){return e&&e[g]===true}[g]=true}const u=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");class ResponseContentLengthMismatchError extends UndiciError{constructor(e){super(e);this.name="ResponseContentLengthMismatchError";this.message=e||"Response body length does not match content-length header";this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](e){return e&&e[u]===true}[u]=true}const E=Symbol.for("undici.error.UND_ERR_DESTROYED");class ClientDestroyedError extends UndiciError{constructor(e){super(e);this.name="ClientDestroyedError";this.message=e||"The client is destroyed";this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](e){return e&&e[E]===true}[E]=true}const Q=Symbol.for("undici.error.UND_ERR_CLOSED");class ClientClosedError extends UndiciError{constructor(e){super(e);this.name="ClientClosedError";this.message=e||"The client is closed";this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](e){return e&&e[Q]===true}[Q]=true}const C=Symbol.for("undici.error.UND_ERR_SOCKET");class SocketError extends UndiciError{constructor(e,t){super(e);this.name="SocketError";this.message=e||"Socket error";this.code="UND_ERR_SOCKET";this.socket=t}static[Symbol.hasInstance](e){return e&&e[C]===true}[C]=true}const B=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");class NotSupportedError extends UndiciError{constructor(e){super(e);this.name="NotSupportedError";this.message=e||"Not supported error";this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](e){return e&&e[B]===true}[B]=true}const I=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");class BalancedPoolMissingUpstreamError extends UndiciError{constructor(e){super(e);this.name="MissingUpstreamError";this.message=e||"No upstream has been added to the BalancedPool";this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](e){return e&&e[I]===true}[I]=true}const d=Symbol.for("undici.error.UND_ERR_HTTP_PARSER");class HTTPParserError extends Error{constructor(e,t,A){super(e);this.name="HTTPParserError";this.code=t?`HPE_${t}`:undefined;this.data=A?A.toString():undefined}static[Symbol.hasInstance](e){return e&&e[d]===true}[d]=true}const f=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");class ResponseExceededMaxSizeError extends UndiciError{constructor(e){super(e);this.name="ResponseExceededMaxSizeError";this.message=e||"Response content exceeded max size";this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](e){return e&&e[f]===true}[f]=true}const p=Symbol.for("undici.error.UND_ERR_REQ_RETRY");class RequestRetryError extends UndiciError{constructor(e,t,{headers:A,data:r}){super(e);this.name="RequestRetryError";this.message=e||"Request retry error";this.code="UND_ERR_REQ_RETRY";this.statusCode=t;this.data=r;this.headers=A}static[Symbol.hasInstance](e){return e&&e[p]===true}[p]=true}const w=Symbol.for("undici.error.UND_ERR_RESPONSE");class ResponseError extends UndiciError{constructor(e,t,{headers:A,data:r}){super(e);this.name="ResponseError";this.message=e||"Response error";this.code="UND_ERR_RESPONSE";this.statusCode=t;this.data=r;this.headers=A}static[Symbol.hasInstance](e){return e&&e[w]===true}[w]=true}const y=Symbol.for("undici.error.UND_ERR_PRX_TLS");class SecureProxyConnectionError extends UndiciError{constructor(e,t,A){super(t,{cause:e,...A??{}});this.name="SecureProxyConnectionError";this.message=t||"Secure Proxy Connection failed";this.code="UND_ERR_PRX_TLS";this.cause=e}static[Symbol.hasInstance](e){return e&&e[y]===true}[y]=true}const m=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");class MessageSizeExceededError extends UndiciError{constructor(e){super(e);this.name="MessageSizeExceededError";this.message=e||"Max decompressed message size exceeded";this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](e){return e&&e[m]===true}get[m](){return true}}e.exports={AbortError:AbortError,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,RequestRetryError:RequestRetryError,ResponseError:ResponseError,SecureProxyConnectionError:SecureProxyConnectionError,MessageSizeExceededError:MessageSizeExceededError}},4655:(e,t,A)=>{const{InvalidArgumentError:r,NotSupportedError:s}=A(8707);const n=A(4589);const{isValidHTTPToken:i,isValidHeaderValue:o,isStream:a,destroy:c,isBuffer:l,isFormDataLike:h,isIterable:g,isBlobLike:u,buildURL:E,validateHandler:Q,getServerName:C,normalizedMethodRecords:B}=A(3440);const{channels:I}=A(2414);const{headerNameLowerCasedRecord:d}=A(735);const f=/[^\u0021-\u00ff]/;const p=Symbol("handler");class Request{constructor(e,{path:t,method:A,body:s,headers:n,query:d,idempotent:w,blocking:y,upgrade:m,headersTimeout:R,bodyTimeout:D,reset:b,throwOnError:k,expectContinue:S,servername:F},N){if(typeof t!=="string"){throw new r("path must be a string")}else if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&A!=="CONNECT"){throw new r("path must be an absolute URL or start with a slash")}else if(f.test(t)){throw new r("invalid request path")}if(typeof A!=="string"){throw new r("method must be a string")}else if(B[A]===undefined&&!i(A)){throw new r("invalid request method")}if(m&&typeof m!=="string"){throw new r("upgrade must be a string")}if(m&&!o(m)){throw new r("invalid upgrade header")}if(R!=null&&(!Number.isFinite(R)||R<0)){throw new r("invalid headersTimeout")}if(D!=null&&(!Number.isFinite(D)||D<0)){throw new r("invalid bodyTimeout")}if(b!=null&&typeof b!=="boolean"){throw new r("invalid reset")}if(S!=null&&typeof S!=="boolean"){throw new r("invalid expectContinue")}this.headersTimeout=R;this.bodyTimeout=D;this.throwOnError=k===true;this.method=A;this.abort=null;if(s==null){this.body=null}else if(a(s)){this.body=s;const e=this.body._readableState;if(!e||!e.autoDestroy){this.endHandler=function autoDestroy(){c(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(l(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(h(s)||g(s)||u(s)){this.body=s}else{throw new r("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable")}this.completed=false;this.aborted=false;this.upgrade=m||null;this.path=d?E(t,d):t;this.origin=e;this.idempotent=w==null?A==="HEAD"||A==="GET":w;this.blocking=y==null?false:y;this.reset=b==null?null:b;this.host=null;this.contentLength=null;this.contentType=null;this.headers=[];this.expectContinue=S!=null?S:false;if(Array.isArray(n)){if(n.length%2!==0){throw new r("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"),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"),kBody:Symbol("abstracted request body"),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"),kResume:Symbol("resume"),kOnError:Symbol("on error"),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"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}},7752:(e,t,A)=>{const{wellknownHeaderNames:r,headerNameLowerCasedRecord:s}=A(735);class TstNode{value=null;left=null;middle=null;right=null;code;constructor(e,t,A){if(A===undefined||A>=e.length){throw new TypeError("Unreachable")}const r=this.code=e.charCodeAt(A);if(r>127){throw new TypeError("key must be ascii string")}if(e.length!==++A){this.middle=new TstNode(e,t,A)}else{this.value=t}}add(e,t){const A=e.length;if(A===0){throw new TypeError("Unreachable")}let r=0;let s=this;while(true){const n=e.charCodeAt(r);if(n>127){throw new TypeError("key must be ascii string")}if(s.code===n){if(A===++r){s.value=t;break}else if(s.middle!==null){s=s.middle}else{s.middle=new TstNode(e,t,r);break}}else if(s.code=65){s|=32}while(r!==null){if(s===r.code){if(t===++A){return r}r=r.middle;break}r=r.code{const r=A(4589);const{kDestroyed:s,kBodyUsed:n,kListeners:i,kBody:o}=A(6443);const{IncomingMessage:a}=A(7067);const c=A(7075);const l=A(7030);const{Blob:h}=A(4573);const g=A(7975);const{stringify:u}=A(1792);const{EventEmitter:E}=A(8474);const{InvalidArgumentError:Q}=A(8707);const{headerNameLowerCasedRecord:C}=A(735);const{tree:B}=A(7752);const[I,d]=process.versions.node.split(".").map(e=>Number(e));class BodyAsyncIterable{constructor(e){this[o]=e;this[n]=false}async*[Symbol.asyncIterator](){r(!this[n],"disturbed");this[n]=true;yield*this[o]}}function wrapRequestBody(e){if(isStream(e)){if(bodyLength(e)===0){e.on("data",function(){r(false)})}if(typeof e.readableDidRead!=="boolean"){e[n]=false;E.prototype.on.call(e,"data",function(){this[n]=true})}return e}else if(e&&typeof e.pipeTo==="function"){return new BodyAsyncIterable(e)}else if(e&&typeof e!=="string"&&!ArrayBuffer.isView(e)&&isIterable(e)){return new BodyAsyncIterable(e)}else{return e}}function nop(){}function isStream(e){return e&&typeof e==="object"&&typeof e.pipe==="function"&&typeof e.on==="function"}function isBlobLike(e){if(e===null){return false}else if(e instanceof h){return true}else if(typeof e!=="object"){return false}else{const t=e[Symbol.toStringTag];return(t==="Blob"||t==="File")&&("stream"in e&&typeof e.stream==="function"||"arrayBuffer"in e&&typeof e.arrayBuffer==="function")}}function buildURL(e,t){if(e.includes("?")||e.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const A=u(t);if(A){e+="?"+A}return e}function isValidPort(e){const t=parseInt(e,10);return t===Number(e)&&t>=0&&t<=65535}function isHttpOrHttpsPrefixed(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function parseURL(e){if(typeof e==="string"){e=new URL(e);if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}if(!e||typeof e!=="object"){throw new Q("Invalid URL: The URL argument must be a non-null object.")}if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&isValidPort(e.port)===false){throw new Q("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 Q("Invalid URL path: the path must be a string or null/undefined.")}if(e.pathname!=null&&typeof e.pathname!=="string"){throw new Q("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(e.hostname!=null&&typeof e.hostname!=="string"){throw new Q("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(e.origin!=null&&typeof e.origin!=="string"){throw new Q("Invalid URL origin: the origin must be a string or null/undefined.")}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}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 r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;if(A[A.length-1]==="/"){A=A.slice(0,A.length-1)}if(r&&r[0]!=="/"){r=`/${r}`}return new URL(`${A}${r}`)}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}function parseOrigin(e){e=parseURL(e);if(e.pathname!=="/"||e.search||e.hash){throw new Q("invalid url")}return e}function getHostname(e){if(e[0]==="["){const t=e.indexOf("]");r(t!==-1);return e.substring(1,t)}const t=e.indexOf(":");if(t===-1)return e;return e.substring(0,t)}function getServerName(e){if(!e){return null}r(typeof e==="string");const t=getHostname(e);if(l.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[s]||c.isDestroyed?.(e))}function destroy(e,t){if(e==null||!isStream(e)||isDestroyed(e)){return}if(typeof e.destroy==="function"){if(Object.getPrototypeOf(e).constructor===a){e.socket=null}e.destroy(t)}else if(t){queueMicrotask(()=>{e.emit("error",t)})}if(e.destroyed!==true){e[s]=true}}const f=/timeout=(\d+)/;function parseKeepAliveTimeout(e){const t=e.toString().match(f);return t?parseInt(t[1],10)*1e3:null}function headerNameToString(e){return typeof e==="string"?C[e]??e.toLowerCase():B.lookup(e)??e.toString("latin1").toLowerCase()}function bufferToLowerCasedHeaderName(e){return B.lookup(e)??e.toString("latin1").toLowerCase()}function parseHeaders(e,t){if(t===undefined)t={};for(let A=0;Ae.toString("utf8")):s.toString("utf8")}}}if("content-length"in t&&"content-disposition"in t){t["content-disposition"]=Buffer.from(t["content-disposition"]).toString("latin1")}return t}function parseRawHeaders(e){const t=e.length;const A=new Array(t);let r=false;let s=-1;let n;let i;let o=0;for(let t=0;t{e.close();e.byobRequest?.respond(0)})}else{const t=Buffer.isBuffer(r)?r:Buffer.from(r);if(t.byteLength){e.enqueue(new Uint8Array(t))}}return e.desiredSize>0},async cancel(e){await t.return()},type:"bytes"})}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 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 p=typeof String.prototype.toWellFormed==="function";const w=typeof String.prototype.isWellFormed==="function";function toUSVString(e){return p?`${e}`.toWellFormed():g.toUSVString(e)}function isUSVString(e){return w?`${e}`.isWellFormed():toUSVString(e)===`${e}`}function isTokenCharCode(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return false;default:return e>=33&&e<=126}}function isValidHTTPToken(e){if(e.length===0){return false}for(let t=0;t{const{InvalidArgumentError:r}=A(8707);const{kClients:s,kRunning:n,kClose:i,kDestroy:o,kDispatch:a,kInterceptors:c}=A(6443);const l=A(1841);const h=A(628);const g=A(3701);const u=A(3440);const E=A(5092);const Q=Symbol("onConnect");const C=Symbol("onDisconnect");const B=Symbol("onConnectionError");const I=Symbol("maxRedirections");const d=Symbol("onDrain");const f=Symbol("factory");const p=Symbol("options");function defaultFactory(e,t){return t&&t.connections===1?new g(e,t):new h(e,t)}class Agent extends l{constructor({factory:e=defaultFactory,maxRedirections:t=0,connect:A,...n}={}){if(typeof e!=="function"){throw new r("factory must be a function.")}if(A!=null&&typeof A!=="function"&&typeof A!=="object"){throw new r("connect must be a function or an object")}if(!Number.isInteger(t)||t<0){throw new r("maxRedirections must be a positive number")}super(n);if(A&&typeof A!=="function"){A={...A}}this[c]=n.interceptors?.Agent&&Array.isArray(n.interceptors.Agent)?n.interceptors.Agent:[E({maxRedirections:t})];this[p]={...u.deepClone(n),connect:A};this[p].interceptors=n.interceptors?{...n.interceptors}:undefined;this[I]=t;this[f]=e;this[s]=new Map;this[d]=(e,t)=>{this.emit("drain",e,[this,...t])};this[Q]=(e,t)=>{this.emit("connect",e,[this,...t])};this[C]=(e,t,A)=>{this.emit("disconnect",e,[this,...t],A)};this[B]=(e,t,A)=>{this.emit("connectionError",e,[this,...t],A)}}get[n](){let e=0;for(const t of this[s].values()){e+=t[n]}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 r("opts.origin must be a non-empty string or URL.")}let n=this[s].get(A);if(!n){n=this[f](e.origin,this[p]).on("drain",this[d]).on("connect",this[Q]).on("disconnect",this[C]).on("connectionError",this[B]);this[s].set(A,n)}return n.dispatch(e,t)}async[i](){const e=[];for(const t of this[s].values()){e.push(t.close())}this[s].clear();await Promise.all(e)}async[o](e){const t=[];for(const A of this[s].values()){t.push(A.destroy(e))}this[s].clear();await Promise.all(t)}}e.exports=Agent},837:(e,t,A)=>{const{BalancedPoolMissingUpstreamError:r,InvalidArgumentError:s}=A(8707);const{PoolBase:n,kClients:i,kNeedDrain:o,kAddClient:a,kRemoveClient:c,kGetDispatcher:l}=A(2128);const h=A(628);const{kUrl:g,kInterceptors:u}=A(6443);const{parseOrigin:E}=A(3440);const Q=Symbol("factory");const C=Symbol("options");const B=Symbol("kGreatestCommonDivisor");const I=Symbol("kCurrentWeight");const d=Symbol("kIndex");const f=Symbol("kWeight");const p=Symbol("kMaxWeightPerServer");const w=Symbol("kErrorPenalty");function getGreatestCommonDivisor(e,t){if(e===0)return t;while(t!==0){const A=t;t=e%t;e=A}return e}function defaultFactory(e,t){return new h(e,t)}class BalancedPool extends n{constructor(e=[],{factory:t=defaultFactory,...A}={}){super();this[C]=A;this[d]=-1;this[I]=0;this[p]=this[C].maxWeightPerServer||100;this[w]=this[C].errorPenalty||15;if(!Array.isArray(e)){e=[e]}if(typeof t!=="function"){throw new s("factory must be a function.")}this[u]=A.interceptors?.BalancedPool&&Array.isArray(A.interceptors.BalancedPool)?A.interceptors.BalancedPool:[];this[Q]=t;for(const t of e){this.addUpstream(t)}this._updateBalancedPoolStats()}addUpstream(e){const t=E(e).origin;if(this[i].find(e=>e[g].origin===t&&e.closed!==true&&e.destroyed!==true)){return this}const A=this[Q](t,Object.assign({},this[C]));this[a](A);A.on("connect",()=>{A[f]=Math.min(this[p],A[f]+this[w])});A.on("connectionError",()=>{A[f]=Math.max(1,A[f]-this[w]);this._updateBalancedPoolStats()});A.on("disconnect",(...e)=>{const t=e[2];if(t&&t.code==="UND_ERR_SOCKET"){A[f]=Math.max(1,A[f]-this[w]);this._updateBalancedPoolStats()}});for(const e of this[i]){e[f]=this[p]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){let e=0;for(let t=0;te[g].origin===t&&e.closed!==true&&e.destroyed!==true);if(A){this[c](A)}return this}get upstreams(){return this[i].filter(e=>e.closed!==true&&e.destroyed!==true).map(e=>e[g].origin)}[l](){if(this[i].length===0){throw new r}const e=this[i].find(e=>!e[o]&&e.closed!==true&&e.destroyed!==true);if(!e){return}const t=this[i].map(e=>e[o]).reduce((e,t)=>e&&t,true);if(t){return}let A=0;let s=this[i].findIndex(e=>!e[o]);while(A++this[i][s][f]&&!e[o]){s=this[d]}if(this[d]===0){this[I]=this[I]-this[B];if(this[I]<=0){this[I]=this[p]}}if(e[f]>=this[I]&&!e[o]){return e}}this[I]=this[i][s][f];this[d]=s;return this[i][s]}}e.exports=BalancedPool},637:(e,t,A)=>{const r=A(4589);const s=A(3440);const{channels:n}=A(2414);const i=A(6603);const{RequestContentLengthMismatchError:o,ResponseContentLengthMismatchError:a,RequestAbortedError:c,InvalidArgumentError:l,HeadersTimeoutError:h,HeadersOverflowError:g,SocketError:u,InformationalError:E,BodyTimeoutError:Q,HTTPParserError:C,ResponseExceededMaxSizeError:B}=A(8707);const{kUrl:I,kReset:d,kClient:f,kParser:p,kBlocking:w,kRunning:y,kPending:m,kSize:R,kWriting:D,kQueue:b,kNoRef:k,kKeepAliveDefaultTimeout:S,kHostHeader:F,kPendingIdx:N,kRunningIdx:U,kError:T,kPipelining:M,kSocket:L,kKeepAliveTimeoutValue:v,kMaxHeadersSize:H,kKeepAliveMaxTimeout:x,kKeepAliveTimeoutThreshold:G,kHeadersTimeout:Y,kBodyTimeout:J,kStrictContentLength:_,kMaxRequests:V,kCounter:O,kMaxResponseSize:P,kOnError:W,kResume:q,kHTTPContext:Z}=A(6443);const z=A(2824);const K=Buffer.alloc(0);const X=Buffer[Symbol.species];const j=s.addListener;const $=s.removeAllListeners;const ee=Symbol("kIdleSocketValidation");const te=Symbol("kIdleSocketValidationTimeout");const Ae=Symbol("kSocketUsed");let re;async function lazyllhttp(){const e=process.env.JEST_WORKER_ID?A(3870):undefined;let t;try{t=await WebAssembly.compile(A(3434))}catch(r){t=await WebAssembly.compile(e||A(3870))}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(e,t,A)=>0,wasm_on_status:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onStatus(new X(oe.buffer,s,A))||0},wasm_on_message_begin:e=>{r(ie.ptr===e);return ie.onMessageBegin()||0},wasm_on_header_field:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onHeaderField(new X(oe.buffer,s,A))||0},wasm_on_header_value:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onHeaderValue(new X(oe.buffer,s,A))||0},wasm_on_headers_complete:(e,t,A,s)=>{r(ie.ptr===e);return ie.onHeadersComplete(t,Boolean(A),Boolean(s))||0},wasm_on_body:(e,t,A)=>{r(ie.ptr===e);const s=t-ce+oe.byteOffset;return ie.onBody(new X(oe.buffer,s,A))||0},wasm_on_message_complete:e=>{r(ie.ptr===e);return ie.onMessageComplete()||0}}})}let se=null;let ne=lazyllhttp();ne.catch();let ie=null;let oe=null;let ae=0;let ce=null;const le=0;const he=1;const ge=2|he;const ue=4|he;const Ee=8|le;class Parser{constructor(e,t,{exports:A}){r(Number.isFinite(e[H])&&e[H]>0);this.llhttp=A;this.ptr=this.llhttp.llhttp_alloc(z.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[H];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=e[P]}setTimeout(e,t){if(e!==this.timeoutValue||t&he^this.timeoutType&he){if(this.timeout){i.clearTimeout(this.timeout);this.timeout=null}if(e){if(t&he){this.timeout=i.setFastTimeout(onParserTimeout,e,new WeakRef(this))}else{this.timeout=setTimeout(onParserTimeout,e,new WeakRef(this));this.timeout.unref()}}this.timeoutValue=e}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.timeoutType=t}resume(){if(this.socket.destroyed||!this.paused){return}r(this.ptr!=null);r(ie==null);this.llhttp.llhttp_resume(this.ptr);r(this.timeoutType===ue);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||K);this.readMore()}readMore(){while(!this.paused&&this.ptr){const e=this.socket.read();if(e===null){break}this.execute(e)}}execute(e){r(this.ptr!=null);r(ie==null);r(!this.paused);const{socket:t,llhttp:A}=this;if(e.length>ae){if(ce){A.free(ce)}ae=Math.ceil(e.length/4096)*4096;ce=A.malloc(ae)}new Uint8Array(A.memory.buffer,ce,ae).set(e);try{let r;try{oe=e;ie=this;r=A.llhttp_execute(this.ptr,ce,e.length)}catch(e){throw e}finally{ie=null;oe=null}const s=A.llhttp_get_error_pos(this.ptr)-ce;if(r!==z.ERROR.OK){const A=e.subarray(s);if(r===z.ERROR.PAUSED_UPGRADE){this.onUpgrade(A)}else if(r===z.ERROR.PAUSED){this.paused=true;t.unshift(A)}else{throw this.createError(r,A)}}}catch(e){s.destroy(t,e)}}finish(){r(ie===null);r(this.ptr!=null);r(!this.paused);const{llhttp:e}=this;let t;try{ie=this;t=e.llhttp_finish(this.ptr)}finally{ie=null}if(t===z.ERROR.OK){return null}if(t===z.ERROR.PAUSED||t===z.ERROR.PAUSED_UPGRADE){this.paused=true;return null}return this.createError(t,K)}createError(e,t){const{llhttp:A,contentLength:r,bytesRead:s}=this;if(r&&s!==parseInt(r,10)){return new a}const n=A.llhttp_get_error_reason(this.ptr);let i="";if(n){const e=new Uint8Array(A.memory.buffer,n).indexOf(0);i="Response does not match the HTTP/1.1 protocol ("+Buffer.from(A.memory.buffer,n,e).toString()+")"}return new C(i,z.ERROR[e],t)}destroy(){r(this.ptr!=null);r(ie==null);this.llhttp.llhttp_free(this.ptr);this.ptr=null;this.timeout&&i.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}if(t[y]===0){s.destroy(e,new u("bad response",s.getSocketInfo(e)));return-1}const A=t[b][t[U]];if(!A){return-1}A.onResponseStarted()}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){const t=s.bufferToLowerCasedHeaderName(A);if(t==="keep-alive"){this.keepAlive+=e.toString()}else if(t==="connection"){this.connection+=e.toString()}}else if(A.length===14&&s.bufferToLowerCasedHeaderName(A)==="content-length"){this.contentLength+=e.toString()}this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e;if(this.headersSize>=this.headersMaxSize){s.destroy(this.socket,new g)}}onUpgrade(e){const{upgrade:t,client:A,socket:n,headers:i,statusCode:o,statusText:a}=this;r(t);r(A[L]===n);r(!n.destroyed);r(!this.paused);r((i.length&1)===0);const c=A[b][A[U]];r(c);r(c.upgrade||c.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;this.headers=[];this.headersSize=0;n.unshift(e);n[p].destroy();n[p]=null;n[f]=null;n[T]=null;$(n);A[L]=null;A[Z]=null;A[b][A[U]++]=null;A.emit("disconnect",A[I],[A],new E("upgrade"));try{c.onUpgrade(o,i,n,a)}catch(e){s.errorRequest(A,c,e);s.destroy(n,e)}A[q]()}onHeadersComplete(e,t,A){const{client:n,socket:i,headers:o,statusText:a}=this;if(i.destroyed){return-1}if(n[y]===0){s.destroy(i,new u("bad response",s.getSocketInfo(i)));return-1}const c=n[b][n[U]];if(!c){return-1}r(!this.upgrade);r(this.statusCode<200);if(e===100){s.destroy(i,new u("bad response",s.getSocketInfo(i)));return-1}if(t&&!c.upgrade){s.destroy(i,new u("bad upgrade",s.getSocketInfo(i)));return-1}r(this.timeoutType===ge);this.statusCode=e;this.shouldKeepAlive=A||c.method==="HEAD"&&!i[d]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const e=c.bodyTimeout!=null?c.bodyTimeout:n[J];this.setTimeout(e,ue)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(c.method==="CONNECT"){r(n[y]===1);this.upgrade=true;return 2}if(t){r(n[y]===1);this.upgrade=true;return 2}r((this.headers.length&1)===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&n[M]){const e=this.keepAlive?s.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){const t=Math.min(e-n[G],n[x]);if(t<=0){i[d]=true}else{n[v]=t}}else{n[v]=n[S]}}else{i[d]=true}const l=c.onHeaders(e,o,this.resume,a)===false;if(c.aborted){return-1}if(c.method==="HEAD"){return 1}if(e<200){return 1}if(i[w]){i[w]=false;n[q]()}return l?z.ERROR.PAUSED:0}onBody(e){const{client:t,socket:A,statusCode:n,maxResponseSize:i}=this;if(A.destroyed){return-1}const o=t[b][t[U]];r(o);r(this.timeoutType===ue);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}r(n>=200);if(i>-1&&this.bytesRead+e.length>i){s.destroy(A,new B);return-1}this.bytesRead+=e.length;if(o.onData(e)===false){return z.ERROR.PAUSED}}onMessageComplete(){const{client:e,socket:t,statusCode:A,upgrade:n,headers:i,contentLength:o,bytesRead:c,shouldKeepAlive:l}=this;if(t.destroyed&&(!A||l)){return-1}if(n){return}r(A>=100);r((this.headers.length&1)===0);const h=e[b][e[U]];r(h);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";this.headers=[];this.headersSize=0;if(A<200){return}if(h.method!=="HEAD"&&o&&c!==parseInt(o,10)){s.destroy(t,new a);return-1}h.onComplete(i);e[b][e[U]++]=null;t[Ae]=true;if(t[D]){r(e[y]===0);s.destroy(t,new E("reset"));return z.ERROR.PAUSED}else if(!l){s.destroy(t,new E("reset"));return z.ERROR.PAUSED}else if(t[d]&&e[y]===0){s.destroy(t,new E("reset"));return z.ERROR.PAUSED}else if(e[M]==null||e[M]===1){setImmediate(()=>e[q]())}else{e[q]()}}}function onParserTimeout(e){const{socket:t,timeoutType:A,client:n,paused:i}=e.deref();if(A===ge){if(!t[D]||t.writableNeedDrain||n[y]>1){r(!i,"cannot be paused while waiting for headers");s.destroy(t,new h)}}else if(A===ue){if(!i){s.destroy(t,new Q)}}else if(A===Ee){r(n[y]===0&&n[v]);s.destroy(t,new E("socket idle timeout"))}}async function connectH1(e,t){e[L]=t;if(!se){se=await ne;ne=null}t[k]=false;t[D]=false;t[d]=false;t[w]=false;t[ee]=0;t[te]=null;t[Ae]=false;t[p]=new Parser(e,t,se);j(t,"error",function(e){r(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");const t=this[p];if(e.code==="ECONNRESET"&&t.statusCode&&!t.shouldKeepAlive){const e=t.finish();if(e){this[T]=e;this[f][W](e)}return}this[T]=e;this[f][W](e)});j(t,"readable",function(){const e=this[p];if(e){e.readMore()}});j(t,"end",function(){const e=this[p];if(e.statusCode&&!e.shouldKeepAlive){const t=e.finish();if(t){s.destroy(this,t)}return}s.destroy(this,new u("other side closed",s.getSocketInfo(this)))});j(t,"close",function(){const e=this[f];const t=this[p];clearIdleSocketValidation(this);if(t){if(!this[T]&&t.statusCode&&!t.shouldKeepAlive){this[T]=t.finish()||this[T]}this[p].destroy();this[p]=null}const A=this[T]||new u("closed",s.getSocketInfo(this));e[L]=null;e[Z]=null;if(e.destroyed){r(e[m]===0);const t=e[b].splice(e[U]);for(let r=0;r0&&A.code!=="UND_ERR_INFO"){const t=e[b][e[U]];e[b][e[U]++]=null;s.errorRequest(e,t,A)}e[N]=e[U];r(e[y]===0);e.emit("disconnect",e[I],[e],A);e[q]()});let A=false;t.on("close",()=>{A=true});return{version:"h1",defaultPipelining:1,write(...t){return writeH1(e,...t)},resume(){resumeH1(e)},destroy(e,r){if(A){queueMicrotask(r)}else{t.destroy(e).on("close",r)}},get destroyed(){return t.destroyed},busy(A){if(t[D]||t[d]||t[w]||t[ee]===1){return true}if(A){if(e[y]>0&&!A.idempotent){return true}if(e[y]>0&&(A.upgrade||A.method==="CONNECT")){return true}if(e[y]>0&&s.bodyLength(A.body)!==0&&(s.isStream(A.body)||s.isAsyncIterable(A.body)||s.isFormDataLike(A.body))){return true}}return false}}}function clearIdleSocketValidation(e){if(e[te]){clearImmediate(e[te]);e[te]=null}e[ee]=0}function scheduleIdleSocketValidation(e,t){t[ee]=1;t[te]=setImmediate(()=>{t[te]=null;t[ee]=2;if(e[L]===t&&!t.destroyed){e[q]()}})}function resumeH1(e){const t=e[L];if(t&&!t.destroyed){if(e[R]===0){if(!t[k]&&t.unref){t.unref();t[k]=true}}else if(t[k]&&t.ref){t.ref();t[k]=false}if(e[y]===0&&e[m]>0&&t[Ae]){if(t[ee]===0){scheduleIdleSocketValidation(e,t);t[p].readMore();if(t.destroyed){return}return}if(t[ee]===1){t[p].readMore();if(t.destroyed){return}return}}if(e[y]===0){t[p].readMore();if(t.destroyed){return}}if(e[R]===0){if(t[p].timeoutType!==Ee){t[p].setTimeout(e[v],Ee)}}else if(e[y]>0&&t[p].statusCode<200){if(t[p].timeoutType!==ge){const A=e[b][e[U]];const r=A.headersTimeout!=null?A.headersTimeout:e[Y];t[p].setTimeout(r,ge)}}}}function shouldSendContentLength(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function writeH1(e,t){const{method:i,path:a,host:h,upgrade:g,blocking:u,reset:Q}=t;let{body:C,headers:B,contentLength:I}=t;const f=i==="PUT"||i==="POST"||i==="PATCH"||i==="QUERY"||i==="PROPFIND"||i==="PROPPATCH";if(s.isFormDataLike(C)){if(!re){re=A(4492).extractBody}const[e,r]=re(C);if(t.contentType==null){B.push("content-type",r)}C=e.stream;I=e.length}else if(s.isBlobLike(C)&&t.contentType==null){const A=C.type;if(A){const r=`${A}`;if(!s.isValidHeaderValue(r)){s.errorRequest(e,t,new l("invalid content-type header"));return false}B.push("content-type",r)}}if(C&&typeof C.read==="function"){C.read(0)}const p=s.bodyLength(C);I=p??I;if(I===null){I=t.contentLength}if(I===0&&!f){I=null}if(shouldSendContentLength(i)&&I>0&&t.contentLength!==null&&t.contentLength!==I){if(e[_]){s.errorRequest(e,t,new o);return false}process.emitWarning(new o)}const y=e[L];clearIdleSocketValidation(y);const abort=A=>{if(t.aborted){return}if(t.completed){if(t.upgrade||t.method==="CONNECT"){s.destroy(y,new E("aborted"))}return}s.errorRequest(e,t,A||new c);s.destroy(C);s.destroy(y,new E("aborted"))};try{t.onConnect(abort)}catch(A){s.errorRequest(e,t,A)}if(t.aborted){return false}if(i==="HEAD"){y[d]=true}if(g||i==="CONNECT"){y[d]=true}if(Q!=null){y[d]=Q}if(e[V]&&y[O]++>=e[V]){y[d]=true}if(u){y[w]=true}let m=`${i} ${a} HTTP/1.1\r\n`;if(typeof h==="string"){m+=`host: ${h}\r\n`}else{m+=e[F]}if(g){m+=`connection: upgrade\r\nupgrade: ${g}\r\n`}else if(e[M]&&!y[d]){m+="connection: keep-alive\r\n"}else{m+="connection: close\r\n"}if(Array.isArray(B)){for(let e=0;e{t.removeListener("error",onFinished)});if(!h){const e=new c;queueMicrotask(()=>onFinished(e))}};const onFinished=function(e){if(h){return}h=true;r(i.destroyed||i[D]&&A[y]<=1);i.off("drain",onDrain).off("error",onFinished);t.removeListener("data",onData).removeListener("end",onFinished).removeListener("close",onClose);if(!e){try{g.end()}catch(t){e=t}}g.destroy(e);if(e&&(e.code!=="UND_ERR_INFO"||e.message!=="reset")){s.destroy(t,e)}else{s.destroy(t)}};t.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onClose);if(t.resume){t.resume()}i.on("drain",onDrain).on("error",onFinished);if(t.errorEmitted??t.errored){setImmediate(()=>onFinished(t.errored))}else if(t.endEmitted??t.readableEnded){setImmediate(()=>onFinished(null))}if(t.closeEmitted??t.closed){setImmediate(onClose)}}function writeBuffer(e,t,A,n,i,o,a,c){try{if(!t){if(o===0){i.write(`${a}content-length: 0\r\n\r\n`,"latin1")}else{r(o===null,"no body must not have content length");i.write(`${a}\r\n`,"latin1")}}else if(s.isBuffer(t)){r(o===t.byteLength,"buffer body must have content length");i.cork();i.write(`${a}content-length: ${o}\r\n\r\n`,"latin1");i.write(t);i.uncork();n.onBodySent(t);if(!c&&n.reset!==false){i[d]=true}}n.onRequestSent();A[q]()}catch(t){e(t)}}async function writeBlob(e,t,A,s,n,i,a,c){r(i===t.size,"blob body must have content length");try{if(i!=null&&i!==t.size){throw new o}const e=Buffer.from(await t.arrayBuffer());n.cork();n.write(`${a}content-length: ${i}\r\n\r\n`,"latin1");n.write(e);n.uncork();s.onBodySent(e);s.onRequestSent();if(!c&&s.reset!==false){n[d]=true}A[q]()}catch(t){e(t)}}async function writeIterable(e,t,A,s,n,i,o,a){r(i!==0||A[y]===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)=>{r(c===null);if(n[T]){t(n[T])}else{c=e}});n.on("close",onDrain).on("drain",onDrain);const l=new AsyncWriter({abort:e,socket:n,request:s,contentLength:i,client:A,expectsPayload:a,header:o});try{for await(const e of t){if(n[T]){throw n[T]}if(!l.write(e)){await waitForDrain()}}l.end()}catch(e){l.destroy(e)}finally{n.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({abort:e,socket:t,request:A,contentLength:r,client:s,expectsPayload:n,header:i}){this.socket=t;this.request=A;this.contentLength=r;this.client=s;this.bytesWritten=0;this.expectsPayload=n;this.header=i;this.abort=e;t[D]=true}write(e){const{socket:t,request:A,contentLength:r,client:s,bytesWritten:n,expectsPayload:i,header:a}=this;if(t[T]){throw t[T]}if(t.destroyed){return false}const c=Buffer.byteLength(e);if(!c){return true}if(r!==null&&n+c>r){if(s[_]){throw new o}process.emitWarning(new o)}t.cork();if(n===0){if(!i&&A.reset!==false){t[d]=true}if(r===null){t.write(`${a}transfer-encoding: chunked\r\n`,"latin1")}else{t.write(`${a}content-length: ${r}\r\n\r\n`,"latin1")}}if(r===null){t.write(`\r\n${c.toString(16)}\r\n`,"latin1")}this.bytesWritten+=c;const l=t.write(e);t.uncork();A.onBodySent(e);if(!l){if(t[p].timeout&&t[p].timeoutType===ge){if(t[p].timeout.refresh){t[p].timeout.refresh()}}}return l}end(){const{socket:e,contentLength:t,client:A,bytesWritten:r,expectsPayload:s,header:n,request:i}=this;i.onRequestSent();e[D]=false;if(e[T]){throw e[T]}if(e.destroyed){return}if(r===0){if(s){e.write(`${n}content-length: 0\r\n\r\n`,"latin1")}else{e.write(`${n}\r\n`,"latin1")}}else if(t===null){e.write("\r\n0\r\n\r\n","latin1")}if(t!==null&&r!==t){if(A[_]){throw new o}else{process.emitWarning(new o)}}if(e[p].timeout&&e[p].timeoutType===ge){if(e[p].timeout.refresh){e[p].timeout.refresh()}}A[q]()}destroy(e){const{socket:t,client:A,abort:s}=this;t[D]=false;if(e){r(A[y]<=1,"pipeline should only contain this request");s(e)}}}e.exports=connectH1},8788:(e,t,A)=>{const r=A(4589);const{errorMonitor:s}=A(8474);const{pipeline:n}=A(7075);const i=A(3440);const{RequestContentLengthMismatchError:o,RequestAbortedError:a,SocketError:c,InformationalError:l}=A(8707);const{kUrl:h,kReset:g,kClient:u,kRunning:E,kPending:Q,kQueue:C,kPendingIdx:B,kRunningIdx:I,kError:d,kSocket:f,kStrictContentLength:p,kOnError:w,kMaxConcurrentStreams:y,kHTTP2Session:m,kResume:R,kSize:D,kHTTPContext:b}=A(6443);const k=Symbol("open streams");let S;let F=false;let N;try{N=A(2467)}catch{N={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:U,HTTP2_HEADER_METHOD:T,HTTP2_HEADER_PATH:M,HTTP2_HEADER_SCHEME:L,HTTP2_HEADER_CONTENT_LENGTH:v,HTTP2_HEADER_EXPECT:H,HTTP2_HEADER_STATUS:x}}=N;function parseH2Headers(e){const t=[];for(const[A,r]of Object.entries(e)){if(Array.isArray(r)){for(const e of r){t.push(Buffer.from(A),Buffer.from(e))}}else{t.push(Buffer.from(A),Buffer.from(r))}}return t}function parseH2ResponseHeaders(e){const{[x]:t,...A}=e;return parseH2Headers(A)}async function connectH2(e,t){e[f]=t;if(!F){F=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const A=N.connect(e[h],{createConnection:()=>t,peerMaxConcurrentStreams:e[y]});A[k]=0;A[u]=e;A[f]=t;i.addListener(A,"error",onHttp2SessionError);i.addListener(A,"frameError",onHttp2FrameError);i.addListener(A,"end",onHttp2SessionEnd);i.addListener(A,"goaway",onHTTP2GoAway);i.addListener(A,"close",function(){const{[u]:e}=this;const{[f]:t}=e;const A=this[f][d]||this[d]||new c("closed",i.getSocketInfo(t));e[m]=null;if(e.destroyed){r(e[Q]===0);const t=e[C].splice(e[I]);for(let r=0;r{s=true});return{version:"h2",defaultPipelining:Infinity,write(...t){return writeH2(e,...t)},resume(){resumeH2(e)},destroy(e,A){if(s){queueMicrotask(A)}else{t.destroy(e).on("close",A)}},get destroyed(){return t.destroyed},busy(){return false}}}function resumeH2(e){const t=e[f];if(t?.destroyed===false){if(e[D]===0&&e[y]===0){t.unref();e[m].unref()}else{t.ref();e[m].ref()}}}function onHttp2SessionError(e){r(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");this[f][d]=e;this[u][w](e)}function onHttp2FrameError(e,t,A){if(A===0){const A=new l(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[f][d]=A;this[u][w](A)}}function onHttp2SessionEnd(){const e=new c("other side closed",i.getSocketInfo(this[f]));this.destroy(e);i.destroy(this[f],e)}function onHTTP2GoAway(e){const t=this[d]||new c(`HTTP/2: "GOAWAY" frame received with code ${e}`,i.getSocketInfo(this));const A=this[u];A[f]=null;A[b]=null;if(this[m]!=null){this[m].destroy(t);this[m]=null}i.destroy(this[f],t);if(A[I]{if(t.aborted){return}if(t.completed){if(c==="CONNECT"&&b!=null){i.destroy(b,A||new a)}return}A=A||new a;i.errorRequest(e,t,A);if(b!=null){i.destroy(b,A)}i.destroy(y,A);e[C][e[I]++]=null;e[R]()};try{t.onConnect(abort)}catch(A){i.errorRequest(e,t,A)}if(t.aborted){return false}if(c==="CONNECT"){n.ref();b=n.request(D,{endStream:false,signal:d});let A=false;const onResponse=e=>{A=true;b.off(s,onUpgradeError);t.onUpgradeResponse(Number(e[x]),e,parseH2ResponseHeaders)};const onUpgradeError=e=>{A=true;b.off("response",onResponse);t.onUpgradeError(e)};const onReady=()=>{try{t.onUpgrade(null,null,b)}catch(e){b.off("response",onResponse);abort(e);return}if(t.aborted){return}b.off("error",abort);b.once(s,onUpgradeError);e[C][e[I]++]=null};b.once("response",onResponse);b.once("error",abort);++n[k];onReady();b.once("close",()=>{if(!A&&t.completed){b.off("response",onResponse);b.off(s,onUpgradeError);t.onUpgradeError(new l(`HTTP/2: "stream error" received - code ${b.rstCode}`))}n[k]-=1;if(n[k]===0)n.unref()});return true}D[M]=g;D[L]="https";const G=c==="PUT"||c==="POST"||c==="PATCH";if(y&&typeof y.read==="function"){y.read(0)}let Y=i.bodyLength(y);if(i.isFormDataLike(y)){S??=A(4492).extractBody;const[e,t]=S(y);D["content-type"]=t;y=e.stream;Y=e.length}if(Y==null){Y=t.contentLength}if(Y===0||!G){Y=null}if(shouldSendContentLength(c)&&Y>0&&t.contentLength!=null&&t.contentLength!==Y){if(e[p]){i.errorRequest(e,t,new o);return false}process.emitWarning(new o)}if(Y!=null){r(y,"no body must not have content length");D[v]=`${Y}`}n.ref();const J=c==="GET"||c==="HEAD"||y===null;if(Q){D[H]="100-continue";b=n.request(D,{endStream:J,signal:d});b.once("continue",writeBodyH2)}else{b=n.request(D,{endStream:J,signal:d});writeBodyH2()}++n[k];b.once("response",A=>{const{[x]:r,...s}=A;t.onResponseStarted();if(t.aborted){const A=new a;i.errorRequest(e,t,A);i.destroy(b,A);return}if(t.onHeaders(Number(r),parseH2Headers(s),b.resume.bind(b),"")===false){b.pause()}b.on("data",e=>{if(t.onData(e)===false){b.pause()}})});b.once("end",()=>{if(b.state?.state==null||b.state.state<6){t.onComplete([])}if(n[k]===0){n.unref()}abort(new l("HTTP/2: stream half-closed (remote)"));e[C][e[I]++]=null;e[B]=e[I];e[R]()});b.once("close",()=>{n[k]-=1;if(n[k]===0){n.unref()}});b.once("error",function(e){abort(e)});b.once("frameError",(e,t)=>{abort(new l(`HTTP/2: "frameError" received - type ${e}, code ${t}`))});return true;function writeBodyH2(){if(!y||Y===0){writeBuffer(abort,b,null,e,t,e[f],Y,G)}else if(i.isBuffer(y)){writeBuffer(abort,b,y,e,t,e[f],Y,G)}else if(i.isBlobLike(y)){if(typeof y.stream==="function"){writeIterable(abort,b,y.stream(),e,t,e[f],Y,G)}else{writeBlob(abort,b,y,e,t,e[f],Y,G)}}else if(i.isStream(y)){writeStream(abort,e[f],G,b,y,e,t,Y)}else if(i.isIterable(y)){writeIterable(abort,b,y,e,t,e[f],Y,G)}else{r(false)}}}function writeBuffer(e,t,A,s,n,o,a,c){try{if(A!=null&&i.isBuffer(A)){r(a===A.byteLength,"buffer body must have content length");t.cork();t.write(A);t.uncork();t.end();n.onBodySent(A)}if(!c){o[g]=true}n.onRequestSent();s[R]()}catch(t){e(t)}}function writeStream(e,t,A,s,o,a,c,l){r(l!==0||a[E]===0,"stream body cannot be pipelined");const h=n(o,s,r=>{if(r){i.destroy(h,r);e(r)}else{i.removeAllListeners(h);c.onRequestSent();if(!A){t[g]=true}a[R]()}});i.addListener(h,"data",onPipeData);function onPipeData(e){c.onBodySent(e)}}async function writeBlob(e,t,A,s,n,i,a,c){r(a===A.size,"blob body must have content length");try{if(a!=null&&a!==A.size){throw new o}const e=Buffer.from(await A.arrayBuffer());t.cork();t.write(e);t.uncork();t.end();n.onBodySent(e);n.onRequestSent();if(!c){i[g]=true}s[R]()}catch(t){e(t)}}async function writeIterable(e,t,A,s,n,i,o,a){r(o!==0||s[E]===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)=>{r(c===null);if(i[d]){t(i[d])}else{c=e}});t.on("close",onDrain).on("drain",onDrain);try{for await(const e of A){if(i[d]){throw i[d]}const A=t.write(e);n.onBodySent(e);if(!A){await waitForDrain()}}t.end();n.onRequestSent();if(!a){i[g]=true}s[R]()}catch(t){e(t)}finally{t.off("close",onDrain).off("drain",onDrain)}}e.exports=connectH2},3701:(e,t,A)=>{const r=A(4589);const s=A(7030);const n=A(7067);const i=A(3440);const{channels:o}=A(2414);const a=A(4655);const c=A(1841);const{InvalidArgumentError:l,InformationalError:h,ClientDestroyedError:g}=A(8707);const u=A(9136);const{kUrl:E,kServerName:Q,kClient:C,kBusy:B,kConnect:I,kResuming:d,kRunning:f,kPending:p,kSize:w,kQueue:y,kConnected:m,kConnecting:R,kNeedDrain:D,kKeepAliveDefaultTimeout:b,kHostHeader:k,kPendingIdx:S,kRunningIdx:F,kError:N,kPipelining:U,kKeepAliveTimeoutValue:T,kMaxHeadersSize:M,kKeepAliveMaxTimeout:L,kKeepAliveTimeoutThreshold:v,kHeadersTimeout:H,kBodyTimeout:x,kStrictContentLength:G,kConnector:Y,kMaxRedirections:J,kMaxRequests:_,kCounter:V,kClose:O,kDestroy:P,kDispatch:W,kInterceptors:q,kLocalAddress:Z,kMaxResponseSize:z,kOnError:K,kHTTPContext:X,kMaxConcurrentStreams:j,kResume:$}=A(6443);const ee=A(637);const te=A(8788);let Ae=false;const re=Symbol("kClosedResolve");const noop=()=>{};function getPipelining(e){return e[U]??e[X]?.defaultPipelining??1}class Client extends c{constructor(e,{interceptors:t,maxHeaderSize:A,headersTimeout:r,socketTimeout:o,requestTimeout:a,connectTimeout:c,bodyTimeout:h,idleTimeout:g,keepAlive:C,keepAliveTimeout:B,maxKeepAliveTimeout:I,keepAliveMaxTimeout:f,keepAliveTimeoutThreshold:p,socketPath:w,pipelining:m,tls:R,strictContentLength:N,maxCachedSessions:V,maxRedirections:O,connect:P,maxRequestsPerClient:W,localAddress:ee,maxResponseSize:te,autoSelectFamily:ne,autoSelectFamilyAttemptTimeout:ie,maxConcurrentStreams:oe,allowH2:ae,webSocket:ce}={}){super({webSocket:ce});if(C!==undefined){throw new l("unsupported keepAlive, use pipelining=0 instead")}if(o!==undefined){throw new l("unsupported socketTimeout, use headersTimeout & bodyTimeout instead")}if(a!==undefined){throw new l("unsupported requestTimeout, use headersTimeout & bodyTimeout instead")}if(g!==undefined){throw new l("unsupported idleTimeout, use keepAliveTimeout instead")}if(I!==undefined){throw new l("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(A!=null&&!Number.isFinite(A)){throw new l("invalid maxHeaderSize")}if(w!=null&&typeof w!=="string"){throw new l("invalid socketPath")}if(c!=null&&(!Number.isFinite(c)||c<0)){throw new l("invalid connectTimeout")}if(B!=null&&(!Number.isFinite(B)||B<=0)){throw new l("invalid keepAliveTimeout")}if(f!=null&&(!Number.isFinite(f)||f<=0)){throw new l("invalid keepAliveMaxTimeout")}if(p!=null&&!Number.isFinite(p)){throw new l("invalid keepAliveTimeoutThreshold")}if(r!=null&&(!Number.isInteger(r)||r<0)){throw new l("headersTimeout must be a positive integer or zero")}if(h!=null&&(!Number.isInteger(h)||h<0)){throw new l("bodyTimeout must be a positive integer or zero")}if(P!=null&&typeof P!=="function"&&typeof P!=="object"){throw new l("connect must be a function or an object")}if(O!=null&&(!Number.isInteger(O)||O<0)){throw new l("maxRedirections must be a positive number")}if(W!=null&&(!Number.isInteger(W)||W<0)){throw new l("maxRequestsPerClient must be a positive number")}if(ee!=null&&(typeof ee!=="string"||s.isIP(ee)===0)){throw new l("localAddress must be valid string IP address")}if(te!=null&&(!Number.isInteger(te)||te<-1)){throw new l("maxResponseSize must be a positive number")}if(ie!=null&&(!Number.isInteger(ie)||ie<-1)){throw new l("autoSelectFamilyAttemptTimeout must be a positive number")}if(ae!=null&&typeof ae!=="boolean"){throw new l("allowH2 must be a valid boolean value")}if(oe!=null&&(typeof oe!=="number"||oe<1)){throw new l("maxConcurrentStreams must be a positive integer, greater than 0")}if(typeof P!=="function"){P=u({...R,maxCachedSessions:V,allowH2:ae,socketPath:w,timeout:c,...ne?{autoSelectFamily:ne,autoSelectFamilyAttemptTimeout:ie}:undefined,...P})}if(t?.Client&&Array.isArray(t.Client)){this[q]=t.Client;if(!Ae){Ae=true;process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"})}}else{this[q]=[se({maxRedirections:O})]}this[E]=i.parseOrigin(e);this[Y]=P;this[U]=m!=null?m:1;this[M]=A||n.maxHeaderSize;this[b]=B==null?4e3:B;this[L]=f==null?6e5:f;this[v]=p==null?2e3:p;this[T]=this[b];this[Q]=null;this[Z]=ee!=null?ee:null;this[d]=0;this[D]=0;this[k]=`host: ${this[E].hostname}${this[E].port?`:${this[E].port}`:""}\r\n`;this[x]=h!=null?h:3e5;this[H]=r!=null?r:3e5;this[G]=N==null?true:N;this[J]=O;this[_]=W;this[re]=null;this[z]=te>-1?te:-1;this[j]=oe!=null?oe:100;this[X]=null;this[y]=[];this[F]=0;this[S]=0;this[$]=e=>resume(this,e);this[K]=e=>onError(this,e)}get pipelining(){return this[U]}set pipelining(e){this[U]=e;this[$](true)}get[p](){return this[y].length-this[S]}get[f](){return this[S]-this[F]}get[w](){return this[y].length-this[F]}get[m](){return!!this[X]&&!this[R]&&!this[X].destroyed}get[B](){return Boolean(this[X]?.busy(null)||this[w]>=(getPipelining(this)||1)||this[p]>0)}[I](e){connect(this);this.once("connect",e)}[W](e,t){const A=e.origin||this[E].origin;const r=new a(A,e,t);this[y].push(r);if(this[d]){}else if(i.bodyLength(r.body)==null&&i.isIterable(r.body)){this[d]=1;queueMicrotask(()=>resume(this))}else{this[$](true)}if(this[d]&&this[D]!==2&&this[B]){this[D]=2}return this[D]<2}async[O](){return new Promise(e=>{if(this[w]){this[re]=e}else{e(null)}})}async[P](e){return new Promise(t=>{const A=this[y].splice(this[S]);for(let t=0;t{if(this[re]){this[re]();this[re]=null}t(null)};if(this[X]){this[X].destroy(e,callback);this[X]=null}else{queueMicrotask(callback)}this[$]()})}}const se=A(5092);function onError(e,t){if(e[f]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){r(e[S]===e[F]);const A=e[y].splice(e[F]);for(let r=0;r{e[Y]({host:t,hostname:A,protocol:n,port:a,servername:e[Q],localAddress:e[Z]},(e,t)=>{if(e){s(e)}else{r(t)}})});if(e.destroyed){i.destroy(s.on("error",noop),new g);return}r(s);try{e[X]=s.alpnProtocol==="h2"?await te(e,s):await ee(e,s)}catch(e){s.destroy().on("error",noop);throw e}e[R]=false;s[V]=0;s[_]=e[_];s[C]=e;s[N]=null;if(o.connected.hasSubscribers){o.connected.publish({connectParams:{host:t,hostname:A,protocol:n,port:a,version:e[X]?.version,servername:e[Q],localAddress:e[Z]},connector:e[Y],socket:s})}e.emit("connect",e[E],[e])}catch(s){if(e.destroyed){return}e[R]=false;if(o.connectError.hasSubscribers){o.connectError.publish({connectParams:{host:t,hostname:A,protocol:n,port:a,version:e[X]?.version,servername:e[Q],localAddress:e[Z]},connector:e[Y],error:s})}if(s.code==="ERR_TLS_CERT_ALTNAME_INVALID"){r(e[f]===0);while(e[p]>0&&e[y][e[S]].servername===e[Q]){const t=e[y][e[S]++];i.errorRequest(e,t,s)}}else{onError(e,s)}e.emit("connectionError",e[E],[e],s)}e[$]()}function emitDrain(e){e[D]=0;e.emit("drain",e[E],[e])}function resume(e,t){if(e[d]===2){return}e[d]=2;_resume(e,t);e[d]=0;if(e[F]>256){e[y].splice(0,e[F]);e[S]-=e[F];e[F]=0}}function _resume(e,t){while(true){if(e.destroyed){r(e[p]===0);return}if(e[re]&&!e[w]){e[re]();e[re]=null;return}if(e[X]){e[X].resume()}if(e[B]){e[D]=2}else if(e[D]===2){if(t){e[D]=1;queueMicrotask(()=>emitDrain(e))}else{emitDrain(e)}continue}if(e[p]===0){return}if(e[f]>=(getPipelining(e)||1)){return}const A=e[y][e[S]];if(e[E].protocol==="https:"&&e[Q]!==A.servername){if(e[f]>0){return}e[Q]=A.servername;e[X]?.destroy(new h("servername changed"),()=>{e[X]=null;resume(e)})}if(e[R]){return}if(!e[X]){connect(e);return}if(e[X].destroyed){return}if(e[X].busy(A)){return}if(!A.aborted&&e[X].write(A)){e[S]++}else{e[y].splice(e[S],1)}}}e.exports=Client},1841:(e,t,A)=>{const r=A(883);const{ClientDestroyedError:s,ClientClosedError:n,InvalidArgumentError:i}=A(8707);const{kDestroy:o,kClose:a,kClosed:c,kDestroyed:l,kDispatch:h,kInterceptors:g}=A(6443);const u=Symbol("onDestroyed");const E=Symbol("onClosed");const Q=Symbol("Intercepted Dispatch");const C=Symbol("webSocketOptions");class DispatcherBase extends r{constructor(e){super();this[l]=false;this[u]=null;this[c]=false;this[E]=[];this[C]=e?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[C].maxFragments??131072,maxPayloadSize:this[C].maxPayloadSize??128*1024*1024}}get destroyed(){return this[l]}get closed(){return this[c]}get interceptors(){return this[g]}set interceptors(e){if(e){for(let t=e.length-1;t>=0;t--){const e=this[g][t];if(typeof e!=="function"){throw new i("interceptor must be an function")}}}this[g]=e}close(e){if(e===undefined){return new Promise((e,t)=>{this.close((A,r)=>A?t(A):e(r))})}if(typeof e!=="function"){throw new i("invalid callback")}if(this[l]){queueMicrotask(()=>e(new s,null));return}if(this[c]){if(this[E]){this[E].push(e)}else{queueMicrotask(()=>e(null,null))}return}this[c]=true;this[E].push(e);const onClosed=()=>{const e=this[E];this[E]=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,r)=>e?A(e):t(r))})}if(typeof t!=="function"){throw new i("invalid callback")}if(this[l]){if(this[u]){this[u].push(t)}else{queueMicrotask(()=>t(null,null))}return}if(!e){e=new s}this[l]=true;this[u]=this[u]||[];this[u].push(t);const onDestroyed=()=>{const e=this[u];this[u]=null;for(let t=0;t{queueMicrotask(onDestroyed)})}[Q](e,t){if(!this[g]||this[g].length===0){this[Q]=this[h];return this[h](e,t)}let A=this[h].bind(this);for(let e=this[g].length-1;e>=0;e--){A=this[g][e](A)}this[Q]=A;return A(e,t)}dispatch(e,t){if(!t||typeof t!=="object"){throw new i("handler must be an object")}try{if(!e||typeof e!=="object"){throw new i("opts must be an object.")}if(this[l]||this[u]){throw new s}if(this[c]){throw new n}return this[Q](e,t)}catch(e){if(typeof t.onError!=="function"){throw new i("invalid onError method")}t.onError(e);return false}}}e.exports=DispatcherBase},883:(e,t,A)=>{const r=A(8474);class Dispatcher extends r{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...e){const t=Array.isArray(e[0])?e[0]:e;let A=this.dispatch.bind(this);for(const e of t){if(e==null){continue}if(typeof e!=="function"){throw new TypeError(`invalid interceptor, expected function received ${typeof e}`)}A=e(A);if(A==null||typeof A!=="function"||A.length!==2){throw new TypeError("invalid interceptor")}}return new ComposedDispatcher(this,A)}}class ComposedDispatcher extends Dispatcher{#A=null;#r=null;constructor(e,t){super();this.#A=e;this.#r=t}dispatch(...e){this.#r(...e)}close(...e){return this.#A.close(...e)}destroy(...e){return this.#A.destroy(...e)}}e.exports=Dispatcher},3137:(e,t,A)=>{const r=A(1841);const{kClose:s,kDestroy:n,kClosed:i,kDestroyed:o,kDispatch:a,kNoProxyAgent:c,kHttpProxyAgent:l,kHttpsProxyAgent:h}=A(6443);const g=A(6672);const u=A(7405);const E={"http:":80,"https:":443};let Q=false;class EnvHttpProxyAgent extends r{#s=null;#n=null;#i=null;constructor(e={}){super();this.#i=e;if(!Q){Q=true;process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"})}const{httpProxy:t,httpsProxy:A,noProxy:r,...s}=e;this[c]=new u(s);const n=t??process.env.http_proxy??process.env.HTTP_PROXY;if(n){this[l]=new g({...s,uri:n})}else{this[l]=this[c]}const i=A??process.env.https_proxy??process.env.HTTPS_PROXY;if(i){this[h]=new g({...s,uri:i})}else{this[h]=this[l]}this.#o()}[a](e,t){const A=new URL(e.origin);const r=this.#a(A);return r.dispatch(e,t)}async[s](){await this[c].close();if(!this[l][i]){await this[l].close()}if(!this[h][i]){await this[h].close()}}async[n](e){await this[c].destroy(e);if(!this[l][o]){await this[l].destroy(e)}if(!this[h][o]){await this[h].destroy(e)}}#a(e){let{protocol:t,host:A,port:r}=e;A=A.replace(/:\d*$/,"").toLowerCase();r=Number.parseInt(r,10)||E[t]||0;if(!this.#c(A,r)){return this[c]}if(t==="https:"){return this[h]}return this[l]}#c(e,t){if(this.#l){this.#o()}if(this.#n.length===0){return true}if(this.#s==="*"){return false}for(let A=0;A{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}}},2128:(e,t,A)=>{const r=A(1841);const s=A(4660);const{kConnected:n,kSize:i,kRunning:o,kPending:a,kQueued:c,kBusy:l,kFree:h,kUrl:g,kClose:u,kDestroy:E,kDispatch:Q}=A(6443);const C=A(3246);const B=Symbol("clients");const I=Symbol("needDrain");const d=Symbol("queue");const f=Symbol("closed resolve");const p=Symbol("onDrain");const w=Symbol("onConnect");const y=Symbol("onDisconnect");const m=Symbol("onConnectionError");const R=Symbol("get dispatcher");const D=Symbol("add client");const b=Symbol("remove client");const k=Symbol("stats");class PoolBase extends r{constructor(e){super(e);this[d]=new s;this[B]=[];this[c]=0;const t=this;this[p]=function onDrain(e,A){const r=t[d];let s=false;while(!s){const e=r.shift();if(!e){break}t[c]--;s=!this.dispatch(e.opts,e.handler)}this[I]=s;if(!this[I]&&t[I]){t[I]=false;t.emit("drain",e,[t,...A])}if(t[f]&&r.isEmpty()){Promise.all(t[B].map(e=>e.close())).then(t[f])}};this[w]=(e,A)=>{t.emit("connect",e,[t,...A])};this[y]=(e,A,r)=>{t.emit("disconnect",e,[t,...A],r)};this[m]=(e,A,r)=>{t.emit("connectionError",e,[t,...A],r)};this[k]=new C(this)}get[l](){return this[I]}get[n](){return this[B].filter(e=>e[n]).length}get[h](){return this[B].filter(e=>e[n]&&!e[I]).length}get[a](){let e=this[c];for(const{[a]:t}of this[B]){e+=t}return e}get[o](){let e=0;for(const{[o]:t}of this[B]){e+=t}return e}get[i](){let e=this[c];for(const{[i]:t}of this[B]){e+=t}return e}get stats(){return this[k]}async[u](){if(this[d].isEmpty()){await Promise.all(this[B].map(e=>e.close()))}else{await new Promise(e=>{this[f]=e})}}async[E](e){while(true){const t=this[d].shift();if(!t){break}t.handler.onError(e)}await Promise.all(this[B].map(t=>t.destroy(e)))}[Q](e,t){const A=this[R]();if(!A){this[I]=true;this[d].push({opts:e,handler:t});this[c]++}else if(!A.dispatch(e,t)){A[I]=true;this[I]=!this[R]()}return!this[I]}[D](e){e.on("drain",this[p]).on("connect",this[w]).on("disconnect",this[y]).on("connectionError",this[m]);this[B].push(e);if(this[I]){queueMicrotask(()=>{if(this[I]){this[p](e[g],[this,e])}})}return this}[b](e){e.close(()=>{const t=this[B].indexOf(e);if(t!==-1){this[B].splice(t,1)}});this[I]=this[B].some(e=>!e[I]&&e.closed!==true&&e.destroyed!==true)}}e.exports={PoolBase:PoolBase,kClients:B,kNeedDrain:I,kAddClient:D,kRemoveClient:b,kGetDispatcher:R}},3246:(e,t,A)=>{const{kFree:r,kConnected:s,kPending:n,kQueued:i,kRunning:o,kSize:a}=A(6443);const c=Symbol("pool");class PoolStats{constructor(e){this[c]=e}get connected(){return this[c][s]}get free(){return this[c][r]}get pending(){return this[c][n]}get queued(){return this[c][i]}get running(){return this[c][o]}get size(){return this[c][a]}}e.exports=PoolStats},628:(e,t,A)=>{const{PoolBase:r,kClients:s,kNeedDrain:n,kAddClient:i,kGetDispatcher:o}=A(2128);const a=A(3701);const{InvalidArgumentError:c}=A(8707);const l=A(3440);const{kUrl:h,kInterceptors:g}=A(6443);const u=A(9136);const E=Symbol("options");const Q=Symbol("connections");const C=Symbol("factory");function defaultFactory(e,t){return new a(e,t)}class Pool extends r{constructor(e,{connections:t,factory:A=defaultFactory,connect:r,connectTimeout:n,tls:i,maxCachedSessions:o,socketPath:a,autoSelectFamily:B,autoSelectFamilyAttemptTimeout:I,allowH2:d,...f}={}){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(r!=null&&typeof r!=="function"&&typeof r!=="object"){throw new c("connect must be a function or an object")}if(typeof r!=="function"){r=u({...i,maxCachedSessions:o,allowH2:d,socketPath:a,timeout:n,...B?{autoSelectFamily:B,autoSelectFamilyAttemptTimeout:I}:undefined,...r})}super(f);this[g]=f.interceptors?.Pool&&Array.isArray(f.interceptors.Pool)?f.interceptors.Pool:[];this[Q]=t||null;this[h]=l.parseOrigin(e);this[E]={...l.deepClone(f),connect:r,allowH2:d};this[E].interceptors=f.interceptors?{...f.interceptors}:undefined;this[C]=A;this.on("connectionError",(e,t,A)=>{for(const e of t){const t=this[s].indexOf(e);if(t!==-1){this[s].splice(t,1)}}})}[o](){for(const e of this[s]){if(!e[n]){return e}}if(!this[Q]||this[s].length{const{kProxy:r,kClose:s,kDestroy:n,kDispatch:i,kInterceptors:o}=A(6443);const{URL:a}=A(3136);const c=A(7405);const l=A(628);const h=A(1841);const{InvalidArgumentError:g,RequestAbortedError:u,SecureProxyConnectionError:E}=A(8707);const Q=A(9136);const C=A(3701);const B=Symbol("proxy agent");const I=Symbol("proxy client");const d=Symbol("proxy headers");const f=Symbol("request tls settings");const p=Symbol("proxy tls settings");const w=Symbol("connect endpoint function");const y=Symbol("tunnel proxy");function defaultProtocolPort(e){return e==="https:"?443:80}function defaultFactory(e,t){return new l(e,t)}const noop=()=>{};function defaultAgentFactory(e,t){if(t.connections===1){return new C(e,t)}return new l(e,t)}class Http1ProxyWrapper extends h{#g;constructor(e,{headers:t={},connect:A,factory:r}){super();if(!e){throw new g("Proxy URL is mandatory")}this[d]=t;if(r){this.#g=r(e,{connect:A})}else{this.#g=new C(e,{connect:A})}}[i](e,t){const A=t.onHeaders;t.onHeaders=function(e,r,s){if(e===407){if(typeof t.onError==="function"){t.onError(new g("Proxy Authentication Required (407)"))}return}if(A)A.call(this,e,r,s)};const{origin:r,path:s="/",headers:n={}}=e;e.path=r+s;if(!("host"in n)&&!("Host"in n)){const{host:e}=new a(r);n.host=e}e.headers={...this[d],...n};return this.#g[i](e,t)}async[s](){return this.#g.close()}async[n](e){return this.#g.destroy(e)}}class ProxyAgent extends h{constructor(e){super();if(!e||typeof e==="object"&&!(e instanceof a)&&!e.uri){throw new g("Proxy uri is mandatory")}const{clientFactory:t=defaultFactory}=e;if(typeof t!=="function"){throw new g("Proxy opts.clientFactory must be a function.")}const{proxyTunnel:A=true}=e;const s=this.#u(e);const{href:n,origin:i,port:l,protocol:h,username:C,password:m,hostname:R}=s;this[r]={uri:n,protocol:h};this[o]=e.interceptors?.ProxyAgent&&Array.isArray(e.interceptors.ProxyAgent)?e.interceptors.ProxyAgent:[];this[f]=e.requestTls;this[p]=e.proxyTls;this[d]=e.headers||{};this[y]=A;if(e.auth&&e.token){throw new g("opts.auth cannot be used in combination with opts.token")}else if(e.auth){this[d]["proxy-authorization"]=`Basic ${e.auth}`}else if(e.token){this[d]["proxy-authorization"]=e.token}else if(C&&m){this[d]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(C)}:${decodeURIComponent(m)}`).toString("base64")}`}const D=Q({...e.proxyTls});this[w]=Q({...e.requestTls});const b=e.factory||defaultAgentFactory;const factory=(e,t)=>{const{protocol:A}=new a(e);if(!this[y]&&A==="http:"&&this[r].protocol==="http:"){return new Http1ProxyWrapper(this[r].uri,{headers:this[d],connect:D,factory:b})}return b(e,t)};this[I]=t(s,{connect:D});this[B]=new c({...e,factory:factory,connect:async(e,t)=>{let A=e.host;if(!e.port){A+=`:${defaultProtocolPort(e.protocol)}`}try{const{socket:r,statusCode:s}=await this[I].connect({origin:i,port:l,path:A,signal:e.signal,headers:{...this[d],host:e.host},servername:this[p]?.servername||R});if(s!==200){r.on("error",noop).destroy();t(new u(`Proxy response (${s}) !== 200 when HTTP Tunneling`))}if(e.protocol!=="https:"){t(null,r);return}let n;if(this[f]){n=this[f].servername}else{n=e.servername}this[w]({...e,servername:n,httpSocket:r},t)}catch(e){if(e.code==="ERR_TLS_CERT_ALTNAME_INVALID"){t(new E(e))}else{t(e)}}}})}dispatch(e,t){const A=buildHeaders(e.headers);throwIfProxyAuthIsSent(A);if(A&&!("host"in A)&&!("Host"in A)){const{host:t}=new a(e.origin);A.host=t}return this[B].dispatch({...e,headers:A},t)}#u(e){if(typeof e==="string"){return new a(e)}else if(e instanceof a){return e}else{return new a(e.uri)}}async[s](){await this[B].close();await this[I].close()}async[n](){await this[B].destroy();await this[I].destroy()}}function buildHeaders(e){if(Array.isArray(e)){const t={};for(let A=0;Ae.toLowerCase()==="proxy-authorization");if(t){throw new g("Proxy-Authorization should be sent in ProxyAgent constructor")}}e.exports=ProxyAgent},50:(e,t,A)=>{const r=A(883);const s=A(7816);class RetryAgent extends r{#E=null;#Q=null;constructor(e,t={}){super(t);this.#E=e;this.#Q=t}dispatch(e,t){const A=new s({...e,retryOptions:this.#Q},{dispatch:this.#E.dispatch.bind(this.#E),handler:t});return this.#E.dispatch(e,A)}close(){return this.#E.close()}destroy(){return this.#E.destroy()}}e.exports=RetryAgent},2581:(e,t,A)=>{const r=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:s}=A(8707);const n=A(7405);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new n)}function setGlobalDispatcher(e){if(!e||typeof e.dispatch!=="function"){throw new s("Argument agent must implement Agent")}Object.defineProperty(globalThis,r,{value:e,writable:true,enumerable:false,configurable:false})}function getGlobalDispatcher(){return globalThis[r]}e.exports={setGlobalDispatcher:setGlobalDispatcher,getGlobalDispatcher:getGlobalDispatcher}},8155:e=>{e.exports=class DecoratorHandler{#C;constructor(e){if(typeof e!=="object"||e===null){throw new TypeError("handler must be an object")}this.#C=e}onConnect(...e){return this.#C.onConnect?.(...e)}onError(...e){return this.#C.onError?.(...e)}onUpgrade(...e){return this.#C.onUpgrade?.(...e)}onResponseStarted(...e){return this.#C.onResponseStarted?.(...e)}onHeaders(...e){return this.#C.onHeaders?.(...e)}onData(...e){return this.#C.onData?.(...e)}onComplete(...e){return this.#C.onComplete?.(...e)}onBodySent(...e){return this.#C.onBodySent?.(...e)}}},8754:(e,t,A)=>{const r=A(3440);const{kBodyUsed:s}=A(6443);const n=A(4589);const{InvalidArgumentError:i}=A(8707);const o=A(8474);const a=[300,301,302,303,307,308];const c=Symbol("body");class BodyAsyncIterable{constructor(e){this[c]=e;this[s]=false}async*[Symbol.asyncIterator](){n(!this[s],"disturbed");this[s]=true;yield*this[c]}}class RedirectHandler{constructor(e,t,A,a){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new i("maxRedirections must be a positive number")}r.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=[];this.redirectionLimitReached=false;if(r.isStream(this.opts.body)){if(r.bodyLength(this.opts.body)===0){this.opts.body.on("data",function(){n(false)})}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[s]=false;o.prototype.on.call(this.opts.body,"data",function(){this[s]=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)&&r.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,s){this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)?null:parseLocation(e,t);if(this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){if(this.request){this.request.abort(new Error("max redirects"))}this.redirectionLimitReached=true;this.abort(new Error("max redirects"));return}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,s)}const{origin:n,pathname:i,search:o}=r.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin)));const a=o?`${i}${o}`:i;this.opts.headers=cleanRequestHeaders(this.opts.headers,e===303,this.opts.origin!==n);this.opts.path=a;this.opts.origin=n;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 r=A(4589);const{kRetryHandlerDefaultRetry:s}=A(6443);const{RequestRetryError:n}=A(8707);const{isDisturbed:i,parseHeaders:o,parseRangeHeader:a,wrapRequestBody:c}=A(3440);function calculateRetryAfterHeader(e){const t=Date.now();return new Date(e).getTime()-t}function validatePartialResponseContentLength(e,t,A,r){const s=e["content-length"];if(s==null){return null}if(!Number.isFinite(t.start)||!Number.isFinite(t.end)){return null}const i=Number(s);const o=t.end-t.start+1;if(!Number.isFinite(i)||i!==o){return new n("Content-Length mismatch",A,{headers:e,data:{count:r}})}return null}class RetryHandler{constructor(e,t){const{retryOptions:A,...r}=e;const{retry:n,maxRetries:i,maxTimeout:o,minTimeout:a,timeoutFactor:l,methods:h,errorCodes:g,retryAfter:u,statusCodes:E}=A??{};this.dispatch=t.dispatch;this.handler=t.handler;this.opts={...r,body:c(e.body)};this.abort=null;this.aborted=false;this.retryOpts={retry:n??RetryHandler[s],retryAfter:u??true,maxTimeout:o??30*1e3,minTimeout:a??500,timeoutFactor:l??2,maxRetries:i??5,methods:h??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:E??[500,502,503,504,429],errorCodes:g??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]};this.retryCount=0;this.retryCountCheckpoint=0;this.start=0;this.end=null;this.etag=null;this.resume=null;this.headersSent=false;this.handler.onConnect(e=>{this.aborted=true;if(this.abort){this.abort(e)}else{this.reason=e}})}checkpointResponseEnd(e,t){if(this.end==null&&this.opts.method!=="HEAD"){const t=e["content-length"];this.end=t!=null?Number(t)-1:null;r(this.end==null||Number.isFinite(this.end),"invalid content-length")}this.resume=this.end!=null?t:null}onRequestSent(){if(this.handler.onRequestSent){this.handler.onRequestSent()}}onUpgrade(e,t,A){if(this.handler.onUpgrade){this.handler.onUpgrade(e,t,A)}}onConnect(e){if(this.aborted){e(this.reason)}else{this.abort=e}}onBodySent(e){if(this.handler.onBodySent)return this.handler.onBodySent(e)}static[s](e,{state:t,opts:A},r){const{statusCode:s,code:n,headers:i}=e;const{method:o,retryOptions:a}=A;const{maxRetries:c,minTimeout:l,maxTimeout:h,timeoutFactor:g,statusCodes:u,errorCodes:E,methods:Q}=a;const{counter:C}=t;if(n&&n!=="UND_ERR_REQ_RETRY"&&!E.includes(n)){r(e);return}if(Array.isArray(Q)&&!Q.includes(o)){r(e);return}if(s!=null&&Array.isArray(u)&&!u.includes(s)){r(e);return}if(C>c){r(e);return}let B=i?.["retry-after"];if(B){B=Number(B);B=Number.isNaN(B)?calculateRetryAfterHeader(B):B*1e3}const I=B>0?Math.min(B,h):Math.min(l*g**(C-1),h);setTimeout(()=>r(null),I)}onHeaders(e,t,A,s){const i=o(t);this.retryCount+=1;if(e>=300){if(!this.headersSent&&this.retryOpts.statusCodes.includes(e)===false){this.headersSent=true;this.checkpointResponseEnd(i,A);return this.handler.onHeaders(e,t,A,s)}else{this.abort(new n("Request failed",e,{headers:i,data:{count:this.retryCount}}));return false}}if(this.resume!=null){this.resume=null;if(e!==206&&(this.start>0||e!==200)){this.abort(new n("server does not support the range header and the payload was partially consumed",e,{headers:i,data:{count:this.retryCount}}));return false}const t=a(i["content-range"]);if(!t){this.abort(new n("Content-Range mismatch",e,{headers:i,data:{count:this.retryCount}}));return false}if(this.etag!=null&&this.etag!==i.etag){this.abort(new n("ETag mismatch",e,{headers:i,data:{count:this.retryCount}}));return false}const r=validatePartialResponseContentLength(i,t,e,this.retryCount);if(r!=null){this.abort(r);return false}const{start:s,size:o,end:c=o-1}=t;if(this.start!==s||this.end!=null&&this.end!==c){this.abort(new n("Content-Range mismatch",e,{headers:i,data:{count:this.retryCount}}));return false}this.resume=A;return true}if(this.end==null){if(e===206){const n=a(i["content-range"]);if(n==null){this.headersSent=true;return this.handler.onHeaders(e,t,A,s)}const o=validatePartialResponseContentLength(i,n,e,this.retryCount);if(o!=null){this.abort(o);return false}const{start:c,size:l,end:h=l-1}=n;r(c!=null&&Number.isFinite(c),"content-range mismatch");r(h!=null&&Number.isFinite(h),"invalid content-length");this.start=c;this.end=h}if(this.end==null){const e=i["content-length"];this.end=e!=null?Number(e)-1:null}r(Number.isFinite(this.start));r(this.end==null||Number.isFinite(this.end),"invalid content-length");this.resume=A;this.headersSent=true;this.etag=i.etag!=null?i.etag:null;if(this.etag!=null&&this.etag.startsWith("W/")){this.etag=null}return this.handler.onHeaders(e,t,A,s)}const c=new n("Request failed",e,{headers:i,data:{count:this.retryCount}});this.abort(c);return false}onData(e){this.start+=e.length;return this.handler.onData(e)}onComplete(e){this.retryCount=0;return this.handler.onComplete(e)}onError(e){if(this.aborted||i(this.opts.body)||this.headersSent&&this.resume==null){return this.handler.onError(e)}if(this.retryCount-this.retryCountCheckpoint>0){this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint)}else{this.retryCount+=1}this.retryOpts.retry(e,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},onRetry.bind(this));function onRetry(e){if(e!=null||this.aborted||i(this.opts.body)){return this.handler.onError(e)}if(this.start!==0){const e={range:`bytes=${this.start}-${this.end??""}`};if(this.etag!=null){e["if-match"]=this.etag}this.opts={...this.opts,headers:{...this.opts.headers,...e}}}try{this.retryCountCheckpoint=this.retryCount;this.dispatch(this.opts,this)}catch(e){this.handler.onError(e)}}}}e.exports=RetryHandler},379:(e,t,A)=>{const{isIP:r}=A(7030);const{lookup:s}=A(610);const n=A(8155);const{InvalidArgumentError:i,InformationalError:o}=A(8707);const a=Math.pow(2,31)-1;class DNSInstance{#B=0;#I=0;#d=new Map;dualStack=true;affinity=null;lookup=null;pick=null;constructor(e){this.#B=e.maxTTL;this.#I=e.maxItems;this.dualStack=e.dualStack;this.affinity=e.affinity;this.lookup=e.lookup??this.#f;this.pick=e.pick??this.#p}get full(){return this.#d.size===this.#I}runLookup(e,t,A){const r=this.#d.get(e.hostname);if(r==null&&this.full){A(null,e.origin);return}const s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#B,maxItems:this.#I};if(r==null){this.lookup(e,s,(t,r)=>{if(t||r==null||r.length===0){A(t??new o("No DNS entries found"));return}this.setRecords(e,r);const n=this.#d.get(e.hostname);const i=this.pick(e,n,s.affinity);let a;if(typeof i.port==="number"){a=`:${i.port}`}else if(e.port!==""){a=`:${e.port}`}else{a=""}A(null,`${e.protocol}//${i.family===6?`[${i.address}]`:i.address}${a}`)})}else{const n=this.pick(e,r,s.affinity);if(n==null){this.#d.delete(e.hostname);this.runLookup(e,t,A);return}let i;if(typeof n.port==="number"){i=`:${n.port}`}else if(e.port!==""){i=`:${e.port}`}else{i=""}A(null,`${e.protocol}//${n.family===6?`[${n.address}]`:n.address}${i}`)}}#f(e,t,A){s(e.hostname,{all:true,family:this.dualStack===false?this.affinity:0,order:"ipv4first"},(e,t)=>{if(e){return A(e)}const r=new Map;for(const e of t){r.set(`${e.address}:${e.family}`,e)}A(null,r.values())})}#p(e,t,A){let r=null;const{records:s,offset:n}=t;let i;if(this.dualStack){if(A==null){if(n==null||n===a){t.offset=0;A=4}else{t.offset++;A=(t.offset&1)===1?6:4}}if(s[A]!=null&&s[A].ips.length>0){i=s[A]}else{i=s[A===4?6:4]}}else{i=s[A]}if(i==null||i.ips.length===0){return r}if(i.offset==null||i.offset===a){i.offset=0}else{i.offset++}const o=i.offset%i.ips.length;r=i.ips[o]??null;if(r==null){return r}if(Date.now()-r.timestamp>r.ttl){i.ips.splice(o,1);return this.pick(e,t,A)}return r}setRecords(e,t){const A=Date.now();const r={records:{4:null,6:null}};for(const e of t){e.timestamp=A;if(typeof e.ttl==="number"){e.ttl=Math.min(e.ttl,this.#B)}else{e.ttl=this.#B}const t=r.records[e.family]??{ips:[]};t.ips.push(e);r.records[e.family]=t}this.#d.set(e.hostname,r)}getHandler(e,t){return new DNSDispatchHandler(this,e,t)}}class DNSDispatchHandler extends n{#w=null;#i=null;#r=null;#C=null;#y=null;constructor(e,{origin:t,handler:A,dispatch:r},s){super(A);this.#y=t;this.#C=A;this.#i={...s};this.#w=e;this.#r=r}onError(e){switch(e.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#w.dualStack){this.#w.runLookup(this.#y,this.#i,(e,t)=>{if(e){return this.#C.onError(e)}const A={...this.#i,origin:t};this.#r(A,this)});return}this.#C.onError(e);return}case"ENOTFOUND":this.#w.deleteRecord(this.#y);default:this.#C.onError(e);break}}}e.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!=="number"||e?.maxTTL<0)){throw new i("Invalid maxTTL. Must be a positive number")}if(e?.maxItems!=null&&(typeof e?.maxItems!=="number"||e?.maxItems<1)){throw new i("Invalid maxItems. Must be a positive number and greater than zero")}if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6){throw new i("Invalid affinity. Must be either 4 or 6")}if(e?.dualStack!=null&&typeof e?.dualStack!=="boolean"){throw new i("Invalid dualStack. Must be a boolean")}if(e?.lookup!=null&&typeof e?.lookup!=="function"){throw new i("Invalid lookup. Must be a function")}if(e?.pick!=null&&typeof e?.pick!=="function"){throw new i("Invalid pick. Must be a function")}const t=e?.dualStack??true;let A;if(t){A=e?.affinity??null}else{A=e?.affinity??4}const s={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:t,affinity:A,maxItems:e?.maxItems??Infinity};const n=new DNSInstance(s);return e=>function dnsInterceptor(t,A){const s=t.origin.constructor===URL?t.origin:new URL(t.origin);if(r(s.hostname)!==0){return e(t,A)}n.runLookup(s,t,(r,i)=>{if(r){return A.onError(r)}let o=null;o={...t,servername:s.hostname,origin:i,headers:{host:s.hostname,...t.headers}};e(o,n.getHandler({origin:s,dispatch:e,handler:A},t))});return true}}},8060:(e,t,A)=>{const r=A(3440);const{InvalidArgumentError:s,RequestAbortedError:n}=A(8707);const i=A(8155);class DumpHandler extends i{#m=1024*1024;#R=null;#D=false;#b=false;#k=0;#S=null;#C=null;constructor({maxSize:e},t){super(t);if(e!=null&&(!Number.isFinite(e)||e<1)){throw new s("maxSize must be a number greater than 0")}this.#m=e??this.#m;this.#C=t}onConnect(e){this.#R=e;this.#C.onConnect(this.#F.bind(this))}#F(e){this.#b=true;this.#S=e}onHeaders(e,t,A,s){const i=r.parseHeaders(t);const o=i["content-length"];if(o!=null&&o>this.#m){throw new n(`Response size (${o}) larger than maxSize (${this.#m})`)}if(this.#b){return true}return this.#C.onHeaders(e,t,A,s)}onError(e){if(this.#D){return}e=this.#S??e;this.#C.onError(e)}onData(e){this.#k=this.#k+e.length;if(this.#k>=this.#m){this.#D=true;if(this.#b){this.#C.onError(this.#S)}else{this.#C.onComplete([])}}return true}onComplete(e){if(this.#D){return}if(this.#b){this.#C.onError(this.reason);return}this.#C.onComplete(e)}}function createDumpInterceptor({maxSize:e}={maxSize:1024*1024}){return t=>function Intercept(A,r){const{dumpMaxSize:s=e}=A;const n=new DumpHandler({maxSize:s},r);return t(A,n)}}e.exports=createDumpInterceptor},5092:(e,t,A)=>{const r=A(8754);function createRedirectInterceptor({maxRedirections:e}){return t=>function Intercept(A,s){const{maxRedirections:n=e}=A;if(!n){return t(A,s)}const i=new r(t,n,A,s);A={...A,maxRedirections:0};return t(A,i)}}e.exports=createRedirectInterceptor},1514:(e,t,A)=>{const r=A(8754);e.exports=e=>{const t=e?.maxRedirections;return e=>function redirectInterceptor(A,s){const{maxRedirections:n=t,...i}=A;if(!n){return e(A,s)}const o=new r(e,n,A,s);return e(i,o)}}},2026:(e,t,A)=>{const r=A(7816);e.exports=e=>t=>function retryInterceptor(A,s){return t(A,new r({...A,retryOptions:{...e,...A.retryOptions}},{handler:s,dispatch:t}))}},2824:(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 r=A(172);var s;(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"})(s=t.ERROR||(t.ERROR={}));var n;(function(e){e[e["BOTH"]=0]="BOTH";e[e["REQUEST"]=1]="REQUEST";e[e["RESPONSE"]=2]="RESPONSE"})(n=t.TYPE||(t.TYPE={}));var i;(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"})(i=t.FLAGS||(t.FLAGS={}));var o;(function(e){e[e["HEADERS"]=1]="HEADERS";e[e["CHUNKED_LENGTH"]=2]="CHUNKED_LENGTH";e[e["KEEP_ALIVE"]=4]="KEEP_ALIVE"})(o=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=r.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}},3870:(e,t,A)=>{const{Buffer:r}=A(4573);e.exports=r.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")},3434:(e,t,A)=>{const{Buffer:r}=A(4573);e.exports=r.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")},172:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.enumToMap=void 0;function enumToMap(e){const t={};Object.keys(e).forEach(A=>{const r=e[A];if(typeof r==="number"){t[A]=r}});return t}t.enumToMap=enumToMap},7501:(e,t,A)=>{const{kClients:r}=A(6443);const s=A(7405);const{kAgent:n,kMockAgentSet:i,kMockAgentGet:o,kDispatches:a,kIsMockActive:c,kNetConnect:l,kGetNetConnect:h,kOptions:g,kFactory:u}=A(1117);const E=A(7365);const Q=A(4004);const{matchValue:C,buildMockOptions:B}=A(3397);const{InvalidArgumentError:I,UndiciError:d}=A(8707);const f=A(883);const p=A(1529);const w=A(6142);class MockAgent extends f{constructor(e){super(e);this[l]=true;this[c]=true;if(e?.agent&&typeof e.agent.dispatch!=="function"){throw new I("Argument opts.agent must implement Agent")}const t=e?.agent?e.agent:new s(e);this[n]=t;this[r]=t[r];this[g]=B(e)}get(e){let t=this[o](e);if(!t){t=this[u](e);this[i](e,t)}return t}dispatch(e,t){this.get(e.origin);return this[n].dispatch(e,t)}async close(){await this[n].close();this[r].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 I("Unsupported matcher. Must be one of String|Function|RegExp.")}}disableNetConnect(){this[l]=false}get isMockActive(){return this[c]}[i](e,t){this[r].set(e,t)}[u](e){const t=Object.assign({agent:this},this[g]);return this[g]&&this[g].connections===1?new E(e,t):new Q(e,t)}[o](e){const t=this[r].get(e);if(t){return t}if(typeof e!=="string"){const t=this[u]("http://localhost:9999");this[i](e,t);return t}for(const[t,A]of Array.from(this[r])){if(A&&typeof t!=="string"&&C(t,e)){const t=this[u](e);this[i](e,t);t[a]=A[a];return t}}}[h](){return this[l]}pendingInterceptors(){const e=this[r];return Array.from(e.entries()).flatMap(([e,t])=>t[a].map(t=>({...t,origin:e}))).filter(({pending:e})=>e)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new w}={}){const t=this.pendingInterceptors();if(t.length===0){return}const A=new p("interceptor","interceptors").pluralize(t.length);throw new d(`\n${A.count} ${A.noun} ${A.is} pending:\n\n${e.format(t)}\n`.trim())}}e.exports=MockAgent},7365:(e,t,A)=>{const{promisify:r}=A(7975);const s=A(3701);const{buildMockDispatch:n}=A(3397);const{kDispatches:i,kMockAgent:o,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:h,kConnected:g}=A(1117);const{MockInterceptor:u}=A(1511);const E=A(6443);const{InvalidArgumentError:Q}=A(8707);class MockClient extends s{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new Q("Argument opts.agent must implement Agent")}this[o]=t.agent;this[l]=e;this[i]=[];this[g]=1;this[h]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=n.call(this);this.close=this[a]}get[E.kConnected](){return this[g]}intercept(e){return new u(e,this[i])}async[a](){await r(this[c])();this[g]=0;this[o][E.kClients].delete(this[l])}}e.exports=MockClient},2429:(e,t,A)=>{const{UndiciError:r}=A(8707);const s=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");class MockNotMatchedError extends r{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"}static[Symbol.hasInstance](e){return e&&e[s]===true}[s]=true}e.exports={MockNotMatchedError:MockNotMatchedError}},1511:(e,t,A)=>{const{getResponseData:r,buildKey:s,addMockDispatch:n}=A(3397);const{kDispatches:i,kDispatchKey:o,kDefaultHeaders:a,kDefaultTrailers:c,kContentLength:l,kMockDispatch:h}=A(1117);const{InvalidArgumentError:g}=A(8707);const{buildURL:u}=A(3440);class MockScope{constructor(e){this[h]=e}delay(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new g("waitInMs must be a valid integer > 0")}this[h].delay=e;return this}persist(){this[h].persist=true;return this}times(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new g("repeatTimes must be a valid integer > 0")}this[h].times=e;return this}}class MockInterceptor{constructor(e,t){if(typeof e!=="object"){throw new g("opts must be an object")}if(typeof e.path==="undefined"){throw new g("opts.path must be defined")}if(typeof e.method==="undefined"){e.method="GET"}if(typeof e.path==="string"){if(e.query){e.path=u(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[o]=s(e);this[i]=t;this[a]={};this[c]={};this[l]=false}createMockScopeDispatchData({statusCode:e,data:t,responseOptions:A}){const s=r(t);const n=this[l]?{"content-length":s.length}:{};const i={...this[a],...n,...A.headers};const o={...this[c],...A.trailers};return{statusCode:e,data:t,headers:i,trailers:o}}validateReplyParameters(e){if(typeof e.statusCode==="undefined"){throw new g("statusCode must be defined")}if(typeof e.responseOptions!=="object"||e.responseOptions===null){throw new g("responseOptions must be an object")}}reply(e){if(typeof e==="function"){const wrappedDefaultsCallback=t=>{const A=e(t);if(typeof A!=="object"||A===null){throw new g("reply options callback must return an object")}const r={data:"",responseOptions:{},...A};this.validateReplyParameters(r);return{...this.createMockScopeDispatchData(r)}};const t=n(this[i],this[o],wrappedDefaultsCallback);return new MockScope(t)}const t={statusCode:e,data:arguments[1]===undefined?"":arguments[1],responseOptions:arguments[2]===undefined?{}:arguments[2]};this.validateReplyParameters(t);const A=this.createMockScopeDispatchData(t);const r=n(this[i],this[o],A);return new MockScope(r)}replyWithError(e){if(typeof e==="undefined"){throw new g("error must be defined")}const t=n(this[i],this[o],{error:e});return new MockScope(t)}defaultReplyHeaders(e){if(typeof e==="undefined"){throw new g("headers must be defined")}this[a]=e;return this}defaultReplyTrailers(e){if(typeof e==="undefined"){throw new g("trailers must be defined")}this[c]=e;return this}replyContentLength(){this[l]=true;return this}}e.exports.MockInterceptor=MockInterceptor;e.exports.MockScope=MockScope},4004:(e,t,A)=>{const{promisify:r}=A(7975);const s=A(628);const{buildMockDispatch:n}=A(3397);const{kDispatches:i,kMockAgent:o,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:h,kConnected:g}=A(1117);const{MockInterceptor:u}=A(1511);const E=A(6443);const{InvalidArgumentError:Q}=A(8707);class MockPool extends s{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new Q("Argument opts.agent must implement Agent")}this[o]=t.agent;this[l]=e;this[i]=[];this[g]=1;this[h]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=n.call(this);this.close=this[a]}get[E.kConnected](){return this[g]}intercept(e){return new u(e,this[i])}async[a](){await r(this[c])();this[g]=0;this[o][E.kClients].delete(this[l])}}e.exports=MockPool},1117: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")}},3397:(e,t,A)=>{const{MockNotMatchedError:r}=A(2429);const{kDispatches:s,kMockAgent:n,kOriginalDispatch:i,kOrigin:o,kGetNetConnect:a}=A(1117);const{buildURL:c}=A(3440);const{STATUS_CODES:l}=A(7067);const{types:{isPromise:h}}=A(7975);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),s));if(n.length===0){throw new r(`Mock dispatch not matched for path '${s}'`)}n=n.filter(({method:e})=>matchValue(e,t.method));if(n.length===0){throw new r(`Mock dispatch not matched for method '${t.method}' on path '${s}'`)}n=n.filter(({body:e})=>typeof e!=="undefined"?matchValue(e,t.body):true);if(n.length===0){throw new r(`Mock dispatch not matched for body '${t.body}' on path '${s}'`)}n=n.filter(e=>matchHeaders(e,t.headers));if(n.length===0){const e=typeof t.headers==="object"?JSON.stringify(t.headers):t.headers;throw new r(`Mock dispatch not matched for headers '${e}' on path '${s}'`)}return n[0]}function addMockDispatch(e,t,A){const r={timesInvoked:0,times:1,persist:false,consumed:false};const s=typeof A==="function"?{callback:A}:{...A};const n={...r,...t,pending:true,data:{error:null,...s}};e.push(n);return n}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:r,headers:s,query:n}=e;return{path:t,method:A,body:r,headers:s,query:n}}function generateKeyValues(e){const t=Object.keys(e);const A=[];for(let r=0;r=E;r.pending=u0){setTimeout(()=>{handleReply(this[s])},l)}else{handleReply(this[s])}function handleReply(r,s=i){const c=Array.isArray(e.headers)?buildHeadersFromArray(e.headers):e.headers;const l=typeof s==="function"?s({...e,headers:c}):s;if(h(l)){l.then(e=>handleReply(r,e));return}const g=getResponseData(l);const u=generateKeyValues(o);const E=generateKeyValues(a);t.onConnect?.(e=>t.onError(e),null);t.onHeaders?.(n,u,resume,getStatusText(n));t.onData?.(Buffer.from(g));t.onComplete?.(E);deleteMockDispatch(r,A)}function resume(){}return true}function buildMockDispatch(){const e=this[n];const t=this[o];const A=this[i];return function dispatch(s,n){if(e.isMockActive){try{mockDispatch.call(this,s,n)}catch(i){if(i instanceof r){const o=e[a]();if(o===false){throw new r(`${i.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)`)}if(checkNetConnect(o,t)){A.call(this,s,n)}else{throw new r(`${i.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)`)}}else{throw i}}}else{A.call(this,s,n)}}}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,buildHeadersFromArray:buildHeadersFromArray}},6142:(e,t,A)=>{const{Transform:r}=A(7075);const{Console:s}=A(7540);const n=process.versions.icu?"✅":"Y ";const i=process.versions.icu?"❌":"N ";e.exports=class PendingInterceptorsFormatter{constructor({disableColors:e}={}){this.transform=new r({transform(e,t,A){A(null,e)}});this.logger=new s({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){const t=e.map(({method:e,path:t,data:{statusCode:A},persist:r,times:s,timesInvoked:o,origin:a})=>({Method:e,Origin:a,Path:t,"Status code":A,Persistent:r?n:i,Invocations:o,Remaining:r?Infinity:s-o}));this.logger.table(t);return this.transform.read().toString()}}},1529: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 r=e===1;const s=r?t:A;const n=r?this.singular:this.plural;return{...s,count:e,noun:n}}}},6603:e=>{let t=0;const A=1e3;const r=(A>>1)-1;let s;const n=Symbol("kFastTimer");const i=[];const o=-2;const a=-1;const c=0;const l=1;function onTick(){t+=r;let e=0;let A=i.length;while(e=s._idleStart+s._idleTimeout){s._state=a;s._idleStart=-1;s._onTimeout(s._timerArg)}if(s._state===a){s._state=o;if(--A!==0){i[e]=i[A]}}else{++e}}i.length=A;if(i.length!==0){refreshTimeout()}}function refreshTimeout(){if(s){s.refresh()}else{clearTimeout(s);s=setTimeout(onTick,r);if(s.unref){s.unref()}}}class FastTimer{[n]=true;_state=o;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(e,t,A){this._onTimeout=e;this._idleTimeout=t;this._timerArg=A;this.refresh()}refresh(){if(this._state===o){i.push(this)}if(!s||i.length===1){refreshTimeout()}this._state=c}clear(){this._state=a;this._idleStart=-1}}e.exports={setTimeout(e,t,r){return t<=A?setTimeout(e,t,r):new FastTimer(e,t,r)},clearTimeout(e){if(e[n]){e.clear()}else{clearTimeout(e)}},setFastTimeout(e,t,A){return new FastTimer(e,t,A)},clearFastTimeout(e){e.clear()},now(){return t},tick(e=0){t+=e-A+1;onTick();onTick()},reset(){t=0;i.length=0;clearTimeout(s);s=null},kFastTimer:n}},9634:(e,t,A)=>{const{kConstruct:r}=A(109);const{urlEquals:s,getFieldValues:n}=A(6798);const{kEnumerableProperty:i,isDisturbed:o}=A(3440);const{webidl:a}=A(5893);const{Response:c,cloneResponse:l,fromInnerResponse:h}=A(9051);const{Request:g,fromInnerRequest:u}=A(9967);const{kState:E}=A(3627);const{fetching:Q}=A(4398);const{urlIsHttpHttpsScheme:C,createDeferredPromise:B,readAllBytes:I}=A(3168);const d=A(4589);class Cache{#N;constructor(){if(arguments[0]!==r){a.illegalConstructor()}a.util.markAsUncloneable(this);this.#N=arguments[1]}async match(e,t={}){a.brandCheck(this,Cache);const A="Cache.match";a.argumentLengthCheck(arguments,1,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");const r=this.#U(e,t,1);if(r.length===0){return}return r[0]}async matchAll(e=undefined,t={}){a.brandCheck(this,Cache);const A="Cache.matchAll";if(e!==undefined)e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");return this.#U(e,t)}async add(e){a.brandCheck(this,Cache);const t="Cache.add";a.argumentLengthCheck(arguments,1,t);e=a.converters.RequestInfo(e,t,"request");const A=[e];const r=this.addAll(A);return await r}async addAll(e){a.brandCheck(this,Cache);const t="Cache.addAll";a.argumentLengthCheck(arguments,1,t);const A=[];const r=[];for(let A of e){if(A===undefined){throw a.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]})}A=a.converters.RequestInfo(A);if(typeof A==="string"){continue}const e=A[E];if(!C(e.url)||e.method!=="GET"){throw a.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}}const s=[];for(const i of e){const e=new g(i)[E];if(!C(e.url)){throw a.errors.exception({header:t,message:"Expected http/s scheme."})}e.initiator="fetch";e.destination="subresource";r.push(e);const o=B();s.push(Q({request:e,processResponse(e){if(e.type==="error"||e.status===206||e.status<200||e.status>299){o.reject(a.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(e.headersList.contains("vary")){const t=n(e.headersList.get("vary"));for(const e of t){if(e==="*"){o.reject(a.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const e of s){e.abort()}return}}}},processResponseEndOfBody(e){if(e.aborted){o.reject(new DOMException("aborted","AbortError"));return}o.resolve(e)}}));A.push(o.promise)}const i=Promise.all(A);const o=await i;const c=[];let l=0;for(const e of o){const t={type:"put",request:r[l],response:e};c.push(t);l++}const h=B();let u=null;try{this.#T(c)}catch(e){u=e}queueMicrotask(()=>{if(u===null){h.resolve(undefined)}else{h.reject(u)}});return h.promise}async put(e,t){a.brandCheck(this,Cache);const A="Cache.put";a.argumentLengthCheck(arguments,2,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.Response(t,A,"response");let r=null;if(e instanceof g){r=e[E]}else{r=new g(e)[E]}if(!C(r.url)||r.method!=="GET"){throw a.errors.exception({header:A,message:"Expected an http/s scheme when method is not GET"})}const s=t[E];if(s.status===206){throw a.errors.exception({header:A,message:"Got 206 status"})}if(s.headersList.contains("vary")){const e=n(s.headersList.get("vary"));for(const t of e){if(t==="*"){throw a.errors.exception({header:A,message:"Got * vary field value"})}}}if(s.body&&(o(s.body.stream)||s.body.stream.locked)){throw a.errors.exception({header:A,message:"Response body is locked or disturbed"})}const i=l(s);const c=B();if(s.body!=null){const e=s.body.stream;const t=e.getReader();I(t).then(c.resolve,c.reject)}else{c.resolve(undefined)}const h=[];const u={type:"put",request:r,response:i};h.push(u);const Q=await c.promise;if(i.body!=null){i.body.source=Q}const d=B();let f=null;try{this.#T(h)}catch(e){f=e}queueMicrotask(()=>{if(f===null){d.resolve()}else{d.reject(f)}});return d.promise}async delete(e,t={}){a.brandCheck(this,Cache);const A="Cache.delete";a.argumentLengthCheck(arguments,1,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");let r=null;if(e instanceof g){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return false}}else{d(typeof e==="string");r=new g(e)[E]}const s=[];const n={type:"delete",request:r,options:t};s.push(n);const i=B();let o=null;let c;try{c=this.#T(s)}catch(e){o=e}queueMicrotask(()=>{if(o===null){i.resolve(!!c?.length)}else{i.reject(o)}});return i.promise}async keys(e=undefined,t={}){a.brandCheck(this,Cache);const A="Cache.keys";if(e!==undefined)e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");let r=null;if(e!==undefined){if(e instanceof g){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){r=new g(e)[E]}}const s=B();const n=[];if(e===undefined){for(const e of this.#N){n.push(e[0])}}else{const e=this.#M(r,t);for(const t of e){n.push(t[0])}}queueMicrotask(()=>{const e=[];for(const t of n){const A=u(t,(new AbortController).signal,"immutable");e.push(A)}s.resolve(Object.freeze(e))});return s.promise}#T(e){const t=this.#N;const A=[...t];const r=[];const s=[];try{for(const A of e){if(A.type!=="delete"&&A.type!=="put"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(A.type==="delete"&&A.response!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#M(A.request,A.options,r).length){throw new DOMException("???","InvalidStateError")}let e;if(A.type==="delete"){e=this.#M(A.request,A.options);if(e.length===0){return[]}for(const A of e){const e=t.indexOf(A);d(e!==-1);t.splice(e,1)}}else if(A.type==="put"){if(A.response==null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const s=A.request;if(!C(s.url)){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(s.method!=="GET"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(A.options!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}e=this.#M(A.request);for(const A of e){const e=t.indexOf(A);d(e!==-1);t.splice(e,1)}t.push([A.request,A.response]);r.push([A.request,A.response])}s.push([A.request,A.response])}return s}catch(e){this.#N.length=0;this.#N=A;throw e}}#M(e,t,A){const r=[];const s=A??this.#N;for(const A of s){const[s,n]=A;if(this.#L(e,s,n,t)){r.push(A)}}return r}#L(e,t,A=null,r){const i=new URL(e.url);const o=new URL(t.url);if(r?.ignoreSearch){o.search="";i.search=""}if(!s(i,o,true)){return false}if(A==null||r?.ignoreVary||!A.headersList.contains("vary")){return true}const a=n(A.headersList.get("vary"));for(const A of a){if(A==="*"){return false}const r=t.headersList.get(A);const s=e.headersList.get(A);if(r!==s){return false}}return true}#U(e,t,A=Infinity){let r=null;if(e!==undefined){if(e instanceof g){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){r=new g(e)[E]}}const s=[];if(e===undefined){for(const e of this.#N){s.push(e[1])}}else{const e=this.#M(r,t);for(const t of e){s.push(t[1])}}const n=[];for(const e of s){const t=h(e,"immutable");n.push(t.clone());if(n.length>=A){break}}return Object.freeze(n)}}Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:i,matchAll:i,add:i,addAll:i,put:i,delete:i,keys:i});const f=[{key:"ignoreSearch",converter:a.converters.boolean,defaultValue:()=>false},{key:"ignoreMethod",converter:a.converters.boolean,defaultValue:()=>false},{key:"ignoreVary",converter:a.converters.boolean,defaultValue:()=>false}];a.converters.CacheQueryOptions=a.dictionaryConverter(f);a.converters.MultiCacheQueryOptions=a.dictionaryConverter([...f,{key:"cacheName",converter:a.converters.DOMString}]);a.converters.Response=a.interfaceConverter(c);a.converters["sequence"]=a.sequenceConverter(a.converters.RequestInfo);e.exports={Cache:Cache}},3245:(e,t,A)=>{const{kConstruct:r}=A(109);const{Cache:s}=A(9634);const{webidl:n}=A(5893);const{kEnumerableProperty:i}=A(3440);class CacheStorage{#v=new Map;constructor(){if(arguments[0]!==r){n.illegalConstructor()}n.util.markAsUncloneable(this)}async match(e,t={}){n.brandCheck(this,CacheStorage);n.argumentLengthCheck(arguments,1,"CacheStorage.match");e=n.converters.RequestInfo(e);t=n.converters.MultiCacheQueryOptions(t);if(t.cacheName!=null){if(this.#v.has(t.cacheName)){const A=this.#v.get(t.cacheName);const n=new s(r,A);return await n.match(e,t)}}else{for(const A of this.#v.values()){const n=new s(r,A);const i=await n.match(e,t);if(i!==undefined){return i}}}}async has(e){n.brandCheck(this,CacheStorage);const t="CacheStorage.has";n.argumentLengthCheck(arguments,1,t);e=n.converters.DOMString(e,t,"cacheName");return this.#v.has(e)}async open(e){n.brandCheck(this,CacheStorage);const t="CacheStorage.open";n.argumentLengthCheck(arguments,1,t);e=n.converters.DOMString(e,t,"cacheName");if(this.#v.has(e)){const t=this.#v.get(e);return new s(r,t)}const A=[];this.#v.set(e,A);return new s(r,A)}async delete(e){n.brandCheck(this,CacheStorage);const t="CacheStorage.delete";n.argumentLengthCheck(arguments,1,t);e=n.converters.DOMString(e,t,"cacheName");return this.#v.delete(e)}async keys(){n.brandCheck(this,CacheStorage);const e=this.#v.keys();return[...e]}}Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:i,has:i,open:i,delete:i,keys:i});e.exports={CacheStorage:CacheStorage}},109:(e,t,A)=>{e.exports={kConstruct:A(6443).kConstruct}},6798:(e,t,A)=>{const r=A(4589);const{URLSerializer:s}=A(1900);const{isValidHeaderName:n}=A(3168);function urlEquals(e,t,A=false){const r=s(e,A);const n=s(t,A);return r===n}function getFieldValues(e){r(e!==null);const t=[];for(let A of e.split(",")){A=A.trim();if(n(A)){t.push(A)}}return t}e.exports={urlEquals:urlEquals,getFieldValues:getFieldValues}},1276:e=>{const t=1024;const A=4096;e.exports={maxAttributeValueSize:t,maxNameValuePairSize:A}},9061:(e,t,A)=>{const{parseSetCookie:r}=A(1978);const{stringify:s}=A(7797);const{webidl:n}=A(5893);const{Headers:i}=A(660);function getCookies(e){n.argumentLengthCheck(arguments,1,"getCookies");n.brandCheck(e,i,{strict:false});const t=e.get("cookie");const A={};if(!t){return A}for(const e of t.split(";")){const[t,...r]=e.split("=");A[t.trim()]=r.join("=")}return A}function deleteCookie(e,t,A){n.brandCheck(e,i,{strict:false});const r="deleteCookie";n.argumentLengthCheck(arguments,2,r);t=n.converters.DOMString(t,r,"name");A=n.converters.DeleteCookieAttributes(A);setCookie(e,{name:t,value:"",expires:new Date(0),...A})}function getSetCookies(e){n.argumentLengthCheck(arguments,1,"getSetCookies");n.brandCheck(e,i,{strict:false});const t=e.getSetCookie();if(!t){return[]}return t.map(e=>r(e))}function setCookie(e,t){n.argumentLengthCheck(arguments,2,"setCookie");n.brandCheck(e,i,{strict:false});t=n.converters.Cookie(t);const A=s(t);if(A){e.append("Set-Cookie",A)}}n.converters.DeleteCookieAttributes=n.dictionaryConverter([{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null}]);n.converters.Cookie=n.dictionaryConverter([{converter:n.converters.DOMString,key:"name"},{converter:n.converters.DOMString,key:"value"},{converter:n.nullableConverter(e=>{if(typeof e==="number"){return n.converters["unsigned long long"](e)}return new Date(e)}),key:"expires",defaultValue:()=>null},{converter:n.nullableConverter(n.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"secure",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:n.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:n.sequenceConverter(n.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);e.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},1978:(e,t,A)=>{const{maxNameValuePairSize:r,maxAttributeValueSize:s}=A(1276);const{isCTLExcludingHtab:n}=A(7797);const{collectASequenceOfCodePointsFast:i}=A(1900);const o=A(4589);function parseSetCookie(e){if(n(e)){return null}let t="";let A="";let s="";let o="";if(e.includes(";")){const r={position:0};t=i(";",e,r);A=e.slice(r.position)}else{t=e}if(!t.includes("=")){o=t}else{const e={position:0};s=i("=",t,e);o=t.slice(e.position+1)}s=s.trim();o=o.trim();if(s.length+o.length>r){return null}return{name:s,value:o,...parseUnparsedAttributes(A)}}function parseUnparsedAttributes(e,t={}){if(e.length===0){return t}o(e[0]===";");e=e.slice(1);let A="";if(e.includes(";")){A=i(";",e,{position:0});e=e.slice(A.length)}else{A=e;e=""}let r="";let n="";if(A.includes("=")){const e={position:0};r=i("=",A,e);n=A.slice(e.position+1)}else{r=A}r=r.trim();n=n.trim();if(n.length>s){return parseUnparsedAttributes(e,t)}const a=r.toLowerCase();if(a==="expires"){const e=new Date(n);t.expires=e}else if(a==="max-age"){const A=n.charCodeAt(0);if((A<48||A>57)&&n[0]!=="-"){return parseUnparsedAttributes(e,t)}if(!/^\d+$/.test(n)){return parseUnparsedAttributes(e,t)}const r=Number(n);t.maxAge=r}else if(a==="domain"){let e=n;if(e[0]==="."){e=e.slice(1)}e=e.toLowerCase();t.domain=e}else if(a==="path"){let e="";if(n.length===0||n[0]!=="/"){e="/"}else{e=n}t.path=e}else if(a==="secure"){t.secure=true}else if(a==="httponly"){t.httpOnly=true}else if(a==="samesite"){const e=n.toLowerCase();if(e==="none"){t.sameSite="None"}else if(e==="strict"){t.sameSite="Strict"}else if(e==="lax"){t.sameSite="Lax"}}else{t.unparsed??=[];t.unparsed.push(`${r}=${n}`)}return parseUnparsedAttributes(e,t)}e.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},7797:e=>{function isCTLExcludingHtab(e){for(let t=0;t=0&&A<=8||A>=10&&A<=31||A===127){return true}}return false}function validateCookieName(e){for(let t=0;t126||A===34||A===40||A===41||A===60||A===62||A===64||A===44||A===59||A===58||A===92||A===47||A===91||A===93||A===63||A===61||A===123||A===125){throw new Error("Invalid cookie name")}}}function validateCookieValue(e){let t=e.length;let A=0;if(e[0]==='"'){if(t===1||e[t-1]!=='"'){throw new Error("Invalid cookie value")}--t;++A}while(A126||t===34||t===44||t===59||t===92){throw new Error("Invalid cookie value")}}}function validateCookiePath(e){for(let t=0;t126||A===59){throw new Error("Invalid cookie path")}}}function isLetterOrDigit(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function validateCookieDomain(e){if(e===" "){return}if(e.length>255){throw new Error("Invalid cookie domain")}let t=0;for(let A=0;A63){throw new Error("Invalid cookie domain")}}if(t===0||e.charCodeAt(e.length-1)===45){throw new Error("Invalid cookie domain")}}const t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const r=Array(61).fill(0).map((e,t)=>t.toString().padStart(2,"0"));function toIMFDate(e){if(typeof e==="number"){e=new Date(e)}return`${t[e.getUTCDay()]}, ${r[e.getUTCDate()]} ${A[e.getUTCMonth()]} ${e.getUTCFullYear()} ${r[e.getUTCHours()]}:${r[e.getUTCMinutes()]}:${r[e.getUTCSeconds()]} 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,...r]=A.split("=");const s=e.trim();const n=r.join("=");validateCookieName(s);validateCookieValue(n);t.push(`${s}=${n}`)}return t.join("; ")}e.exports={isCTLExcludingHtab:isCTLExcludingHtab,validateCookieName:validateCookieName,validateCookiePath:validateCookiePath,validateCookieValue:validateCookieValue,toIMFDate:toIMFDate,stringify:stringify}},4031:(e,t,A)=>{const{Transform:r}=A(7075);const{isASCIINumber:s,isValidLastEventId:n}=A(4811);const i=[239,187,191];const o=10;const a=13;const c=58;const l=32;const h=Buffer.from("data");const g=Buffer.from("event");const u=Buffer.from("id");const E=Buffer.from("retry");function isASCIINumberBytes(e,t){if(t>=e.length){return false}for(let A=t;A57){return false}}return true}function isValidLastEventIdBytes(e,t){for(let A=t;A0){t.event=A}}}processEvent(e){if(e.retry&&s(e.retry)){this.state.reconnectionTime=parseInt(e.retry,10)}if(e.id&&n(e.id)){this.state.lastEventId=e.id}if(e.data!==undefined){this.push({type:e.event||"message",options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}}clearEvent(){this.event.data=undefined;this.event.event=undefined;this.event.id=undefined;this.event.retry=undefined}hasPendingEvent(){return this.event.data!==undefined||this.event.event!==undefined||this.event.id!==undefined||this.event.retry!==undefined}hasCurrentByte(){return this.chunkIndex=this.chunks[this.chunkIndex].length){this.chunkIndex++;this.pos=0}}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex;this.linePos=this.pos;this.dropConsumedChunks()}dropConsumedChunks(){while(this.lineChunkIndex>0){this.chunks.shift();this.lineChunkIndex--;this.chunkIndex--}if(this.chunkIndex===this.chunks.length){this.chunks.length=0;this.chunkIndex=0;this.pos=0;this.lineChunkIndex=0;this.linePos=0}}readLine(){if(this.lineChunkIndex===this.chunkIndex){return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos)}const e=[];let t=0;for(let A=this.lineChunkIndex;A<=this.chunkIndex;A++){const r=this.chunks[A];const s=A===this.lineChunkIndex?this.linePos:0;const n=A===this.chunkIndex?this.pos:r.length;const i=r.subarray(s,n);t+=i.length;e.push(i)}return Buffer.concat(e,t)}peekBufferedByte(e){let t=this.lineChunkIndex;let A=this.linePos;while(t0&&this.lineChunkIndex{const{pipeline:r}=A(7075);const{fetching:s}=A(4398);const{makeRequest:n}=A(9967);const{webidl:i}=A(5893);const{EventSourceStream:o}=A(4031);const{parseMIMEType:a}=A(1900);const{createFastMessageEvent:c}=A(5188);const{isNetworkError:l}=A(9051);const{delay:h}=A(4811);const{kEnumerableProperty:g}=A(3440);const{environmentSettingsObject:u}=A(3168);let E=false;const Q=3e3;const C=0;const B=1;const I=2;const d="anonymous";const f="use-credentials";class EventSource extends EventTarget{#H={open:null,error:null,message:null};#x=null;#G=false;#Y=C;#J=null;#_=null;#A;#w;constructor(e,t={}){super();i.util.markAsUncloneable(this);const A="EventSource constructor";i.argumentLengthCheck(arguments,1,A);if(!E){E=true;process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})}e=i.converters.USVString(e,A,"url");t=i.converters.EventSourceInitDict(t,A,"eventSourceInitDict");this.#A=t.dispatcher;this.#w={lastEventId:"",reconnectionTime:Q};const r=u;let s;try{s=new URL(e,r.settingsObject.baseUrl);this.#w.origin=s.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#x=s.href;let o=d;if(t.withCredentials){o=f;this.#G=true}const a={redirect:"follow",keepalive:true,mode:"cors",credentials:o==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};a.client=u.settingsObject;a.headersList=[["accept",{name:"accept",value:"text/event-stream"}]];a.cache="no-store";a.initiator="other";a.urlList=[new URL(this.#x)];this.#J=n(a);this.#V()}get readyState(){return this.#Y}get url(){return this.#x}get withCredentials(){return this.#G}#V(){if(this.#Y===I)return;this.#Y=C;const e={request:this.#J,dispatcher:this.#A};const processEventSourceEndOfBody=e=>{if(l(e)){this.dispatchEvent(new Event("error"));this.close()}this.#O()};e.processResponseEndOfBody=processEventSourceEndOfBody;e.processResponse=e=>{if(l(e)){if(e.aborted){this.close();this.dispatchEvent(new Event("error"));return}else{this.#O();return}}const t=e.headersList.get("content-type",true);const A=t!==null?a(t):"failure";const s=A!=="failure"&&A.essence==="text/event-stream";if(e.status!==200||s===false){this.close();this.dispatchEvent(new Event("error"));return}this.#Y=B;this.dispatchEvent(new Event("open"));this.#w.origin=e.urlList[e.urlList.length-1].origin;const n=new o({eventSourceSettings:this.#w,push:e=>{this.dispatchEvent(c(e.type,e.options))}});r(e.body.stream,n,e=>{if(e?.aborted===false){this.close();this.dispatchEvent(new Event("error"))}})};this.#_=s(e)}async#O(){if(this.#Y===I)return;this.#Y=C;this.dispatchEvent(new Event("error"));await h(this.#w.reconnectionTime);if(this.#Y!==C)return;if(this.#w.lastEventId.length){this.#J.headersList.set("last-event-id",this.#w.lastEventId,true)}this.#V()}close(){i.brandCheck(this,EventSource);if(this.#Y===I)return;this.#Y=I;this.#_.abort();this.#J=null}get onopen(){return this.#H.open}set onopen(e){if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onmessage(){return this.#H.message}set onmessage(e){if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get onerror(){return this.#H.error}set onerror(e){if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}}const p={CONNECTING:{__proto__:null,configurable:false,enumerable:true,value:C,writable:false},OPEN:{__proto__:null,configurable:false,enumerable:true,value:B,writable:false},CLOSED:{__proto__:null,configurable:false,enumerable:true,value:I,writable:false}};Object.defineProperties(EventSource,p);Object.defineProperties(EventSource.prototype,p);Object.defineProperties(EventSource.prototype,{close:g,onerror:g,onmessage:g,onopen:g,readyState:g,url:g,withCredentials:g});i.converters.EventSourceInitDict=i.dictionaryConverter([{key:"withCredentials",converter:i.converters.boolean,defaultValue:()=>false},{key:"dispatcher",converter:i.converters.any}]);e.exports={EventSource:EventSource,defaultReconnectionTime:Q}},4811:e=>{function isValidLastEventId(e){return e.indexOf("\0")===-1}function isASCIINumber(e){if(e.length===0)return false;for(let t=0;t57)return false}return true}function delay(e){return new Promise(t=>{setTimeout(t,e).unref()})}e.exports={isValidLastEventId:isValidLastEventId,isASCIINumber:isASCIINumber,delay:delay}},4492:(e,t,A)=>{const r=A(3440);const{ReadableStreamFrom:s,isBlobLike:n,isReadableStreamLike:i,readableStreamClose:o,createDeferredPromise:a,fullyReadBody:c,extractMimeType:l,utf8DecodeBytes:h}=A(3168);const{FormData:g}=A(5910);const{kState:u}=A(3627);const{webidl:E}=A(5893);const{Blob:Q}=A(4573);const C=A(4589);const{isErrored:B,isDisturbed:I}=A(7075);const{isArrayBuffer:d}=A(3429);const{serializeAMimeType:f}=A(1900);const{multipartFormDataParser:p}=A(116);let w;try{const e=A(7598);w=t=>e.randomInt(0,t)}catch{w=e=>Math.floor(Math.random(e))}const y=new TextEncoder;function noop(){}const m=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0;let R;if(m){R=new FinalizationRegistry(e=>{const t=e.deref();if(t&&!t.locked&&!I(t)&&!B(t)){t.cancel("Response object has been garbage collected").catch(noop)}})}function extractBody(e,t=false){let A=null;if(e instanceof ReadableStream){A=e}else if(n(e)){A=e.stream()}else{A=new ReadableStream({async pull(e){const t=typeof c==="string"?y.encode(c):c;if(t.byteLength){e.enqueue(t)}queueMicrotask(()=>o(e))},start(){},type:"bytes"})}C(i(A));let a=null;let c=null;let l=null;let h=null;if(typeof e==="string"){c=e;h="text/plain;charset=UTF-8"}else if(e instanceof URLSearchParams){c=e.toString();h="application/x-www-form-urlencoded;charset=UTF-8"}else if(d(e)){c=new Uint8Array(e.slice())}else if(ArrayBuffer.isView(e)){c=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength))}else if(r.isFormDataLike(e)){const t=`----formdata-undici-0${`${w(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 r=[];const s=new Uint8Array([13,10]);l=0;let n=false;for(const[t,i]of e){if(typeof i==="string"){const e=y.encode(A+`; name="${escape(normalizeLinefeeds(t))}"`+`\r\n\r\n${normalizeLinefeeds(i)}\r\n`);r.push(e);l+=e.byteLength}else{const e=y.encode(`${A}; name="${escape(normalizeLinefeeds(t))}"`+(i.name?`; filename="${escape(i.name)}"`:"")+"\r\n"+`Content-Type: ${i.type||"application/octet-stream"}\r\n\r\n`);r.push(e,i,s);if(typeof i.size==="number"){l+=e.byteLength+i.size+s.byteLength}else{n=true}}}const i=y.encode(`--${t}--\r\n`);r.push(i);l+=i.byteLength;if(n){l=null}c=e;a=async function*(){for(const e of r){if(e.stream){yield*e.stream()}else{yield e}}};h=`multipart/form-data; boundary=${t}`}else if(n(e)){c=e;l=e.size;if(e.type){h=e.type}}else if(typeof e[Symbol.asyncIterator]==="function"){if(t){throw new TypeError("keepalive")}if(r.isDisturbed(e)||e.locked){throw new TypeError("Response body object should not be disturbed or locked")}A=e instanceof ReadableStream?e:s(e)}if(typeof c==="string"||r.isBuffer(c)){l=Buffer.byteLength(c)}if(a!=null){let t;A=new ReadableStream({async start(){t=a(e)[Symbol.asyncIterator]()},async pull(e){const{value:r,done:s}=await t.next();if(s){queueMicrotask(()=>{e.close();e.byobRequest?.respond(0)})}else{if(!B(A)){const t=new Uint8Array(r);if(t.byteLength){e.enqueue(t)}}}return e.desiredSize>0},async cancel(e){await t.return()},type:"bytes"})}const g={stream:A,source:c,length:l};return[g,h]}function safelyExtractBody(e,t=false){if(e instanceof ReadableStream){C(!r.isDisturbed(e),"The body has already been consumed.");C(!e.locked,"The stream is locked.")}return extractBody(e,t)}function cloneBody(e,t){const[A,r]=t.stream.tee();t.stream=A;return{stream:r,length:t.length,source:t.source}}function throwIfAborted(e){if(e.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(e){const t={blob(){return consumeBody(this,e=>{let t=bodyMimeType(this);if(t===null){t=""}else if(t){t=f(t)}return new Q([e],{type:t})},e)},arrayBuffer(){return consumeBody(this,e=>new Uint8Array(e).buffer,e)},text(){return consumeBody(this,h,e)},json(){return consumeBody(this,parseJSONFromBytes,e)},formData(){return consumeBody(this,e=>{const t=bodyMimeType(this);if(t!==null){switch(t.essence){case"multipart/form-data":{const A=p(e,t);if(A==="failure"){throw new TypeError("Failed to parse body as FormData.")}const r=new g;r[u]=A;return r}case"application/x-www-form-urlencoded":{const t=new URLSearchParams(e.toString());const A=new g;for(const[e,r]of t){A.append(e,r)}return A}}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return consumeBody(this,e=>new Uint8Array(e),e)}};return t}function mixinBody(e){Object.assign(e.prototype,bodyMixinMethods(e))}async function consumeBody(e,t,A){E.brandCheck(e,A);if(bodyUnusable(e)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(e[u]);const r=a();const errorSteps=e=>r.reject(e);const successSteps=e=>{try{r.resolve(t(e))}catch(e){errorSteps(e)}};if(e[u].body==null){successSteps(Buffer.allocUnsafe(0));return r.promise}await c(e[u].body,successSteps,errorSteps);return r.promise}function bodyUnusable(e){const t=e[u].body;return t!=null&&(t.stream.locked||r.isDisturbed(t.stream))}function parseJSONFromBytes(e){return JSON.parse(h(e))}function bodyMimeType(e){const t=e[u].headersList;const A=l(t);if(A==="failure"){return null}return A}e.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:R,hasFinalizationRegistry:m,bodyUnusable:bodyUnusable}},4495:e=>{const t=["GET","HEAD","POST"];const A=new Set(t);const r=[101,204,205,304];const s=[301,302,303,307,308];const n=new Set(s);const i=["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","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"];const o=new Set(i);const a=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const c=new Set(a);const l=["follow","manual","error"];const h=["GET","HEAD","OPTIONS","TRACE"];const g=new Set(h);const u=["navigate","same-origin","no-cors","cors"];const E=["omit","same-origin","include"];const Q=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const C=["content-encoding","content-language","content-location","content-type","content-length"];const B=["half"];const I=["CONNECT","TRACE","TRACK"];const d=new Set(I);const f=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""];const p=new Set(f);e.exports={subresource:f,forbiddenMethods:I,requestBodyHeader:C,referrerPolicy:a,requestRedirect:l,requestMode:u,requestCredentials:E,requestCache:Q,redirectStatus:s,corsSafeListedMethods:t,nullBodyStatus:r,safeMethods:h,badPorts:i,requestDuplex:B,subresourceSet:p,badPortsSet:o,redirectStatusSet:n,corsSafeListedMethodsSet:A,safeMethodsSet:g,forbiddenMethodsSet:d,referrerPolicySet:c}},1900:(e,t,A)=>{const r=A(4589);const s=new TextEncoder;const n=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;const i=/[\u000A\u000D\u0009\u0020]/;const o=/[\u0009\u000A\u000C\u000D\u0020]/g;const a=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function dataURLProcessor(e){r(e.protocol==="data:");let t=URLSerializer(e,true);t=t.slice(5);const A={position:0};let s=collectASequenceOfCodePointsFast(",",t,A);const n=s.length;s=removeASCIIWhitespace(s,true,true);if(A.position>=t.length){return"failure"}A.position++;const i=t.slice(n+1);let o=stringPercentDecode(i);if(/;(\u0020){0,}base64$/i.test(s)){const e=isomorphicDecode(o);o=forgivingBase64(e);if(o==="failure"){return"failure"}s=s.slice(0,-6);s=s.replace(/(\u0020)+$/,"");s=s.slice(0,-1)}if(s.startsWith(";")){s="text/plain"+s}let a=parseMIMEType(s);if(a==="failure"){a=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:a,body:o}}function URLSerializer(e,t=false){if(!t){return e.href}const A=e.href;const r=e.hash.length;const s=r===0?A:A.substring(0,A.length-r);if(!r&&A.endsWith("#")){return s.slice(0,-1)}return s}function collectASequenceOfCodePoints(e,t,A){let r="";while(A.position=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function hexByteToNumber(e){return e>=48&&e<=57?e-48:(e&223)-55}function percentDecode(e){const t=e.length;const A=new Uint8Array(t);let r=0;for(let s=0;se.length){return"failure"}t.position++;let r=collectASequenceOfCodePointsFast(";",e,t);r=removeHTTPWhitespace(r,false,true);if(r.length===0||!n.test(r)){return"failure"}const s=A.toLowerCase();const o=r.toLowerCase();const c={type:s,subtype:o,parameters:new Map,essence:`${s}/${o}`};while(t.positioni.test(e),e,t);let A=collectASequenceOfCodePoints(e=>e!==";"&&e!=="=",e,t);A=A.toLowerCase();if(t.positione.length){break}let r=null;if(e[t.position]==='"'){r=collectAnHTTPQuotedString(e,t,true);collectASequenceOfCodePointsFast(";",e,t)}else{r=collectASequenceOfCodePointsFast(";",e,t);r=removeHTTPWhitespace(r,false,true);if(r.length===0){continue}}if(A.length!==0&&n.test(A)&&(r.length===0||a.test(r))&&!c.parameters.has(A)){c.parameters.set(A,r)}}return c}function forgivingBase64(e){e=e.replace(o,"");let t=e.length;if(t%4===0){if(e.charCodeAt(t-1)===61){--t;if(e.charCodeAt(t-1)===61){--t}}}if(t%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(e.length===t?e:e.substring(0,t))){return"failure"}const A=Buffer.from(e,"base64");return new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}function collectAnHTTPQuotedString(e,t,A){const s=t.position;let n="";r(e[t.position]==='"');t.position++;while(true){n+=collectASequenceOfCodePoints(e=>e!=='"'&&e!=="\\",e,t);if(t.position>=e.length){break}const A=e[t.position];t.position++;if(A==="\\"){if(t.position>=e.length){n+="\\";break}n+=e[t.position];t.position++}else{r(A==='"');break}}if(A){return n}return e.slice(s,t.position)}function serializeAMimeType(e){r(e!=="failure");const{parameters:t,essence:A}=e;let s=A;for(let[e,A]of t.entries()){s+=";";s+=e;s+="=";if(!n.test(A)){A=A.replace(/(\\|")/g,"\\$1");A='"'+A;A+='"'}s+=A}return s}function isHTTPWhiteSpace(e){return e===13||e===10||e===9||e===32}function removeHTTPWhitespace(e,t=true,A=true){return removeChars(e,t,A,isHTTPWhiteSpace)}function isASCIIWhitespace(e){return e===13||e===10||e===9||e===12||e===32}function removeASCIIWhitespace(e,t=true,A=true){return removeChars(e,t,A,isASCIIWhitespace)}function removeChars(e,t,A,r){let s=0;let n=e.length-1;if(t){while(s0&&r(e.charCodeAt(n)))n--}return s===0&&n===e.length-1?e:e.slice(s,n+1)}function isomorphicDecode(e){const t=e.length;if((2<<15)-1>t){return String.fromCharCode.apply(null,e)}let A="";let r=0;let s=(2<<15)-1;while(rt){s=t-r}A+=String.fromCharCode.apply(null,e.subarray(r,r+=s))}return A}function minimizeSupportedMimeType(e){switch(e.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}if(e.subtype.endsWith("+json")){return"application/json"}if(e.subtype.endsWith("+xml")){return"application/xml"}return""}e.exports={dataURLProcessor:dataURLProcessor,URLSerializer:URLSerializer,collectASequenceOfCodePoints:collectASequenceOfCodePoints,collectASequenceOfCodePointsFast:collectASequenceOfCodePointsFast,stringPercentDecode:stringPercentDecode,parseMIMEType:parseMIMEType,collectAnHTTPQuotedString:collectAnHTTPQuotedString,serializeAMimeType:serializeAMimeType,removeChars:removeChars,removeHTTPWhitespace:removeHTTPWhitespace,minimizeSupportedMimeType:minimizeSupportedMimeType,HTTP_TOKEN_CODEPOINTS:n,isomorphicDecode:isomorphicDecode}},6653:(e,t,A)=>{const{kConnected:r,kSize:s}=A(6443);class CompatWeakRef{constructor(e){this.value=e}deref(){return this.value[r]===0&&this.value[s]===0?undefined:this.value}}class CompatFinalizer{constructor(e){this.finalizer=e}register(e,t){if(e.on){e.on("disconnect",()=>{if(e[r]===0&&e[s]===0){this.finalizer(t)}})}}unregister(e){}}e.exports=function(){if(process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")){process._rawDebug("Using compatibility WeakRef and FinalizationRegistry");return{WeakRef:CompatWeakRef,FinalizationRegistry:CompatFinalizer}}return{WeakRef:WeakRef,FinalizationRegistry:FinalizationRegistry}}},7114:(e,t,A)=>{const{Blob:r,File:s}=A(4573);const{kState:n}=A(3627);const{webidl:i}=A(5893);class FileLike{constructor(e,t,A={}){const r=t;const s=A.type;const i=A.lastModified??Date.now();this[n]={blobLike:e,name:r,type:s,lastModified:i}}stream(...e){i.brandCheck(this,FileLike);return this[n].blobLike.stream(...e)}arrayBuffer(...e){i.brandCheck(this,FileLike);return this[n].blobLike.arrayBuffer(...e)}slice(...e){i.brandCheck(this,FileLike);return this[n].blobLike.slice(...e)}text(...e){i.brandCheck(this,FileLike);return this[n].blobLike.text(...e)}get size(){i.brandCheck(this,FileLike);return this[n].blobLike.size}get type(){i.brandCheck(this,FileLike);return this[n].blobLike.type}get name(){i.brandCheck(this,FileLike);return this[n].name}get lastModified(){i.brandCheck(this,FileLike);return this[n].lastModified}get[Symbol.toStringTag](){return"File"}}i.converters.Blob=i.interfaceConverter(r);function isFileLike(e){return e instanceof s||e&&(typeof e.stream==="function"||typeof e.arrayBuffer==="function")&&e[Symbol.toStringTag]==="File"}e.exports={FileLike:FileLike,isFileLike:isFileLike}},116:(e,t,A)=>{const{isUSVString:r,bufferToLowerCasedHeaderName:s}=A(3440);const{utf8DecodeBytes:n}=A(3168);const{HTTP_TOKEN_CODEPOINTS:i,isomorphicDecode:o}=A(1900);const{isFileLike:a}=A(7114);const{makeEntry:c}=A(5910);const l=A(4589);const{File:h}=A(4573);const g=globalThis.File??h;const u=Buffer.from('form-data; name="');const E=Buffer.from("; filename");const Q=Buffer.from("--");const C=Buffer.from("--\r\n");function isAsciiString(e){for(let t=0;t70){return false}for(let A=0;A=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===39||t===45||t===95)){return false}}return true}function multipartFormDataParser(e,t){l(t!=="failure"&&t.essence==="multipart/form-data");const A=t.parameters.get("boundary");if(A===undefined){return"failure"}const s=Buffer.from(`--${A}`,"utf8");const i=[];const o={position:0};while(e[o.position]===13&&e[o.position+1]===10){o.position+=2}let h=e.length;while(e[h-1]===10&&e[h-2]===13){h-=2}if(h!==e.length){e=e.subarray(0,h)}while(true){if(e.subarray(o.position,o.position+s.length).equals(s)){o.position+=s.length}else{return"failure"}if(o.position===e.length-2&&bufferStartsWith(e,Q,o)||o.position===e.length-4&&bufferStartsWith(e,C,o)){return i}if(e[o.position]!==13||e[o.position+1]!==10){return"failure"}o.position+=2;const t=parseMultipartFormDataHeaders(e,o);if(t==="failure"){return"failure"}let{name:A,filename:h,contentType:u,encoding:E}=t;o.position+=2;let B;{const t=e.indexOf(s.subarray(2),o.position);if(t===-1){return"failure"}B=e.subarray(o.position,t-4);o.position+=B.length;if(E==="base64"){B=Buffer.from(B.toString(),"base64")}}if(e[o.position]!==13||e[o.position+1]!==10){return"failure"}else{o.position+=2}let I;if(h!==null){u??="text/plain";if(!isAsciiString(u)){u=""}I=new g([B],h,{type:u})}else{I=n(Buffer.from(B))}l(r(A));l(typeof I==="string"&&r(I)||a(I));i.push(c(A,I,h))}}function parseMultipartFormDataHeaders(e,t){let A=null;let r=null;let n=null;let a=null;while(true){if(e[t.position]===13&&e[t.position+1]===10){if(A===null){return"failure"}return{name:A,filename:r,contentType:n,encoding:a}}let c=collectASequenceOfBytes(e=>e!==10&&e!==13&&e!==58,e,t);c=removeChars(c,true,true,e=>e===9||e===32);if(!i.test(c.toString())){return"failure"}if(e[t.position]!==58){return"failure"}t.position++;collectASequenceOfBytes(e=>e===32||e===9,e,t);switch(s(c)){case"content-disposition":{A=r=null;if(!bufferStartsWith(e,u,t)){return"failure"}t.position+=17;A=parseMultipartFormDataName(e,t);if(A===null){return"failure"}if(bufferStartsWith(e,E,t)){let A=t.position+E.length;if(e[A]===42){t.position+=1;A+=1}if(e[A]!==61||e[A+1]!==34){return"failure"}t.position+=12;r=parseMultipartFormDataName(e,t);if(r===null){return"failure"}}break}case"content-type":{let A=collectASequenceOfBytes(e=>e!==10&&e!==13,e,t);A=removeChars(A,false,true,e=>e===9||e===32);n=o(A);break}case"content-transfer-encoding":{let A=collectASequenceOfBytes(e=>e!==10&&e!==13,e,t);A=removeChars(A,false,true,e=>e===9||e===32);a=o(A);break}default:{collectASequenceOfBytes(e=>e!==10&&e!==13,e,t)}}if(e[t.position]!==13&&e[t.position+1]!==10){return"failure"}else{t.position+=2}}}function parseMultipartFormDataName(e,t){l(e[t.position-1]===34);let A=collectASequenceOfBytes(e=>e!==10&&e!==13&&e!==34,e,t);if(e[t.position]!==34){return null}else{t.position++}A=(new TextDecoder).decode(A).replace(/%0A/gi,"\n").replace(/%0D/gi,"\r").replace(/%22/g,'"');return A}function collectASequenceOfBytes(e,t,A){let r=A.position;while(r0&&r(e[n]))n--}return s===0&&n===e.length-1?e:e.subarray(s,n+1)}function bufferStartsWith(e,t,A){if(e.length{const{isBlobLike:r,iteratorMixin:s}=A(3168);const{kState:n}=A(3627);const{kEnumerableProperty:i}=A(3440);const{FileLike:o,isFileLike:a}=A(7114);const{webidl:c}=A(5893);const{File:l}=A(4573);const h=A(7975);const g=globalThis.File??l;class FormData{constructor(e){c.util.markAsUncloneable(this);if(e!==undefined){throw c.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}this[n]=[]}append(e,t,A=undefined){c.brandCheck(this,FormData);const s="FormData.append";c.argumentLengthCheck(arguments,2,s);if(arguments.length===3&&!r(t)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,s,"name");t=r(t)?c.converters.Blob(t,s,"value",{strict:false}):c.converters.USVString(t,s,"value");A=arguments.length===3?c.converters.USVString(A,s,"filename"):undefined;const i=makeEntry(e,t,A);this[n].push(i)}delete(e){c.brandCheck(this,FormData);const t="FormData.delete";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");this[n]=this[n].filter(t=>t.name!==e)}get(e){c.brandCheck(this,FormData);const t="FormData.get";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");const A=this[n].findIndex(t=>t.name===e);if(A===-1){return null}return this[n][A].value}getAll(e){c.brandCheck(this,FormData);const t="FormData.getAll";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");return this[n].filter(t=>t.name===e).map(e=>e.value)}has(e){c.brandCheck(this,FormData);const t="FormData.has";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");return this[n].findIndex(t=>t.name===e)!==-1}set(e,t,A=undefined){c.brandCheck(this,FormData);const s="FormData.set";c.argumentLengthCheck(arguments,2,s);if(arguments.length===3&&!r(t)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,s,"name");t=r(t)?c.converters.Blob(t,s,"name",{strict:false}):c.converters.USVString(t,s,"name");A=arguments.length===3?c.converters.USVString(A,s,"name"):undefined;const i=makeEntry(e,t,A);const o=this[n].findIndex(t=>t.name===e);if(o!==-1){this[n]=[...this[n].slice(0,o),i,...this[n].slice(o+1).filter(t=>t.name!==e)]}else{this[n].push(i)}}[h.inspect.custom](e,t){const A=this[n].reduce((e,t)=>{if(e[t.name]){if(Array.isArray(e[t.name])){e[t.name].push(t.value)}else{e[t.name]=[e[t.name],t.value]}}else{e[t.name]=t.value}return e},{__proto__:null});t.depth??=e;t.colors??=true;const r=h.formatWithOptions(t,A);return`FormData ${r.slice(r.indexOf("]")+2)}`}}s("FormData",FormData,n,"name","value");Object.defineProperties(FormData.prototype,{append:i,delete:i,get:i,getAll:i,has:i,set:i,[Symbol.toStringTag]:{value:"FormData",configurable:true}});function makeEntry(e,t,A){if(typeof t==="string"){}else{if(!a(t)){t=t instanceof Blob?new g([t],"blob",{type:t.type}):new o(t,"blob",{type:t.type})}if(A!==undefined){const e={type:t.type,lastModified:t.lastModified};t=t instanceof l?new g([t],A,e):new o(t,A,e)}}return{name:e,value:t}}e.exports={FormData:FormData,makeEntry:makeEntry}},1059: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}},660:(e,t,A)=>{const{kConstruct:r}=A(6443);const{kEnumerableProperty:s}=A(3440);const{iteratorMixin:n,isValidHeaderName:i,isValidHeaderValue:o}=A(3168);const{webidl:a}=A(5893);const c=A(4589);const l=A(7975);const h=Symbol("headers map");const g=Symbol("headers map sorted");function isHTTPWhiteSpaceCharCode(e){return e===10||e===13||e===9||e===32}function headerValueNormalize(e){let t=0;let A=e.length;while(A>t&&isHTTPWhiteSpaceCharCode(e.charCodeAt(A-1)))--A;while(A>t&&isHTTPWhiteSpaceCharCode(e.charCodeAt(t)))++t;return t===0&&A===e.length?e:e.substring(t,A)}function fill(e,t){if(Array.isArray(t)){for(let A=0;A>","record"]})}}function appendHeader(e,t,A){A=headerValueNormalize(A);if(!i(t)){throw a.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header name"})}else if(!o(A)){throw a.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header value"})}if(u(e)==="immutable"){throw new TypeError("immutable")}return Q(e).append(t,A,false)}function compareHeaderName(e,t){return e[0]>1);if(t[o][0]<=a[0]){i=o+1}else{n=o}}if(r!==o){s=r;while(s>i){t[s]=t[--s]}t[i]=a}}if(!A.next().done){throw new TypeError("Unreachable")}return t}else{let e=0;for(const{0:A,1:{value:r}}of this[h]){t[e++]=[A,r];c(r!==null)}return t.sort(compareHeaderName)}}}class Headers{#P;#W;constructor(e=undefined){a.util.markAsUncloneable(this);if(e===r){return}this.#W=new HeadersList;this.#P="none";if(e!==undefined){e=a.converters.HeadersInit(e,"Headers contructor","init");fill(this,e)}}append(e,t){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.append");const A="Headers.append";e=a.converters.ByteString(e,A,"name");t=a.converters.ByteString(t,A,"value");return appendHeader(this,e,t)}delete(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.delete");const t="Headers.delete";e=a.converters.ByteString(e,t,"name");if(!i(e)){throw a.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"})}if(this.#P==="immutable"){throw new TypeError("immutable")}if(!this.#W.contains(e,false)){return}this.#W.delete(e,false)}get(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.get");const t="Headers.get";e=a.converters.ByteString(e,t,"name");if(!i(e)){throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"})}return this.#W.get(e,false)}has(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.has");const t="Headers.has";e=a.converters.ByteString(e,t,"name");if(!i(e)){throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"})}return this.#W.contains(e,false)}set(e,t){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.set");const A="Headers.set";e=a.converters.ByteString(e,A,"name");t=a.converters.ByteString(t,A,"value");t=headerValueNormalize(t);if(!i(e)){throw a.errors.invalidArgument({prefix:A,value:e,type:"header name"})}else if(!o(t)){throw a.errors.invalidArgument({prefix:A,value:t,type:"header value"})}if(this.#P==="immutable"){throw new TypeError("immutable")}this.#W.set(e,t,false)}getSetCookie(){a.brandCheck(this,Headers);const e=this.#W.cookies;if(e){return[...e]}return[]}get[g](){if(this.#W[g]){return this.#W[g]}const e=[];const t=this.#W.toSortedArray();const A=this.#W.cookies;if(A===null||A.length===1){return this.#W[g]=t}for(let r=0;r>"](e,t,A,r.bind(e))}return a.converters["record"](e,t,A)}throw a.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};e.exports={fill:fill,compareHeaderName:compareHeaderName,Headers:Headers,HeadersList:HeadersList,getHeadersGuard:u,setHeadersGuard:E,setHeadersList:C,getHeadersList:Q}},4398:(e,t,A)=>{const{makeNetworkError:r,makeAppropriateNetworkError:s,filterResponse:n,makeResponse:i,fromInnerResponse:o}=A(9051);const{HeadersList:a}=A(660);const{Request:c,cloneRequest:l}=A(9967);const h=A(8522);const{bytesMatch:g,makePolicyContainer:u,clonePolicyContainer:E,requestBadPort:Q,TAOCheck:C,appendRequestOriginHeader:B,responseLocationURL:I,requestCurrentURL:d,setRequestReferrerPolicyOnRedirect:f,tryUpgradeRequestToAPotentiallyTrustworthyURL:p,createOpaqueTimingInfo:w,appendFetchMetadata:y,corsCheck:m,crossOriginResourcePolicyCheck:R,determineRequestsReferrer:D,coarsenedSharedCurrentTime:b,createDeferredPromise:k,isBlobLike:S,sameOrigin:F,isCancelled:N,isAborted:U,isErrorLike:T,fullyReadBody:M,readableStreamClose:L,isomorphicEncode:v,urlIsLocal:H,urlIsHttpHttpsScheme:x,urlHasHttpsScheme:G,clampAndCoarsenConnectionTimingInfo:Y,simpleRangeHeaderValue:J,buildContentRange:_,createInflate:V,extractMimeType:O}=A(3168);const{kState:P,kDispatcher:W}=A(3627);const q=A(4589);const{safelyExtractBody:Z,extractBody:z}=A(4492);const{redirectStatusSet:K,nullBodyStatus:X,safeMethodsSet:j,requestBodyHeader:$,subresourceSet:ee}=A(4495);const te=A(8474);const{Readable:Ae,pipeline:re,finished:se}=A(7075);const{addAbortListener:ne,isErrored:ie,isReadable:oe,bufferToLowerCasedHeaderName:ae}=A(3440);const{dataURLProcessor:ce,serializeAMimeType:le,minimizeSupportedMimeType:he}=A(1900);const{getGlobalDispatcher:ge}=A(2581);const{webidl:ue}=A(5893);const{STATUS_CODES:Ee}=A(7067);const Qe=["GET","HEAD"];const Ce=typeof __UNDICI_IS_NODE__!=="undefined"||typeof esbuildDetection!=="undefined"?"node":"undici";let Be;class Fetch extends te{constructor(e){super();this.dispatcher=e;this.connection=null;this.dump=false;this.state="ongoing"}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 DOMException("The operation was aborted.","AbortError")}this.serializedAbortReason=e;this.connection?.destroy(e);this.emit("terminated",e)}}function handleFetchDone(e){finalizeAndReportTiming(e,"fetch")}function fetch(e,t=undefined){ue.argumentLengthCheck(arguments,1,"globalThis.fetch");let A=k();let r;try{r=new c(e,t)}catch(e){A.reject(e);return A.promise}const s=r[P];if(r.signal.aborted){abortFetch(A,s,null,r.signal.reason);return A.promise}const n=s.client.globalObject;if(n?.constructor?.name==="ServiceWorkerGlobalScope"){s.serviceWorkers="none"}let i=null;let a=false;let l=null;ne(r.signal,()=>{a=true;q(l!=null);l.abort(r.signal.reason);const e=i?.deref();abortFetch(A,s,e,r.signal.reason)});const processResponse=e=>{if(a){return}if(e.aborted){abortFetch(A,s,i,l.serializedAbortReason);return}if(e.type==="error"){A.reject(new TypeError("fetch failed",{cause:e.error}));return}i=new WeakRef(o(e,"immutable"));A.resolve(i.deref());A=null};l=fetching({request:s,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:r[W]});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 r=e.timingInfo;let s=e.cacheState;if(!x(A)){return}if(r===null){return}if(!e.timingAllowPassed){r=w({startTime:r.startTime});s=""}r.endTime=b();e.timingInfo=r;Ie(r,A.href,t,globalThis,s)}const Ie=performance.markResourceTiming;function abortFetch(e,t,A,r){if(e){e.reject(r)}if(t.body!=null&&oe(t.body?.stream)){t.body.stream.cancel(r).catch(e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e})}if(A==null){return}const s=A[P];if(s.body!=null&&oe(s.body?.stream)){s.body.stream.cancel(r).catch(e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e})}}function fetching({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseEndOfBody:s,processResponseConsumeBody:n,useParallelQueue:i=false,dispatcher:o=ge()}){q(o);let a=null;let c=false;if(e.client!=null){a=e.client.globalObject;c=e.client.crossOriginIsolatedCapability}const l=b(c);const h=w({startTime:l});const g={controller:new Fetch(o),request:e,timingInfo:h,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseConsumeBody:n,processResponseEndOfBody:s,taskDestination:a,crossOriginIsolatedCapability:c};q(!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=E(e.client.policyContainer)}else{e.policyContainer=u()}}if(!e.headersList.contains("accept",true)){const t="*/*";e.headersList.append("accept",t,true)}if(!e.headersList.contains("accept-language",true)){e.headersList.append("accept-language","*",true)}if(e.priority===null){}if(ee.has(e.destination)){}mainFetch(g).catch(e=>{g.controller.terminate(e)});return g.controller}async function mainFetch(e,t=false){const A=e.request;let s=null;if(A.localURLsOnly&&!H(d(A))){s=r("local URLs only")}p(A);if(Q(A)==="blocked"){s=r("bad port")}if(A.referrerPolicy===""){A.referrerPolicy=A.policyContainer.referrerPolicy}if(A.referrer!=="no-referrer"){A.referrer=D(A)}if(s===null){s=await(async()=>{const t=d(A);if(F(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 r('request mode cannot be "same-origin"')}if(A.mode==="no-cors"){if(A.redirect!=="follow"){return r('redirect mode cannot be "follow" for "no-cors" request')}A.responseTainting="opaque";return await schemeFetch(e)}if(!x(d(A))){return r("URL scheme must be a HTTP(S) scheme")}A.responseTainting="cors";return await httpFetch(e)})()}if(t){return s}if(s.status!==0&&!s.internalResponse){if(A.responseTainting==="cors"){}if(A.responseTainting==="basic"){s=n(s,"basic")}else if(A.responseTainting==="cors"){s=n(s,"cors")}else if(A.responseTainting==="opaque"){s=n(s,"opaque")}else{q(false)}}let i=s.status===0?s:s.internalResponse;if(i.urlList.length===0){i.urlList.push(...A.urlList)}if(!A.timingAllowFailed){s.timingAllowPassed=true}if(s.type==="opaque"&&i.status===206&&i.rangeRequested&&!A.headers.contains("range",true)){s=i=r()}if(s.status!==0&&(A.method==="HEAD"||A.method==="CONNECT"||X.includes(i.status))){i.body=null;e.controller.dump=true}if(A.integrity){const processBodyError=t=>fetchFinale(e,r(t));if(A.responseTainting==="opaque"||s.body==null){processBodyError(s.error);return}const processBody=t=>{if(!g(t,A.integrity)){processBodyError("integrity mismatch");return}s.body=Z(t)[0];fetchFinale(e,s)};await M(s.body,processBody,processBodyError)}else{fetchFinale(e,s)}}function schemeFetch(e){if(N(e)&&e.request.redirectCount===0){return Promise.resolve(s(e))}const{request:t}=e;const{protocol:n}=d(t);switch(n){case"about:":{return Promise.resolve(r("about scheme is not supported"))}case"blob:":{if(!Be){Be=A(4573).resolveObjectURL}const e=d(t);if(e.search.length!==0){return Promise.resolve(r("NetworkError when attempting to fetch resource."))}const s=Be(e.toString());if(t.method!=="GET"||!S(s)){return Promise.resolve(r("invalid method"))}const n=i();const o=s.size;const a=v(`${o}`);const c=s.type;if(!t.headersList.contains("range",true)){const e=z(s);n.statusText="OK";n.body=e[0];n.headersList.set("content-length",a,true);n.headersList.set("content-type",c,true)}else{n.rangeRequested=true;const e=t.headersList.get("range",true);const A=J(e,true);if(A==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}let{rangeStartValue:i,rangeEndValue:a}=A;if(i===null){i=o-a;a=i+a-1}else{if(i>=o){return Promise.resolve(r("Range start is greater than the blob's size."))}if(a===null||a>=o){a=o-1}}const l=s.slice(i,a,c);const h=z(l);n.body=h[0];const g=v(`${l.size}`);const u=_(i,a,o);n.status=206;n.statusText="Partial Content";n.headersList.set("content-length",g,true);n.headersList.set("content-type",c,true);n.headersList.set("content-range",u,true)}return Promise.resolve(n)}case"data:":{const e=d(t);const A=ce(e);if(A==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}const s=le(A.mimeType);return Promise.resolve(i({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:Z(A.body)[0]}))}case"file:":{return Promise.resolve(r("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(e).catch(e=>r(e))}default:{return Promise.resolve(r("unknown scheme"))}}}function finalizeResponse(e,t){e.request.done=true;if(e.processResponseDone!=null){queueMicrotask(()=>e.processResponseDone(t))}}function fetchFinale(e,t){let A=e.timingInfo;const processResponseEndOfBody=()=>{const r=Date.now();if(e.request.destination==="document"){e.controller.fullTimingInfo=A}e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:"){return}A.endTime=r;let s=t.cacheState;const n=t.bodyInfo;if(!t.timingAllowPassed){A=w(A);s=""}let i=0;if(e.request.mode!=="navigator"||!t.hasCrossOriginRedirects){i=t.status;const e=O(t.headersList);if(e!=="failure"){n.contentType=he(e)}}if(e.request.initiatorType!=null){Ie(A,e.request.url.href,e.request.initiatorType,globalThis,s,n,i)}};const processResponseEndOfBodyTask=()=>{e.request.done=true;if(e.processResponseEndOfBody!=null){queueMicrotask(()=>e.processResponseEndOfBody(t))}if(e.request.initiatorType!=null){e.controller.reportTimingSteps()}};queueMicrotask(()=>processResponseEndOfBodyTask())};if(e.processResponse!=null){queueMicrotask(()=>{e.processResponse(t);e.processResponse=null})}const r=t.type==="error"?t:t.internalResponse??t;if(r.body==null){processResponseEndOfBody()}else{se(r.body.stream,()=>{processResponseEndOfBody()})}}async function httpFetch(e){const t=e.request;let A=null;let s=null;const n=e.timingInfo;if(t.serviceWorkers==="all"){}if(A===null){if(t.redirect==="follow"){t.serviceWorkers="none"}s=A=await httpNetworkOrCacheFetch(e);if(t.responseTainting==="cors"&&m(t,A)==="failure"){return r("cors failure")}if(C(t,A)==="failure"){t.timingAllowFailed=true}}if((t.responseTainting==="opaque"||A.type==="opaque")&&R(t.origin,t.client,t.destination,s)==="blocked"){return r("blocked")}if(K.has(s.status)){if(t.redirect!=="manual"){e.controller.connection.destroy(undefined,false)}if(t.redirect==="error"){A=r("unexpected redirect")}else if(t.redirect==="manual"){A=s}else if(t.redirect==="follow"){A=await httpRedirectFetch(e,A)}else{q(false)}}A.timingInfo=n;return A}function httpRedirectFetch(e,t){const A=e.request;const s=t.internalResponse?t.internalResponse:t;let n;try{n=I(s,d(A).hash);if(n==null){return t}}catch(e){return Promise.resolve(r(e))}if(!x(n)){return Promise.resolve(r("URL scheme must be a HTTP(S) scheme"))}if(A.redirectCount===20){return Promise.resolve(r("redirect count exceeded"))}A.redirectCount+=1;if(A.mode==="cors"&&(n.username||n.password)&&!F(A,n)){return Promise.resolve(r('cross origin not allowed for request mode "cors"'))}if(A.responseTainting==="cors"&&(n.username||n.password)){return Promise.resolve(r('URL cannot contain credentials for request mode "cors"'))}if(s.status!==303&&A.body!=null&&A.body.source==null){return Promise.resolve(r())}if([301,302].includes(s.status)&&A.method==="POST"||s.status===303&&!Qe.includes(A.method)){A.method="GET";A.body=null;for(const e of $){A.headersList.delete(e)}}if(!F(d(A),n)){A.headersList.delete("authorization",true);A.headersList.delete("proxy-authorization",true);A.headersList.delete("cookie",true);A.headersList.delete("host",true)}if(A.body!=null){q(A.body.source!=null);A.body=Z(A.body.source)[0]}const i=e.timingInfo;i.redirectEndTime=i.postRedirectStartTime=b(e.crossOriginIsolatedCapability);if(i.redirectStartTime===0){i.redirectStartTime=i.startTime}A.urlList.push(n);f(A,s);return mainFetch(e,true)}async function httpNetworkOrCacheFetch(e,t=false,A=false){const n=e.request;let i=null;let o=null;let a=null;const c=null;const h=false;if(n.window==="no-window"&&n.redirect==="error"){i=e;o=n}else{o=l(n);i={...e};i.request=o}const g=n.credentials==="include"||n.credentials==="same-origin"&&n.responseTainting==="basic";const u=o.body?o.body.length:null;let E=null;if(o.body==null&&["POST","PUT"].includes(o.method)){E="0"}if(u!=null){E=v(`${u}`)}if(E!=null){o.headersList.append("content-length",E,true)}if(u!=null&&o.keepalive){}if(o.referrer instanceof URL){o.headersList.append("referer",v(o.referrer.href),true)}B(o);y(o);if(!o.headersList.contains("user-agent",true)){o.headersList.append("user-agent",Ce)}if(o.cache==="default"&&(o.headersList.contains("if-modified-since",true)||o.headersList.contains("if-none-match",true)||o.headersList.contains("if-unmodified-since",true)||o.headersList.contains("if-match",true)||o.headersList.contains("if-range",true))){o.cache="no-store"}if(o.cache==="no-cache"&&!o.preventNoCacheCacheControlHeaderModification&&!o.headersList.contains("cache-control",true)){o.headersList.append("cache-control","max-age=0",true)}if(o.cache==="no-store"||o.cache==="reload"){if(!o.headersList.contains("pragma",true)){o.headersList.append("pragma","no-cache",true)}if(!o.headersList.contains("cache-control",true)){o.headersList.append("cache-control","no-cache",true)}}if(o.headersList.contains("range",true)){o.headersList.append("accept-encoding","identity",true)}if(!o.headersList.contains("accept-encoding",true)){if(G(d(o))){o.headersList.append("accept-encoding","br, gzip, deflate",true)}else{o.headersList.append("accept-encoding","gzip, deflate",true)}}o.headersList.delete("host",true);if(g){}if(c==null){o.cache="no-store"}if(o.cache!=="no-store"&&o.cache!=="reload"){}if(a==null){if(o.cache==="only-if-cached"){return r("only if cached")}const e=await httpNetworkFetch(i,g,A);if(!j.has(o.method)&&e.status>=200&&e.status<=399){}if(h&&e.status===304){}if(a==null){a=e}}a.urlList=[...o.urlList];if(o.headersList.contains("range",true)){a.rangeRequested=true}a.requestIncludesCredentials=g;if(a.status===407){if(n.window==="no-window"){return r()}if(N(e)){return s(e)}return r("proxy authentication required")}if(a.status===421&&!A&&(n.body==null||n.body.source!=null)){if(N(e)){return s(e)}e.controller.connection.destroy();a=await httpNetworkOrCacheFetch(e,t,true)}if(t){}return a}async function httpNetworkFetch(e,t=false,A=false){q(!e.controller.connection||e.controller.connection.destroyed);e.controller.connection={abort:null,destroyed:false,destroy(e,t=true){if(!this.destroyed){this.destroyed=true;if(t){this.abort?.(e??new DOMException("The operation was aborted.","AbortError"))}}}};const n=e.request;let o=null;const c=e.timingInfo;const l=null;if(l==null){n.cache="no-store"}const g=A?"yes":"no";if(n.mode==="websocket"){}else{}let u=null;if(n.body==null&&e.processRequestEndOfBody){queueMicrotask(()=>e.processRequestEndOfBody())}else if(n.body!=null){const processBodyChunk=async function*(t){if(N(e)){return}yield t;e.processRequestBodyChunkLength?.(t.byteLength)};const processEndOfBody=()=>{if(N(e)){return}if(e.processRequestEndOfBody){e.processRequestEndOfBody()}};const processBodyError=t=>{if(N(e)){return}if(t.name==="AbortError"){e.controller.abort()}else{e.controller.terminate(t)}};u=async function*(){try{for await(const e of n.body.stream){yield*processBodyChunk(e)}processEndOfBody()}catch(e){processBodyError(e)}}()}try{const{body:t,status:A,statusText:r,headersList:s,socket:n}=await dispatch({body:u});if(n){o=i({status:A,statusText:r,headersList:s,socket:n})}else{const n=t[Symbol.asyncIterator]();e.controller.next=()=>n.next();o=i({status:A,statusText:r,headersList:s})}}catch(t){if(t.name==="AbortError"){e.controller.connection.destroy();return s(e,t)}return r(t)}const pullAlgorithm=async()=>{await e.controller.resume()};const cancelAlgorithm=t=>{if(!N(e)){e.controller.abort(t)}};const E=new ReadableStream({async start(t){e.controller.controller=t},async pull(e){await pullAlgorithm(e)},async cancel(e){await cancelAlgorithm(e)},type:"bytes"});o.body={stream:E,source:null,length:null};e.controller.onAborted=onAborted;e.controller.on("terminated",onAborted);e.controller.resume=async()=>{while(true){let t;let A;try{const{done:A,value:r}=await e.controller.next();if(U(e)){break}t=A?undefined:r}catch(r){if(e.controller.ended&&!c.encodedBodySize){t=undefined}else{t=r;A=true}}if(t===undefined){L(e.controller.controller);finalizeResponse(e,o);return}c.decodedBodySize+=t?.byteLength??0;if(A){e.controller.terminate(t);return}const r=new Uint8Array(t);if(r.byteLength){e.controller.controller.enqueue(r)}if(ie(E)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0){return}}};function onAborted(t){if(U(e)){o.aborted=true;if(oe(E)){e.controller.controller.error(e.controller.serializedAbortReason)}}else{if(oe(E)){e.controller.controller.error(new TypeError("terminated",{cause:T(t)?t:undefined}))}}e.controller.connection.destroy()}return o;function dispatch({body:t}){const A=d(n);const r=e.controller.dispatcher;return new Promise((s,i)=>r.dispatch({path:A.pathname+A.search,origin:A.origin,method:n.method,body:r.isMockActive?n.body&&(n.body.source||n.body.stream):t,headers:n.headersList.entries,maxRedirections:0,upgrade:n.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(t){const{connection:A}=e.controller;c.finalConnectionTimingInfo=Y(undefined,c.postRedirectStartTime,e.crossOriginIsolatedCapability);if(A.destroyed){t(new DOMException("The operation was aborted.","AbortError"))}else{e.controller.on("terminated",t);this.abort=A.abort=t}c.finalNetworkRequestStartTime=b(e.crossOriginIsolatedCapability)},onResponseStarted(){c.finalNetworkResponseStartTime=b(e.crossOriginIsolatedCapability)},onHeaders(e,t,A,r){if(e<200){return}let o="";const c=new a;for(let e=0;eA){i(new Error(`too many content-encodings in response: ${t.length}, maximum allowed is ${A}`));return true}for(let e=t.length-1;e>=0;--e){const A=t[e].trim();if(A==="x-gzip"||A==="gzip"){l.push(h.createGunzip({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}))}else if(A==="deflate"){l.push(V({flush:h.constants.Z_SYNC_FLUSH,finishFlush:h.constants.Z_SYNC_FLUSH}))}else if(A==="br"){l.push(h.createBrotliDecompress({flush:h.constants.BROTLI_OPERATION_FLUSH,finishFlush:h.constants.BROTLI_OPERATION_FLUSH}))}else{l.length=0;break}}}const u=this.onError.bind(this);s({status:e,statusText:r,headersList:c,body:l.length?re(this.body,...l,e=>{if(e){this.onError(e)}}).on("error",u):this.body.on("error",u)});return true},onData(t){if(e.controller.dump){return}const A=t;c.encodedBodySize+=A.byteLength;return this.body.push(A)},onComplete(){if(this.abort){e.controller.off("terminated",this.abort)}if(e.controller.onAborted){e.controller.off("terminated",e.controller.onAborted)}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);i(t)},onUpgrade(e,t,A){if(e!==101){return}const r=new a;for(let e=0;e{const{extractBody:r,mixinBody:s,cloneBody:n,bodyUnusable:i}=A(4492);const{Headers:o,fill:a,HeadersList:c,setHeadersGuard:l,getHeadersGuard:h,setHeadersList:g,getHeadersList:u}=A(660);const{FinalizationRegistry:E}=A(6653)();const Q=A(3440);const C=A(7975);const{isValidHTTPToken:B,sameOrigin:I,environmentSettingsObject:d}=A(3168);const{forbiddenMethodsSet:f,corsSafeListedMethodsSet:p,referrerPolicy:w,requestRedirect:y,requestMode:m,requestCredentials:R,requestCache:D,requestDuplex:b}=A(4495);const{kEnumerableProperty:k,normalizedMethodRecordsBase:S,normalizedMethodRecords:F}=Q;const{kHeaders:N,kSignal:U,kState:T,kDispatcher:M}=A(3627);const{webidl:L}=A(5893);const{URLSerializer:v}=A(1900);const{kConstruct:H}=A(6443);const x=A(4589);const{getMaxListeners:G,setMaxListeners:Y,getEventListeners:J,defaultMaxListeners:_}=A(8474);const V=Symbol("abortController");const O=new E(({signal:e,abort:t})=>{e.removeEventListener("abort",t)});const P=new WeakMap;function buildAbort(e){return abort;function abort(){const t=e.deref();if(t!==undefined){O.unregister(abort);this.removeEventListener("abort",abort);t.abort(this.reason);const e=P.get(t.signal);if(e!==undefined){if(e.size!==0){for(const t of e){const e=t.deref();if(e!==undefined){e.abort(this.reason)}}e.clear()}P.delete(t.signal)}}}}let W=false;class Request{constructor(e,t={}){L.util.markAsUncloneable(this);if(e===H){return}const A="Request constructor";L.argumentLengthCheck(arguments,1,A);e=L.converters.RequestInfo(e,A,"input");t=L.converters.RequestInit(t,A,"init");let s=null;let n=null;const h=d.settingsObject.baseUrl;let E=null;if(typeof e==="string"){this[M]=t.dispatcher;let A;try{A=new URL(e,h)}catch(t){throw new TypeError("Failed to parse URL from "+e,{cause:t})}if(A.username||A.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+e)}s=makeRequest({urlList:[A]});n="cors"}else{this[M]=t.dispatcher||e[M];x(e instanceof Request);s=e[T];E=e[U]}const C=d.settingsObject.origin;let w="client";if(s.window?.constructor?.name==="EnvironmentSettingsObject"&&I(s.window,C)){w=s.window}if(t.window!=null){throw new TypeError(`'window' option '${w}' must be null`)}if("window"in t){w="no-window"}s=makeRequest({method:s.method,headersList:s.headersList,unsafeRequest:s.unsafeRequest,client:d.settingsObject,window:w,priority:s.priority,origin:s.origin,referrer:s.referrer,referrerPolicy:s.referrerPolicy,mode:s.mode,credentials:s.credentials,cache:s.cache,redirect:s.redirect,integrity:s.integrity,keepalive:s.keepalive,reloadNavigation:s.reloadNavigation,historyNavigation:s.historyNavigation,urlList:[...s.urlList]});const y=Object.keys(t).length!==0;if(y){if(s.mode==="navigate"){s.mode="same-origin"}s.reloadNavigation=false;s.historyNavigation=false;s.origin="client";s.referrer="client";s.referrerPolicy="";s.url=s.urlList[s.urlList.length-1];s.urlList=[s.url]}if(t.referrer!==undefined){const e=t.referrer;if(e===""){s.referrer="no-referrer"}else{let t;try{t=new URL(e,h)}catch(t){throw new TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}if(t.protocol==="about:"&&t.hostname==="client"||C&&!I(t,d.settingsObject.baseUrl)){s.referrer="client"}else{s.referrer=t}}}if(t.referrerPolicy!==undefined){s.referrerPolicy=t.referrerPolicy}let m;if(t.mode!==undefined){m=t.mode}else{m=n}if(m==="navigate"){throw L.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(m!=null){s.mode=m}if(t.credentials!==undefined){s.credentials=t.credentials}if(t.cache!==undefined){s.cache=t.cache}if(s.cache==="only-if-cached"&&s.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(t.redirect!==undefined){s.redirect=t.redirect}if(t.integrity!=null){s.integrity=String(t.integrity)}if(t.keepalive!==undefined){s.keepalive=Boolean(t.keepalive)}if(t.method!==undefined){let e=t.method;const A=F[e];if(A!==undefined){s.method=A}else{if(!B(e)){throw new TypeError(`'${e}' is not a valid HTTP method.`)}const t=e.toUpperCase();if(f.has(t)){throw new TypeError(`'${e}' HTTP method is unsupported.`)}e=S[t]??e;s.method=e}if(!W&&s.method==="patch"){process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"});W=true}}if(t.signal!==undefined){E=t.signal}this[T]=s;const R=new AbortController;this[U]=R.signal;if(E!=null){if(!E||typeof E.aborted!=="boolean"||typeof E.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(E.aborted){R.abort(E.reason)}else{this[V]=R;const e=new WeakRef(R);const t=buildAbort(e);try{if(typeof G==="function"&&G(E)===_){Y(1500,E)}else if(J(E,"abort").length>=_){Y(1500,E)}}catch{}Q.addAbortListener(E,t);O.register(R,{signal:E,abort:t},t)}}this[N]=new o(H);g(this[N],s.headersList);l(this[N],"request");if(m==="no-cors"){if(!p.has(s.method)){throw new TypeError(`'${s.method} is unsupported in no-cors mode.`)}l(this[N],"request-no-cors")}if(y){const e=u(this[N]);const A=t.headers!==undefined?t.headers:new c(e);e.clear();if(A instanceof c){for(const{name:t,value:r}of A.rawValues()){e.append(t,r,false)}e.cookies=A.cookies}else{a(this[N],A)}}const D=e instanceof Request?e[T].body:null;if((t.body!=null||D!=null)&&(s.method==="GET"||s.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let b=null;if(t.body!=null){const[e,A]=r(t.body,s.keepalive);b=e;if(A&&!u(this[N]).contains("content-type",true)){this[N].append("content-type",A)}}const k=b??D;if(k!=null&&k.source==null){if(b!=null&&t.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(s.mode!=="same-origin"&&s.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}s.useCORSPreflightFlag=true}let v=k;if(b==null&&D!=null){if(i(e)){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}const t=new TransformStream;D.stream.pipeThrough(t);v={source:D.source,length:D.length,stream:t.readable}}this[T].body=v}get method(){L.brandCheck(this,Request);return this[T].method}get url(){L.brandCheck(this,Request);return v(this[T].url)}get headers(){L.brandCheck(this,Request);return this[N]}get destination(){L.brandCheck(this,Request);return this[T].destination}get referrer(){L.brandCheck(this,Request);if(this[T].referrer==="no-referrer"){return""}if(this[T].referrer==="client"){return"about:client"}return this[T].referrer.toString()}get referrerPolicy(){L.brandCheck(this,Request);return this[T].referrerPolicy}get mode(){L.brandCheck(this,Request);return this[T].mode}get credentials(){return this[T].credentials}get cache(){L.brandCheck(this,Request);return this[T].cache}get redirect(){L.brandCheck(this,Request);return this[T].redirect}get integrity(){L.brandCheck(this,Request);return this[T].integrity}get keepalive(){L.brandCheck(this,Request);return this[T].keepalive}get isReloadNavigation(){L.brandCheck(this,Request);return this[T].reloadNavigation}get isHistoryNavigation(){L.brandCheck(this,Request);return this[T].historyNavigation}get signal(){L.brandCheck(this,Request);return this[U]}get body(){L.brandCheck(this,Request);return this[T].body?this[T].body.stream:null}get bodyUsed(){L.brandCheck(this,Request);return!!this[T].body&&Q.isDisturbed(this[T].body.stream)}get duplex(){L.brandCheck(this,Request);return"half"}clone(){L.brandCheck(this,Request);if(i(this)){throw new TypeError("unusable")}const e=cloneRequest(this[T]);const t=new AbortController;if(this.signal.aborted){t.abort(this.signal.reason)}else{let e=P.get(this.signal);if(e===undefined){e=new Set;P.set(this.signal,e)}const A=new WeakRef(t);e.add(A);Q.addAbortListener(t.signal,buildAbort(A))}return fromInnerRequest(e,t.signal,h(this[N]))}[C.inspect.custom](e,t){if(t.depth===null){t.depth=2}t.colors??=true;const A={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${C.formatWithOptions(t,A)}`}}s(Request);function makeRequest(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??false,unsafeRequest:e.unsafeRequest??false,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??false,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??false,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??false,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??false,historyNavigation:e.historyNavigation??false,userActivation:e.userActivation??false,taintedOrigin:e.taintedOrigin??false,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??false,done:e.done??false,timingAllowFailed:e.timingAllowFailed??false,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new c(e.headersList):new c}}function cloneRequest(e){const t=makeRequest({...e,body:null});if(e.body!=null){t.body=n(t,e.body)}return t}function fromInnerRequest(e,t,A){const r=new Request(H);r[T]=e;r[U]=t;r[N]=new o(H);g(r[N],e.headersList);l(r[N],A);return r}Object.defineProperties(Request.prototype,{method:k,url:k,headers:k,redirect:k,clone:k,signal:k,duplex:k,destination:k,body:k,bodyUsed:k,isHistoryNavigation:k,isReloadNavigation:k,keepalive:k,integrity:k,cache:k,credentials:k,attribute:k,referrerPolicy:k,referrer:k,mode:k,[Symbol.toStringTag]:{value:"Request",configurable:true}});L.converters.Request=L.interfaceConverter(Request);L.converters.RequestInfo=function(e,t,A){if(typeof e==="string"){return L.converters.USVString(e,t,A)}if(e instanceof Request){return L.converters.Request(e,t,A)}return L.converters.USVString(e,t,A)};L.converters.AbortSignal=L.interfaceConverter(AbortSignal);L.converters.RequestInit=L.dictionaryConverter([{key:"method",converter:L.converters.ByteString},{key:"headers",converter:L.converters.HeadersInit},{key:"body",converter:L.nullableConverter(L.converters.BodyInit)},{key:"referrer",converter:L.converters.USVString},{key:"referrerPolicy",converter:L.converters.DOMString,allowedValues:w},{key:"mode",converter:L.converters.DOMString,allowedValues:m},{key:"credentials",converter:L.converters.DOMString,allowedValues:R},{key:"cache",converter:L.converters.DOMString,allowedValues:D},{key:"redirect",converter:L.converters.DOMString,allowedValues:y},{key:"integrity",converter:L.converters.DOMString},{key:"keepalive",converter:L.converters.boolean},{key:"signal",converter:L.nullableConverter(e=>L.converters.AbortSignal(e,"RequestInit","signal",{strict:false}))},{key:"window",converter:L.converters.any},{key:"duplex",converter:L.converters.DOMString,allowedValues:b},{key:"dispatcher",converter:L.converters.any}]);e.exports={Request:Request,makeRequest:makeRequest,fromInnerRequest:fromInnerRequest,cloneRequest:cloneRequest}},9051:(e,t,A)=>{const{Headers:r,HeadersList:s,fill:n,getHeadersGuard:i,setHeadersGuard:o,setHeadersList:a}=A(660);const{extractBody:c,cloneBody:l,mixinBody:h,hasFinalizationRegistry:g,streamRegistry:u,bodyUnusable:E}=A(4492);const Q=A(3440);const C=A(7975);const{kEnumerableProperty:B}=Q;const{isValidReasonPhrase:I,isCancelled:d,isAborted:f,isBlobLike:p,serializeJavascriptValueToJSONString:w,isErrorLike:y,isomorphicEncode:m,environmentSettingsObject:R}=A(3168);const{redirectStatusSet:D,nullBodyStatus:b}=A(4495);const{kState:k,kHeaders:S}=A(3627);const{webidl:F}=A(5893);const{FormData:N}=A(5910);const{URLSerializer:U}=A(1900);const{kConstruct:T}=A(6443);const M=A(4589);const{types:L}=A(7975);const v=new TextEncoder("utf-8");class Response{static error(){const e=fromInnerResponse(makeNetworkError(),"immutable");return e}static json(e,t={}){F.argumentLengthCheck(arguments,1,"Response.json");if(t!==null){t=F.converters.ResponseInit(t)}const A=v.encode(w(e));const r=c(A);const s=fromInnerResponse(makeResponse({}),"response");initializeResponse(s,t,{body:r[0],type:"application/json"});return s}static redirect(e,t=302){F.argumentLengthCheck(arguments,1,"Response.redirect");e=F.converters.USVString(e);t=F.converters["unsigned short"](t);let A;try{A=new URL(e,R.settingsObject.baseUrl)}catch(t){throw new TypeError(`Failed to parse URL from ${e}`,{cause:t})}if(!D.has(t)){throw new RangeError(`Invalid status code ${t}`)}const r=fromInnerResponse(makeResponse({}),"immutable");r[k].status=t;const s=m(U(A));r[k].headersList.append("location",s,true);return r}constructor(e=null,t={}){F.util.markAsUncloneable(this);if(e===T){return}if(e!==null){e=F.converters.BodyInit(e)}t=F.converters.ResponseInit(t);this[k]=makeResponse({});this[S]=new r(T);o(this[S],"response");a(this[S],this[k].headersList);let A=null;if(e!=null){const[t,r]=c(e);A={body:t,type:r}}initializeResponse(this,t,A)}get type(){F.brandCheck(this,Response);return this[k].type}get url(){F.brandCheck(this,Response);const e=this[k].urlList;const t=e[e.length-1]??null;if(t===null){return""}return U(t,true)}get redirected(){F.brandCheck(this,Response);return this[k].urlList.length>1}get status(){F.brandCheck(this,Response);return this[k].status}get ok(){F.brandCheck(this,Response);return this[k].status>=200&&this[k].status<=299}get statusText(){F.brandCheck(this,Response);return this[k].statusText}get headers(){F.brandCheck(this,Response);return this[S]}get body(){F.brandCheck(this,Response);return this[k].body?this[k].body.stream:null}get bodyUsed(){F.brandCheck(this,Response);return!!this[k].body&&Q.isDisturbed(this[k].body.stream)}clone(){F.brandCheck(this,Response);if(E(this)){throw F.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const e=cloneResponse(this[k]);if(g&&this[k].body?.stream){u.register(this,new WeakRef(this[k].body.stream))}return fromInnerResponse(e,i(this[S]))}[C.inspect.custom](e,t){if(t.depth===null){t.depth=2}t.colors??=true;const A={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${C.formatWithOptions(t,A)}`}}h(Response);Object.defineProperties(Response.prototype,{type:B,url:B,status:B,ok:B,redirected:B,statusText:B,headers:B,clone:B,body:B,bodyUsed:B,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:B,redirect:B,error:B});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=l(t,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 s(e?.headersList):new s,urlList:e?.urlList?[...e.urlList]:[]}}function makeNetworkError(e){const t=y(e);return makeResponse({type:"error",status:0,error:t?e:new Error(e?String(e):e),aborted:e&&e.name==="AbortError"})}function isNetworkError(e){return e.type==="error"&&e.status===0}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,r){M(!(A in t));e[A]=r;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{M(false)}}function makeAppropriateNetworkError(e,t=null){M(d(e));return f(e)?makeNetworkError(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:t})):makeNetworkError(Object.assign(new DOMException("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(!I(String(t.statusText))){throw new TypeError("Invalid statusText")}}if("status"in t&&t.status!=null){e[k].status=t.status}if("statusText"in t&&t.statusText!=null){e[k].statusText=t.statusText}if("headers"in t&&t.headers!=null){n(e[S],t.headers)}if(A){if(b.includes(e.status)){throw F.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`})}e[k].body=A.body;if(A.type!=null&&!e[k].headersList.contains("content-type",true)){e[k].headersList.append("content-type",A.type,true)}}}function fromInnerResponse(e,t){const A=new Response(T);A[k]=e;A[S]=new r(T);a(A[S],e.headersList);o(A[S],t);if(g&&e.body?.stream){u.register(A,new WeakRef(e.body.stream))}return A}F.converters.ReadableStream=F.interfaceConverter(ReadableStream);F.converters.FormData=F.interfaceConverter(N);F.converters.URLSearchParams=F.interfaceConverter(URLSearchParams);F.converters.XMLHttpRequestBodyInit=function(e,t,A){if(typeof e==="string"){return F.converters.USVString(e,t,A)}if(p(e)){return F.converters.Blob(e,t,A,{strict:false})}if(ArrayBuffer.isView(e)||L.isArrayBuffer(e)){return F.converters.BufferSource(e,t,A)}if(Q.isFormDataLike(e)){return F.converters.FormData(e,t,A,{strict:false})}if(e instanceof URLSearchParams){return F.converters.URLSearchParams(e,t,A)}return F.converters.DOMString(e,t,A)};F.converters.BodyInit=function(e,t,A){if(e instanceof ReadableStream){return F.converters.ReadableStream(e,t,A)}if(e?.[Symbol.asyncIterator]){return e}return F.converters.XMLHttpRequestBodyInit(e,t,A)};F.converters.ResponseInit=F.dictionaryConverter([{key:"status",converter:F.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:F.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:F.converters.HeadersInit}]);e.exports={isNetworkError:isNetworkError,makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse,fromInnerResponse:fromInnerResponse}},3627:e=>{e.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}},3168:(e,t,A)=>{const{Transform:r}=A(7075);const s=A(8522);const{redirectStatusSet:n,referrerPolicySet:i,badPortsSet:o}=A(4495);const{getGlobalOrigin:a}=A(1059);const{collectASequenceOfCodePoints:c,collectAnHTTPQuotedString:l,removeChars:h,parseMIMEType:g}=A(1900);const{performance:u}=A(643);const{isBlobLike:E,ReadableStreamFrom:Q,isValidHTTPToken:C,normalizedMethodRecordsBase:B}=A(3440);const I=A(4589);const{isUint8Array:d}=A(3429);const{webidl:f}=A(5893);let p=[];let w;try{w=A(7598);const e=["sha256","sha384","sha512"];p=w.getHashes().filter(t=>e.includes(t))}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(!n.has(e.status)){return null}let A=e.headersList.get("location",true);if(A!==null&&isValidHeaderValue(A)){if(!isValidEncodedURL(A)){A=normalizeBinaryStringToUtf8(A)}A=new URL(A,responseURL(e))}if(A&&!A.hash){A.hash=t}return A}function isValidEncodedURL(e){for(let t=0;t126||A<32){return false}}return true}function normalizeBinaryStringToUtf8(e){return Buffer.from(e,"binary").toString("utf8")}function requestCurrentURL(e){return e.urlList[e.urlList.length-1]}function requestBadPort(e){const t=requestCurrentURL(e);if(urlIsHttpHttpsScheme(t)&&o.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}const y=C;function isValidHeaderValue(e){return(e[0]==="\t"||e[0]===" "||e[e.length-1]==="\t"||e[e.length-1]===" "||e.includes("\n")||e.includes("\r")||e.includes("\0"))===false}function setRequestReferrerPolicyOnRedirect(e,t){const{headersList:A}=t;const r=(A.get("referrer-policy",true)??"").split(",");let s="";if(r.length>0){for(let e=r.length;e!==0;e--){const t=r[e-1].trim();if(i.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,true)}function appendRequestOriginHeader(e){let t=e.origin;if(t==="client"||t===undefined){return}if(e.responseTainting==="cors"||e.mode==="websocket"){e.headersList.append("origin",t,true)}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:}e.headersList.append("origin",t,true)}}function coarsenTime(e,t){return e}function clampAndCoarsenConnectionTimingInfo(e,t,A){if(!e?.startTime||e.startTime4096){r=s}const n=sameOrigin(e,r);const i=isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(e.url);switch(t){case"origin":return s!=null?s:stripURLForReferrer(A,true);case"unsafe-url":return r;case"same-origin":return n?s:"no-referrer";case"origin-when-cross-origin":return n?r:s;case"strict-origin-when-cross-origin":{const t=requestCurrentURL(e);if(sameOrigin(r,t)){return r}if(isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(t)){return"no-referrer"}return s}case"strict-origin":case"no-referrer-when-downgrade":default:return i?"no-referrer":s}}function stripURLForReferrer(e,t){I(e instanceof URL);e=new URL(e);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(w===undefined){return true}const A=parseMetadata(t);if(A==="no metadata"){return true}if(A.length===0){return true}const r=getStrongestMetadata(A);const s=filterMetadataListByAlgorithm(A,r);for(const t of s){const A=t.algo;const r=t.hash;let s=w.createHash(A).update(e).digest("base64");if(s[s.length-1]==="="){if(s[s.length-2]==="="){s=s.slice(0,-2)}else{s=s.slice(0,-1)}}if(compareBase64Mixed(s,r)){return true}}return false}const m=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function parseMetadata(e){const t=[];let A=true;for(const r of e.split(" ")){A=false;const e=m.exec(r);if(e===null||e.groups===undefined||e.groups.algo===undefined){continue}const s=e.groups.algo.toLowerCase();if(p.includes(s)){t.push(e.groups)}}if(A===true){return"no metadata"}return t}function getStrongestMetadata(e){let t=e[0].algo;if(t[3]==="5"){return t}for(let A=1;A{e=A;t=r});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 B[e.toLowerCase()]??e}function serializeJavascriptValueToJSONString(e){const t=JSON.stringify(e);if(t===undefined){throw new TypeError("Value is not JSON serializable")}I(typeof t==="string");return t}const R=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function createIterator(e,t,A=0,r=1){class FastIterableIterator{#q;#Z;#z;constructor(e,t){this.#q=e;this.#Z=t;this.#z=0}next(){if(typeof this!=="object"||this===null||!(#q in this)){throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`)}const s=this.#z;const n=this.#q[t];const i=n.length;if(s>=i){return{value:undefined,done:true}}const{[A]:o,[r]:a}=n[s];this.#z=s+1;let c;switch(this.#Z){case"key":c=o;break;case"value":c=a;break;case"key+value":c=[o,a];break}return{value:c,done:false}}}delete FastIterableIterator.prototype.constructor;Object.setPrototypeOf(FastIterableIterator.prototype,R);Object.defineProperties(FastIterableIterator.prototype,{[Symbol.toStringTag]:{writable:false,enumerable:false,configurable:true,value:`${e} Iterator`},next:{writable:true,enumerable:true,configurable:true}});return function(e,t){return new FastIterableIterator(e,t)}}function iteratorMixin(e,t,A,r=0,s=1){const n=createIterator(e,A,r,s);const i={keys:{writable:true,enumerable:true,configurable:true,value:function keys(){f.brandCheck(this,t);return n(this,"key")}},values:{writable:true,enumerable:true,configurable:true,value:function values(){f.brandCheck(this,t);return n(this,"value")}},entries:{writable:true,enumerable:true,configurable:true,value:function entries(){f.brandCheck(this,t);return n(this,"key+value")}},forEach:{writable:true,enumerable:true,configurable:true,value:function forEach(A,r=globalThis){f.brandCheck(this,t);f.argumentLengthCheck(arguments,1,`${e}.forEach`);if(typeof A!=="function"){throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`)}for(const{0:e,1:t}of n(this,"key+value")){A.call(r,t,e,this)}}}};return Object.defineProperties(t.prototype,{...i,[Symbol.iterator]:{writable:true,enumerable:false,configurable:true,value:i.entries.value}})}async function fullyReadBody(e,t,A){const r=t;const s=A;let n;try{n=e.stream.getReader()}catch(e){s(e);return}try{r(await readAllBytes(n))}catch(e){s(e)}}function isReadableStreamLike(e){return e instanceof ReadableStream||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee==="function"}function readableStreamClose(e){try{e.close();e.byobRequest?.respond(0)}catch(e){if(!e.message.includes("Controller is already closed")&&!e.message.includes("ReadableStream is already closed")){throw e}}}const D=/[^\x00-\xFF]/;function isomorphicEncode(e){I(!D.test(e));return e}async function readAllBytes(e){const t=[];let A=0;while(true){const{done:r,value:s}=await e.read();if(r){return Buffer.concat(t,A)}if(!d(s)){throw new TypeError("Received non-Uint8Array chunk")}t.push(s);A+=s.length}}function urlIsLocal(e){I("protocol"in e);const t=e.protocol;return t==="about:"||t==="blob:"||t==="data:"}function urlHasHttpsScheme(e){return typeof e==="string"&&e[5]===":"&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&e[4]==="s"||e.protocol==="https:"}function urlIsHttpHttpsScheme(e){I("protocol"in e);const t=e.protocol;return t==="http:"||t==="https:"}function simpleRangeHeaderValue(e,t){const A=e;if(!A.startsWith("bytes")){return"failure"}const r={position:5};if(t){c(e=>e==="\t"||e===" ",A,r)}if(A.charCodeAt(r.position)!==61){return"failure"}r.position++;if(t){c(e=>e==="\t"||e===" ",A,r)}const s=c(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57},A,r);const n=s.length?Number(s):null;if(t){c(e=>e==="\t"||e===" ",A,r)}if(A.charCodeAt(r.position)!==45){return"failure"}r.position++;if(t){c(e=>e==="\t"||e===" ",A,r)}const i=c(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57},A,r);const o=i.length?Number(i):null;if(r.positiono){return"failure"}return{rangeStartValue:n,rangeEndValue:o}}function buildContentRange(e,t,A){let r="bytes ";r+=isomorphicEncode(`${e}`);r+="-";r+=isomorphicEncode(`${t}`);r+="/";r+=isomorphicEncode(`${A}`);return r}class InflateStream extends r{#K;constructor(e){super();this.#K=e}_transform(e,t,A){if(!this._inflateStream){if(e.length===0){A();return}this._inflateStream=(e[0]&15)===8?s.createInflate(this.#K):s.createInflateRaw(this.#K);this._inflateStream.on("data",this.push.bind(this));this._inflateStream.on("end",()=>this.push(null));this._inflateStream.on("error",e=>this.destroy(e))}this._inflateStream.write(e,t,A)}_final(e){if(this._inflateStream){this._inflateStream.end();this._inflateStream=null}e()}}function createInflate(e){return new InflateStream(e)}function extractMimeType(e){let t=null;let A=null;let r=null;const s=getDecodeSplit("content-type",e);if(s===null){return"failure"}for(const e of s){const s=g(e);if(s==="failure"||s.essence==="*/*"){continue}r=s;if(r.essence!==A){t=null;if(r.parameters.has("charset")){t=r.parameters.get("charset")}A=r.essence}else if(!r.parameters.has("charset")&&t!==null){r.parameters.set("charset",t)}}if(r==null){return"failure"}return r}function gettingDecodingSplitting(e){const t=e;const A={position:0};const r=[];let s="";while(A.positione!=='"'&&e!==",",t,A);if(A.positione===9||e===32);r.push(s);s=""}return r}function getDecodeSplit(e,t){const A=t.get(e,true);if(A===null){return null}return gettingDecodingSplitting(A)}const b=new TextDecoder;function utf8DecodeBytes(e){if(e.length===0){return""}if(e[0]===239&&e[1]===187&&e[2]===191){e=e.subarray(3)}const t=b.decode(e);return t}class EnvironmentSettingsObjectBase{get baseUrl(){return a()}get origin(){return this.baseUrl?.origin}policyContainer=makePolicyContainer()}class EnvironmentSettingsObject{settingsObject=new EnvironmentSettingsObjectBase}const k=new EnvironmentSettingsObject;e.exports={isAborted:isAborted,isCancelled:isCancelled,isValidEncodedURL:isValidEncodedURL,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:Q,tryUpgradeRequestToAPotentiallyTrustworthyURL:tryUpgradeRequestToAPotentiallyTrustworthyURL,clampAndCoarsenConnectionTimingInfo:clampAndCoarsenConnectionTimingInfo,coarsenedSharedCurrentTime:coarsenedSharedCurrentTime,determineRequestsReferrer:determineRequestsReferrer,makePolicyContainer:makePolicyContainer,clonePolicyContainer:clonePolicyContainer,appendFetchMetadata:appendFetchMetadata,appendRequestOriginHeader:appendRequestOriginHeader,TAOCheck:TAOCheck,corsCheck:corsCheck,crossOriginResourcePolicyCheck:crossOriginResourcePolicyCheck,createOpaqueTimingInfo:createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect:setRequestReferrerPolicyOnRedirect,isValidHTTPToken:C,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:E,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,iteratorMixin:iteratorMixin,createIterator:createIterator,isValidHeaderName:y,isValidHeaderValue:isValidHeaderValue,isErrorLike:isErrorLike,fullyReadBody:fullyReadBody,bytesMatch:bytesMatch,isReadableStreamLike:isReadableStreamLike,readableStreamClose:readableStreamClose,isomorphicEncode:isomorphicEncode,urlIsLocal:urlIsLocal,urlHasHttpsScheme:urlHasHttpsScheme,urlIsHttpHttpsScheme:urlIsHttpHttpsScheme,readAllBytes:readAllBytes,simpleRangeHeaderValue:simpleRangeHeaderValue,buildContentRange:buildContentRange,parseMetadata:parseMetadata,createInflate:createInflate,extractMimeType:extractMimeType,getDecodeSplit:getDecodeSplit,utf8DecodeBytes:utf8DecodeBytes,environmentSettingsObject:k}},5893:(e,t,A)=>{const{types:r,inspect:s}=A(7975);const{markAsUncloneable:n}=A(5919);const{toUSVString:i}=A(3440);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){if(A?.strict!==false){if(!(e instanceof t)){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}else{if(e?.[Symbol.toStringTag]!==t.prototype[Symbol.toStringTag]){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}};o.argumentLengthCheck=function({length:e},t,A){if(e{});o.util.ConvertToInt=function(e,t,A,r){let s;let n;if(t===64){s=Math.pow(2,53)-1;if(A==="unsigned"){n=0}else{n=Math.pow(-2,53)+1}}else if(A==="unsigned"){n=0;s=Math.pow(2,t)-1}else{n=Math.pow(-2,t)-1;s=Math.pow(2,t-1)-1}let i=Number(e);if(i===0){i=0}if(r?.enforceRange===true){if(Number.isNaN(i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY){throw o.errors.exception({header:"Integer conversion",message:`Could not convert ${o.util.Stringify(e)} to an integer.`})}i=o.util.IntegerPart(i);if(is){throw o.errors.exception({header:"Integer conversion",message:`Value must be between ${n}-${s}, got ${i}.`})}return i}if(!Number.isNaN(i)&&r?.clamp===true){i=Math.min(Math.max(i,n),s);if(Math.floor(i)%2===0){i=Math.floor(i)}else{i=Math.ceil(i)}return i}if(Number.isNaN(i)||i===0&&Object.is(0,i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY){return 0}i=o.util.IntegerPart(i);i=i%Math.pow(2,t);if(A==="signed"&&i>=Math.pow(2,t)-1){return i-Math.pow(2,t)}return i};o.util.IntegerPart=function(e){const t=Math.floor(Math.abs(e));if(e<0){return-1*t}return t};o.util.Stringify=function(e){const t=o.util.Type(e);switch(t){case"Symbol":return`Symbol(${e.description})`;case"Object":return s(e);case"String":return`"${e}"`;default:return`${e}`}};o.sequenceConverter=function(e){return(t,A,r,s)=>{if(o.util.Type(t)!=="Object"){throw o.errors.exception({header:A,message:`${r} (${o.util.Stringify(t)}) is not iterable.`})}const n=typeof s==="function"?s():t?.[Symbol.iterator]?.();const i=[];let a=0;if(n===undefined||typeof n.next!=="function"){throw o.errors.exception({header:A,message:`${r} is not iterable.`})}while(true){const{done:t,value:s}=n.next();if(t){break}i.push(e(s,A,`${r}[${a++}]`))}return i}};o.recordConverter=function(e,t){return(A,s,n)=>{if(o.util.Type(A)!=="Object"){throw o.errors.exception({header:s,message:`${n} ("${o.util.Type(A)}") is not an Object.`})}const i={};if(!r.isProxy(A)){const r=[...Object.getOwnPropertyNames(A),...Object.getOwnPropertySymbols(A)];for(const o of r){const r=e(o,s,n);const a=t(A[o],s,n);i[r]=a}return i}const a=Reflect.ownKeys(A);for(const r of a){const o=Reflect.getOwnPropertyDescriptor(A,r);if(o?.enumerable){const o=e(r,s,n);const a=t(A[r],s,n);i[o]=a}}return i}};o.interfaceConverter=function(e){return(t,A,r,s)=>{if(s?.strict!==false&&!(t instanceof e)){throw o.errors.exception({header:A,message:`Expected ${r} ("${o.util.Stringify(t)}") to be an instance of ${e.name}.`})}return t}};o.dictionaryConverter=function(e){return(t,A,r)=>{const s=o.util.Type(t);const n={};if(s==="Null"||s==="Undefined"){return n}else if(s!=="Object"){throw o.errors.exception({header:A,message:`Expected ${t} to be one of: Null, Undefined, Object.`})}for(const s of e){const{key:e,defaultValue:i,required:a,converter:c}=s;if(a===true){if(!Object.hasOwn(t,e)){throw o.errors.exception({header:A,message:`Missing required key "${e}".`})}}let l=t[e];const h=Object.hasOwn(s,"defaultValue");if(h&&l!==null){l??=i()}if(a||h||l!==undefined){l=c(l,A,`${r}.${e}`);if(s.allowedValues&&!s.allowedValues.includes(l)){throw o.errors.exception({header:A,message:`${l} is not an accepted type. Expected one of ${s.allowedValues.join(", ")}.`})}n[e]=l}}return n}};o.nullableConverter=function(e){return(t,A,r)=>{if(t===null){return t}return e(t,A,r)}};o.converters.DOMString=function(e,t,A,r){if(e===null&&r?.legacyNullToEmptyString){return""}if(typeof e==="symbol"){throw o.errors.exception({header:t,message:`${A} is a symbol, which cannot be converted to a DOMString.`})}return String(e)};o.converters.ByteString=function(e,t,A){const r=o.converters.DOMString(e,t,A);for(let e=0;e255){throw new TypeError("Cannot convert argument to a ByteString because the character at "+`index ${e} has a value of ${r.charCodeAt(e)} which is greater than 255.`)}}return r};o.converters.USVString=i;o.converters.boolean=function(e){const t=Boolean(e);return t};o.converters.any=function(e){return e};o.converters["long long"]=function(e,t,A){const r=o.util.ConvertToInt(e,64,"signed",undefined,t,A);return r};o.converters["unsigned long long"]=function(e,t,A){const r=o.util.ConvertToInt(e,64,"unsigned",undefined,t,A);return r};o.converters["unsigned long"]=function(e,t,A){const r=o.util.ConvertToInt(e,32,"unsigned",undefined,t,A);return r};o.converters["unsigned short"]=function(e,t,A,r){const s=o.util.ConvertToInt(e,16,"unsigned",r,t,A);return s};o.converters.ArrayBuffer=function(e,t,A,s){if(o.util.Type(e)!=="Object"||!r.isAnyArrayBuffer(e)){throw o.errors.conversionFailed({prefix:t,argument:`${A} ("${o.util.Stringify(e)}")`,types:["ArrayBuffer"]})}if(s?.allowShared===false&&r.isSharedArrayBuffer(e)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.resizable||e.growable){throw o.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};o.converters.TypedArray=function(e,t,A,s,n){if(o.util.Type(e)!=="Object"||!r.isTypedArray(e)||e.constructor.name!==t.name){throw o.errors.conversionFailed({prefix:A,argument:`${s} ("${o.util.Stringify(e)}")`,types:[t.name]})}if(n?.allowShared===false&&r.isSharedArrayBuffer(e.buffer)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.buffer.resizable||e.buffer.growable){throw o.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};o.converters.DataView=function(e,t,A,s){if(o.util.Type(e)!=="Object"||!r.isDataView(e)){throw o.errors.exception({header:t,message:`${A} is not a DataView.`})}if(s?.allowShared===false&&r.isSharedArrayBuffer(e.buffer)){throw o.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.buffer.resizable||e.buffer.growable){throw o.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};o.converters.BufferSource=function(e,t,A,s){if(r.isAnyArrayBuffer(e)){return o.converters.ArrayBuffer(e,t,A,{...s,allowShared:false})}if(r.isTypedArray(e)){return o.converters.TypedArray(e,e.constructor,t,A,{...s,allowShared:false})}if(r.isDataView(e)){return o.converters.DataView(e,t,A,{...s,allowShared:false})}throw o.errors.conversionFailed({prefix:t,argument:`${A} ("${o.util.Stringify(e)}")`,types:["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}},2607: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}},8355:(e,t,A)=>{const{staticPropertyDescriptors:r,readOperation:s,fireAProgressEvent:n}=A(3610);const{kState:i,kError:o,kResult:a,kEvents:c,kAborted:l}=A(961);const{webidl:h}=A(5893);const{kEnumerableProperty:g}=A(3440);class FileReader extends EventTarget{constructor(){super();this[i]="empty";this[a]=null;this[o]=null;this[c]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(e){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer");e=h.converters.Blob(e,{strict:false});s(this,e,"ArrayBuffer")}readAsBinaryString(e){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString");e=h.converters.Blob(e,{strict:false});s(this,e,"BinaryString")}readAsText(e,t=undefined){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsText");e=h.converters.Blob(e,{strict:false});if(t!==undefined){t=h.converters.DOMString(t,"FileReader.readAsText","encoding")}s(this,e,"Text",t)}readAsDataURL(e){h.brandCheck(this,FileReader);h.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL");e=h.converters.Blob(e,{strict:false});s(this,e,"DataURL")}abort(){if(this[i]==="empty"||this[i]==="done"){this[a]=null;return}if(this[i]==="loading"){this[i]="done";this[a]=null}this[l]=true;n("abort",this);if(this[i]!=="loading"){n("loadend",this)}}get readyState(){h.brandCheck(this,FileReader);switch(this[i]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){h.brandCheck(this,FileReader);return this[a]}get error(){h.brandCheck(this,FileReader);return this[o]}get onloadend(){h.brandCheck(this,FileReader);return this[c].loadend}set onloadend(e){h.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(){h.brandCheck(this,FileReader);return this[c].error}set onerror(e){h.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(){h.brandCheck(this,FileReader);return this[c].loadstart}set onloadstart(e){h.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(){h.brandCheck(this,FileReader);return this[c].progress}set onprogress(e){h.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(){h.brandCheck(this,FileReader);return this[c].load}set onload(e){h.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(){h.brandCheck(this,FileReader);return this[c].abort}set onabort(e){h.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:r,LOADING:r,DONE:r,readAsArrayBuffer:g,readAsBinaryString:g,readAsText:g,readAsDataURL:g,abort:g,readyState:g,result:g,error:g,onloadstart:g,onprogress:g,onload:g,onabort:g,onerror:g,onloadend:g,[Symbol.toStringTag]:{value:"FileReader",writable:false,enumerable:false,configurable:true}});Object.defineProperties(FileReader,{EMPTY:r,LOADING:r,DONE:r});e.exports={FileReader:FileReader}},8573:(e,t,A)=>{const{webidl:r}=A(5893);const s=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(e,t={}){e=r.converters.DOMString(e,"ProgressEvent constructor","type");t=r.converters.ProgressEventInit(t??{});super(e,t);this[s]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){r.brandCheck(this,ProgressEvent);return this[s].lengthComputable}get loaded(){r.brandCheck(this,ProgressEvent);return this[s].loaded}get total(){r.brandCheck(this,ProgressEvent);return this[s].total}}r.converters.ProgressEventInit=r.dictionaryConverter([{key:"lengthComputable",converter:r.converters.boolean,defaultValue:()=>false},{key:"loaded",converter:r.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:r.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:r.converters.boolean,defaultValue:()=>false},{key:"cancelable",converter:r.converters.boolean,defaultValue:()=>false},{key:"composed",converter:r.converters.boolean,defaultValue:()=>false}]);e.exports={ProgressEvent:ProgressEvent}},961: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")}},3610:(e,t,A)=>{const{kState:r,kError:s,kResult:n,kAborted:i,kLastProgressEventFired:o}=A(961);const{ProgressEvent:a}=A(8573);const{getEncoding:c}=A(2607);const{serializeAMimeType:l,parseMIMEType:h}=A(1900);const{types:g}=A(7975);const{StringDecoder:u}=A(3193);const{btoa:E}=A(4573);const Q={enumerable:true,writable:false,configurable:false};function readOperation(e,t,A,a){if(e[r]==="loading"){throw new DOMException("Invalid state","InvalidStateError")}e[r]="loading";e[n]=null;e[s]=null;const c=t.stream();const l=c.getReader();const h=[];let u=l.read();let E=true;(async()=>{while(!e[i]){try{const{done:c,value:Q}=await u;if(E&&!e[i]){queueMicrotask(()=>{fireAProgressEvent("loadstart",e)})}E=false;if(!c&&g.isUint8Array(Q)){h.push(Q);if((e[o]===undefined||Date.now()-e[o]>=50)&&!e[i]){e[o]=Date.now();queueMicrotask(()=>{fireAProgressEvent("progress",e)})}u=l.read()}else if(c){queueMicrotask(()=>{e[r]="done";try{const r=packageData(h,A,t.type,a);if(e[i]){return}e[n]=r;fireAProgressEvent("load",e)}catch(t){e[s]=t;fireAProgressEvent("error",e)}if(e[r]!=="loading"){fireAProgressEvent("loadend",e)}});break}}catch(t){if(e[i]){return}queueMicrotask(()=>{e[r]="done";e[s]=t;fireAProgressEvent("error",e);if(e[r]!=="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,r){switch(t){case"DataURL":{let t="data:";const r=h(A||"application/octet-stream");if(r!=="failure"){t+=l(r)}t+=";base64,";const s=new u("latin1");for(const A of e){t+=E(s.write(A))}t+=E(s.end());return t}case"Text":{let t="failure";if(r){t=c(r)}if(t==="failure"&&A){const e=h(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 u("latin1");for(const r of e){t+=A.write(r)}t+=A.end();return t}}}function decode(e,t){const A=combineByteSequences(e);const r=BOMSniffing(A);let s=0;if(r!==null){t=r;s=r==="UTF-8"?3:2}const n=A.slice(s);return new TextDecoder(t).decode(n)}function BOMSniffing(e){const[t,A,r]=e;if(t===239&&A===187&&r===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:Q,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},6897:(e,t,A)=>{const{uid:r,states:s,sentCloseFrameState:n,emptyBuffer:i,opcodes:o}=A(736);const{kReadyState:a,kSentClose:c,kByteParser:l,kReceivedClose:h,kResponse:g}=A(1216);const{fireEvent:u,failWebsocketConnection:E,isClosing:Q,isClosed:C,isEstablished:B,parseExtensions:I}=A(8625);const{channels:d}=A(2414);const{CloseEvent:f}=A(5188);const{makeRequest:p}=A(9967);const{fetching:w}=A(4398);const{Headers:y,getHeadersList:m}=A(660);const{getDecodeSplit:R}=A(3168);const{WebsocketFrameSend:D}=A(3264);let b;try{b=A(7598)}catch{}function establishWebSocketConnection(e,t,A,s,n,i){const o=e;o.protocol=e.protocol==="ws:"?"http:":"https:";const a=p({urlList:[o],client:A,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(i.headers){const e=m(new y(i.headers));a.headersList=e}const c=b.randomBytes(16).toString("base64");a.headersList.append("sec-websocket-key",c);a.headersList.append("sec-websocket-version","13");for(const e of t){a.headersList.append("sec-websocket-protocol",e)}const l="permessage-deflate; client_max_window_bits";a.headersList.append("sec-websocket-extensions",l);const h=w({request:a,useParallelQueue:true,dispatcher:i.dispatcher,processResponse(e){if(e.type==="error"||e.status!==101){E(s,"Received network error or non-101 status code.");return}if(t.length!==0&&!e.headersList.get("Sec-WebSocket-Protocol")){E(s,"Server did not respond with sent protocols.");return}if(e.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){E(s,'Server did not set Upgrade header to "websocket".');return}if(e.headersList.get("Connection")?.toLowerCase()!=="upgrade"){E(s,'Server did not set Connection header to "upgrade".');return}const A=e.headersList.get("Sec-WebSocket-Accept");const i=b.createHash("sha1").update(c+r).digest("base64");if(A!==i){E(s,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const o=e.headersList.get("Sec-WebSocket-Extensions");let l;if(o!==null){l=I(o);if(!l.has("permessage-deflate")){E(s,"Sec-WebSocket-Extensions header does not match.");return}}const h=e.headersList.get("Sec-WebSocket-Protocol");if(h!==null){const e=R("sec-websocket-protocol",a.headersList);if(e===null||!e.includes(h)){E(s,"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(d.open.hasSubscribers){d.open.publish({address:e.socket.address(),protocol:h,extensions:o})}n(e,l)}});return h}function closeWebSocketConnection(e,t,A,r){if(Q(e)||C(e)){}else if(!B(e)){E(e,"Connection was closed before it was established.");e[a]=s.CLOSING}else if(e[c]===n.NOT_SENT){e[c]=n.PROCESSING;const l=new D;if(t!==undefined&&A===undefined){l.frameData=Buffer.allocUnsafe(2);l.frameData.writeUInt16BE(t,0)}else if(t!==undefined&&A!==undefined){l.frameData=Buffer.allocUnsafe(2+r);l.frameData.writeUInt16BE(t,0);l.frameData.write(A,2,"utf-8")}else{l.frameData=i}const h=e[g].socket;h.write(l.createFrame(o.CLOSE));e[c]=n.SENT;e[a]=s.CLOSING}else{e[a]=s.CLOSING}}function onSocketData(e){if(!this.ws[l].write(e)){this.pause()}}function onSocketClose(){const{ws:e}=this;const{[g]:t}=e;t.socket.off("data",onSocketData);t.socket.off("close",onSocketClose);t.socket.off("error",onSocketError);const A=e[c]===n.SENT&&e[h];let r=1005;let i="";const o=e[l].closingInfo;if(o&&!o.error){r=o.code??1005;i=o.reason}else if(!e[h]){r=1006}e[a]=s.CLOSED;u("close",e,(e,t)=>new f(e,t),{wasClean:A,code:r,reason:i});if(d.close.hasSubscribers){d.close.publish({websocket:e,code:r,reason:i})}}function onSocketError(e){const{ws:t}=this;t[a]=s.CLOSING;if(d.socketError.hasSubscribers){d.socketError.publish(e)}this.destroy()}e.exports={establishWebSocketConnection:establishWebSocketConnection,closeWebSocketConnection:closeWebSocketConnection}},736:e=>{const t="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const A={enumerable:true,writable:false,configurable:false};const r={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const s={NOT_SENT:0,PROCESSING:1,SENT:2};const n={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};const i=2**16-1;const o={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};const a=Buffer.allocUnsafe(0);const c={string:1,typedArray:2,arrayBuffer:3,blob:4};e.exports={uid:t,sentCloseFrameState:s,staticPropertyDescriptors:A,states:r,opcodes:n,maxUnsigned16Bit:i,parserStates:o,emptyBuffer:a,sendHints:c}},5188:(e,t,A)=>{const{webidl:r}=A(5893);const{kEnumerableProperty:s}=A(3440);const{kConstruct:n}=A(6443);const{MessagePort:i}=A(5919);class MessageEvent extends Event{#X;constructor(e,t={}){if(e===n){super(arguments[1],arguments[2]);r.util.markAsUncloneable(this);return}const A="MessageEvent constructor";r.argumentLengthCheck(arguments,1,A);e=r.converters.DOMString(e,A,"type");t=r.converters.MessageEventInit(t,A,"eventInitDict");super(e,t);this.#X=t;r.util.markAsUncloneable(this)}get data(){r.brandCheck(this,MessageEvent);return this.#X.data}get origin(){r.brandCheck(this,MessageEvent);return this.#X.origin}get lastEventId(){r.brandCheck(this,MessageEvent);return this.#X.lastEventId}get source(){r.brandCheck(this,MessageEvent);return this.#X.source}get ports(){r.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#X.ports)){Object.freeze(this.#X.ports)}return this.#X.ports}initMessageEvent(e,t=false,A=false,s=null,n="",i="",o=null,a=[]){r.brandCheck(this,MessageEvent);r.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent");return new MessageEvent(e,{bubbles:t,cancelable:A,data:s,origin:n,lastEventId:i,source:o,ports:a})}static createFastMessageEvent(e,t){const A=new MessageEvent(n,e,t);A.#X=t;A.#X.data??=null;A.#X.origin??="";A.#X.lastEventId??="";A.#X.source??=null;A.#X.ports??=[];return A}}const{createFastMessageEvent:o}=MessageEvent;delete MessageEvent.createFastMessageEvent;class CloseEvent extends Event{#X;constructor(e,t={}){const A="CloseEvent constructor";r.argumentLengthCheck(arguments,1,A);e=r.converters.DOMString(e,A,"type");t=r.converters.CloseEventInit(t);super(e,t);this.#X=t;r.util.markAsUncloneable(this)}get wasClean(){r.brandCheck(this,CloseEvent);return this.#X.wasClean}get code(){r.brandCheck(this,CloseEvent);return this.#X.code}get reason(){r.brandCheck(this,CloseEvent);return this.#X.reason}}class ErrorEvent extends Event{#X;constructor(e,t){const A="ErrorEvent constructor";r.argumentLengthCheck(arguments,1,A);super(e,t);r.util.markAsUncloneable(this);e=r.converters.DOMString(e,A,"type");t=r.converters.ErrorEventInit(t??{});this.#X=t}get message(){r.brandCheck(this,ErrorEvent);return this.#X.message}get filename(){r.brandCheck(this,ErrorEvent);return this.#X.filename}get lineno(){r.brandCheck(this,ErrorEvent);return this.#X.lineno}get colno(){r.brandCheck(this,ErrorEvent);return this.#X.colno}get error(){r.brandCheck(this,ErrorEvent);return this.#X.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:s,origin:s,lastEventId:s,source:s,ports:s,initMessageEvent:s});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:s,code:s,wasClean:s});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:s,filename:s,lineno:s,colno:s,error:s});r.converters.MessagePort=r.interfaceConverter(i);r.converters["sequence"]=r.sequenceConverter(r.converters.MessagePort);const a=[{key:"bubbles",converter:r.converters.boolean,defaultValue:()=>false},{key:"cancelable",converter:r.converters.boolean,defaultValue:()=>false},{key:"composed",converter:r.converters.boolean,defaultValue:()=>false}];r.converters.MessageEventInit=r.dictionaryConverter([...a,{key:"data",converter:r.converters.any,defaultValue:()=>null},{key:"origin",converter:r.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:r.converters.DOMString,defaultValue:()=>""},{key:"source",converter:r.nullableConverter(r.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:r.converters["sequence"],defaultValue:()=>new Array(0)}]);r.converters.CloseEventInit=r.dictionaryConverter([...a,{key:"wasClean",converter:r.converters.boolean,defaultValue:()=>false},{key:"code",converter:r.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:r.converters.USVString,defaultValue:()=>""}]);r.converters.ErrorEventInit=r.dictionaryConverter([...a,{key:"message",converter:r.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:r.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:r.converters.any}]);e.exports={MessageEvent:MessageEvent,CloseEvent:CloseEvent,ErrorEvent:ErrorEvent,createFastMessageEvent:o}},3264:(e,t,A)=>{const{maxUnsigned16Bit:r}=A(736);const s=16386;let n;let i=null;let o=s;try{n=A(7598)}catch{n={randomFillSync:function randomFillSync(e,t,A){for(let t=0;tr){i+=8;n=127}else if(s>125){i+=2;n=126}const o=Buffer.allocUnsafe(s+i);o[0]=o[1]=0;o[0]|=128;o[0]=(o[0]&240)+e; -/*! ws. MIT License. Einar Otto Stangvik */o[i-4]=A[0];o[i-3]=A[1];o[i-2]=A[2];o[i-1]=A[3];o[1]=n;if(n===126){o.writeUInt16BE(s,2)}else if(n===127){o[2]=o[3]=0;o.writeUIntBE(s,4,6)}o[1]|=128;for(let e=0;e{const{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:s}=A(8522);const{isValidClientWindowBits:n}=A(8625);const{MessageSizeExceededError:i}=A(8707);const o=Buffer.from([0,0,255,255]);const a=Symbol("kBuffer");const c=Symbol("kLength");class PerMessageDeflate{#j;#Q={};#$=0;constructor(e,t){this.#Q.serverNoContextTakeover=e.has("server_no_context_takeover");this.#Q.serverMaxWindowBits=e.get("server_max_window_bits");this.#$=t.maxPayloadSize}decompress(e,t,A){if(!this.#j){let e=s;if(this.#Q.serverMaxWindowBits){if(!n(this.#Q.serverMaxWindowBits)){A(new Error("Invalid server_max_window_bits"));return}e=Number.parseInt(this.#Q.serverMaxWindowBits)}try{this.#j=r({windowBits:e})}catch(e){A(e);return}this.#j[a]=[];this.#j[c]=0;this.#j.on("data",e=>{this.#j[c]+=e.length;if(this.#$>0&&this.#j[c]>this.#$){A(new i);this.#j.removeAllListeners();this.#j.destroy();this.#j=null;return}this.#j[a].push(e)});this.#j.on("error",e=>{this.#j=null;A(e)})}this.#j.write(e);if(t){this.#j.write(o)}this.#j.flush(()=>{if(!this.#j){return}const e=Buffer.concat(this.#j[a],this.#j[c]);this.#j[a].length=0;this.#j[c]=0;A(null,e)})}}e.exports={PerMessageDeflate:PerMessageDeflate}},1652:(e,t,A)=>{const{Writable:r}=A(7075);const s=A(4589);const{parserStates:n,opcodes:i,states:o,emptyBuffer:a,sentCloseFrameState:c}=A(736);const{kReadyState:l,kSentClose:h,kResponse:g,kReceivedClose:u}=A(1216);const{channels:E}=A(2414);const{isValidStatusCode:Q,isValidOpcode:C,failWebsocketConnection:B,websocketMessageReceived:I,utf8Decode:d,isControlFrame:f,isTextBinaryFrame:p,isContinuationFrame:w}=A(8625);const{WebsocketFrameSend:y}=A(3264);const{closeWebSocketConnection:m}=A(6897);const{PerMessageDeflate:R}=A(9469);const{MessageSizeExceededError:D}=A(8707);function failWebsocketConnectionWithCode(e,t,A){m(e,t,A,Buffer.byteLength(A));B(e,A)}class ByteParser extends r{#ee=[];#te=0;#Ae=0;#re=false;#w=n.INFO;#se={};#ne=[];#ie;#oe;#$;constructor(e,t,A={}){super();this.ws=e;this.#ie=t==null?new Map:t;this.#oe=A.maxFragments??0;this.#$=A.maxPayloadSize??0;if(this.#ie.has("permessage-deflate")){this.#ie.set("permessage-deflate",new R(t,A))}}_write(e,t,A){this.#ee.push(e);this.#Ae+=e.length;this.#re=true;this.run(A)}#ae(){if(this.#$>0&&!f(this.#se.opcode)&&this.#se.payloadLength+this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(e){while(this.#re){if(this.#w===n.INFO){if(this.#Ae<2){return e()}const t=this.consume(2);const A=(t[0]&128)!==0;const r=t[0]&15;const s=(t[1]&128)===128;const o=!A&&r!==i.CONTINUATION;const a=t[1]&127;const c=t[0]&64;const l=t[0]&32;const h=t[0]&16;if(!C(r)){B(this.ws,"Invalid opcode received");return e()}if(s){B(this.ws,"Frame cannot be masked");return e()}if(c!==0&&!this.#ie.has("permessage-deflate")){B(this.ws,"Expected RSV1 to be clear.");return}if(l!==0||h!==0){B(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(o&&!p(r)){B(this.ws,"Invalid frame type was fragmented.");return}if(p(r)&&this.#ne.length>0){B(this.ws,"Expected continuation frame");return}if(this.#se.fragmented&&o){B(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((a>125||o)&&f(r)){B(this.ws,"Control frame either too large or fragmented");return}if(w(r)&&this.#ne.length===0&&!this.#se.compressed){B(this.ws,"Unexpected continuation frame");return}if(a<=125){this.#se.payloadLength=a;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(a===126){this.#w=n.PAYLOADLENGTH_16}else if(a===127){this.#w=n.PAYLOADLENGTH_64}if(p(r)){this.#se.binaryType=r;this.#se.compressed=c!==0}this.#se.opcode=r;this.#se.masked=s;this.#se.fin=A;this.#se.fragmented=o}else if(this.#w===n.PAYLOADLENGTH_16){if(this.#Ae<2){return e()}const t=this.consume(2);this.#se.payloadLength=t.readUInt16BE(0);this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.PAYLOADLENGTH_64){if(this.#Ae<8){return e()}const t=this.consume(8);const A=t.readUInt32BE(0);const r=t.readUInt32BE(4);if(A!==0||r>2**31-1){B(this.ws,"Received payload length > 2^31 bytes.");return}this.#se.payloadLength=r;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.READ_DATA){if(this.#Ae0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fragmented&&this.#se.fin){I(this.ws,this.#se.binaryType,this.consumeFragments())}this.#w=n.INFO}else{this.#ie.get("permessage-deflate").decompress(t,this.#se.fin,(t,A)=>{if(t){const e=t instanceof D?1009:1007;failWebsocketConnectionWithCode(this.ws,e,t.message);return}if(!this.writeFragments(A)){return}if(this.#$>0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fin){this.#w=n.INFO;this.#re=true;this.run(e);return}I(this.ws,this.#se.binaryType,this.consumeFragments());this.#re=true;this.#w=n.INFO;this.run(e)});this.#re=false;break}}}}}consume(e){if(e>this.#Ae){throw new Error("Called consume() before buffers satiated.")}else if(e===0){return a}if(this.#ee[0].length===e){this.#Ae-=this.#ee[0].length;return this.#ee.shift()}const t=Buffer.allocUnsafe(e);let A=0;while(A!==e){const r=this.#ee[0];const{length:s}=r;if(s+A===e){t.set(this.#ee.shift(),A);break}else if(s+A>e){t.set(r.subarray(0,e-A),A);this.#ee[0]=r.subarray(e-A);break}else{t.set(this.#ee.shift(),A);A+=r.length}}this.#Ae-=e;return t}writeFragments(e){if(this.#oe>0&&this.#ne.length===this.#oe){failWebsocketConnectionWithCode(this.ws,1008,"Too many message fragments");return false}this.#te+=e.length;this.#ne.push(e);return true}consumeFragments(){const e=this.#ne;if(e.length===1){this.#te=0;return e.shift()}const t=Buffer.concat(e,this.#te);this.#ne=[];this.#te=0;return t}parseCloseBody(e){s(e.length!==1);let t;if(e.length>=2){t=e.readUInt16BE(0)}if(t!==undefined&&!Q(t)){return{code:1002,reason:"Invalid status code",error:true}}let A=e.subarray(2);if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}try{A=d(A)}catch{return{code:1007,reason:"Invalid UTF-8",error:true}}return{code:t,reason:A,error:false}}parseControlFrame(e){const{opcode:t,payloadLength:A}=this.#se;if(t===i.CLOSE){if(A===1){B(this.ws,"Received close frame with a 1-byte body.");return false}this.#se.closeInfo=this.parseCloseBody(e);if(this.#se.closeInfo.error){const{code:e,reason:t}=this.#se.closeInfo;m(this.ws,e,t,t.length);B(this.ws,t);return false}if(this.ws[h]!==c.SENT){let e=a;if(this.#se.closeInfo.code){e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#se.closeInfo.code,0)}const t=new y(e);this.ws[g].socket.write(t.createFrame(i.CLOSE),e=>{if(!e){this.ws[h]=c.SENT}})}this.ws[l]=o.CLOSING;this.ws[u]=true;return false}else if(t===i.PING){if(!this.ws[u]){const t=new y(e);this.ws[g].socket.write(t.createFrame(i.PONG));if(E.ping.hasSubscribers){E.ping.publish({payload:e})}}}else if(t===i.PONG){if(E.pong.hasSubscribers){E.pong.publish({payload:e})}}return true}get closingInfo(){return this.#se.closeInfo}}e.exports={ByteParser:ByteParser}},3900:(e,t,A)=>{const{WebsocketFrameSend:r}=A(3264);const{opcodes:s,sendHints:n}=A(736);const i=A(4660);const o=Buffer[Symbol.species];class SendQueue{#ce=new i;#le=false;#he;constructor(e){this.#he=e}add(e,t,A){if(A!==n.blob){const r=createFrame(e,A);if(!this.#le){this.#he.write(r,t)}else{const e={promise:null,callback:t,frame:r};this.#ce.push(e)}return}const r={promise:e.arrayBuffer().then(e=>{r.promise=null;r.frame=createFrame(e,A)}),callback:t,frame:null};this.#ce.push(r);if(!this.#le){this.#ge()}}async#ge(){this.#le=true;const e=this.#ce;while(!e.isEmpty()){const t=e.shift();if(t.promise!==null){await t.promise}this.#he.write(t.frame,t.callback);t.callback=t.frame=null}this.#le=false}}function createFrame(e,t){return new r(toBuffer(e,t)).createFrame(t===n.string?s.TEXT:s.BINARY)}function toBuffer(e,t){switch(t){case n.string:return Buffer.from(e);case n.arrayBuffer:case n.blob:return new o(e);case n.typedArray:return new o(e.buffer,e.byteOffset,e.byteLength)}}e.exports={SendQueue:SendQueue}},1216: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")}},8625:(e,t,A)=>{const{kReadyState:r,kController:s,kResponse:n,kBinaryType:i,kWebSocketURL:o}=A(1216);const{states:a,opcodes:c}=A(736);const{ErrorEvent:l,createFastMessageEvent:h}=A(5188);const{isUtf8:g}=A(4573);const{collectASequenceOfCodePointsFast:u,removeHTTPWhitespace:E}=A(1900);function isConnecting(e){return e[r]===a.CONNECTING}function isEstablished(e){return e[r]===a.OPEN}function isClosing(e){return e[r]===a.CLOSING}function isClosed(e){return e[r]===a.CLOSED}function fireEvent(e,t,A=(e,t)=>new Event(e,t),r={}){const s=A(e,r);t.dispatchEvent(s)}function websocketMessageReceived(e,t,A){if(e[r]!==a.OPEN){return}let s;if(t===c.TEXT){try{s=B(A)}catch{failWebsocketConnection(e,"Received invalid UTF-8 in text frame.");return}}else if(t===c.BINARY){if(e[i]==="blob"){s=new Blob([A])}else{s=toArrayBuffer(A)}}fireEvent("message",e,h,{origin:e[o].origin,data:s})}function toArrayBuffer(e){if(e.byteLength===e.buffer.byteLength){return e.buffer}return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function isValidSubprotocol(e){if(e.length===0){return false}for(let t=0;t126||A===34||A===40||A===41||A===44||A===47||A===58||A===59||A===60||A===61||A===62||A===63||A===64||A===91||A===92||A===93||A===123||A===125){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{[s]:A,[n]:r}=e;A.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(t){fireEvent("error",e,(e,t)=>new l(e,t),{error:new Error(t),message:t})}}function isControlFrame(e){return e===c.CLOSE||e===c.PING||e===c.PONG}function isContinuationFrame(e){return e===c.CONTINUATION}function isTextBinaryFrame(e){return e===c.TEXT||e===c.BINARY}function isValidOpcode(e){return isTextBinaryFrame(e)||isContinuationFrame(e)||isControlFrame(e)}function parseExtensions(e){const t={position:0};const A=new Map;while(t.position57){return false}}const t=Number.parseInt(e,10);return t>=8&&t<=15}const Q=typeof process.versions.icu==="string";const C=Q?new TextDecoder("utf-8",{fatal:true}):undefined;const B=Q?C.decode.bind(C):function(e){if(g(e)){return e.toString("utf-8")}throw new TypeError("Invalid utf-8 received.")};e.exports={isConnecting:isConnecting,isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived,utf8Decode:B,isControlFrame:isControlFrame,isContinuationFrame:isContinuationFrame,isTextBinaryFrame:isTextBinaryFrame,isValidOpcode:isValidOpcode,parseExtensions:parseExtensions,isValidClientWindowBits:isValidClientWindowBits}},3726:(e,t,A)=>{const{webidl:r}=A(5893);const{URLSerializer:s}=A(1900);const{environmentSettingsObject:n}=A(3168);const{staticPropertyDescriptors:i,states:o,sentCloseFrameState:a,sendHints:c}=A(736);const{kWebSocketURL:l,kReadyState:h,kController:g,kBinaryType:u,kResponse:E,kSentClose:Q,kByteParser:C}=A(1216);const{isConnecting:B,isEstablished:I,isClosing:d,isValidSubprotocol:f,fireEvent:p}=A(8625);const{establishWebSocketConnection:w,closeWebSocketConnection:y}=A(6897);const{ByteParser:m}=A(1652);const{kEnumerableProperty:R,isBlobLike:D}=A(3440);const{getGlobalDispatcher:b}=A(2581);const{types:k}=A(7975);const{ErrorEvent:S,CloseEvent:F}=A(5188);const{SendQueue:N}=A(3900);class WebSocket extends EventTarget{#H={open:null,error:null,close:null,message:null};#ue=0;#Ee="";#ie="";#Qe;constructor(e,t=[]){super();r.util.markAsUncloneable(this);const A="WebSocket constructor";r.argumentLengthCheck(arguments,1,A);const s=r.converters["DOMString or sequence or WebSocketInit"](t,A,"options");e=r.converters.USVString(e,A,"url");t=s.protocols;const i=n.settingsObject.baseUrl;let o;try{o=new URL(e,i)}catch(e){throw new DOMException(e,"SyntaxError")}if(o.protocol==="http:"){o.protocol="ws:"}else if(o.protocol==="https:"){o.protocol="wss:"}if(o.protocol!=="ws:"&&o.protocol!=="wss:"){throw new DOMException(`Expected a ws: or wss: protocol, got ${o.protocol}`,"SyntaxError")}if(o.hash||o.href.endsWith("#")){throw new DOMException("Got fragment","SyntaxError")}if(typeof t==="string"){t=[t]}if(t.length!==new Set(t.map(e=>e.toLowerCase())).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(t.length>0&&!t.every(e=>f(e))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[l]=new URL(o.href);const c=n.settingsObject;this[g]=w(o,t,c,this,(e,t)=>this.#Ce(e,t),s);this[h]=WebSocket.CONNECTING;this[Q]=a.NOT_SENT;this[u]="blob"}close(e=undefined,t=undefined){r.brandCheck(this,WebSocket);const A="WebSocket.close";if(e!==undefined){e=r.converters["unsigned short"](e,A,"code",{clamp:true})}if(t!==undefined){t=r.converters.USVString(t,A,"reason")}if(e!==undefined){if(e!==1e3&&(e<3e3||e>4999)){throw new DOMException("invalid code","InvalidAccessError")}}let s=0;if(t!==undefined){s=Buffer.byteLength(t);if(s>123){throw new DOMException(`Reason must be less than 123 bytes; received ${s}`,"SyntaxError")}}y(this,e,t,s)}send(e){r.brandCheck(this,WebSocket);const t="WebSocket.send";r.argumentLengthCheck(arguments,1,t);e=r.converters.WebSocketSendData(e,t,"data");if(B(this)){throw new DOMException("Sent before connected.","InvalidStateError")}if(!I(this)||d(this)){return}if(typeof e==="string"){const t=Buffer.byteLength(e);this.#ue+=t;this.#Qe.add(e,()=>{this.#ue-=t},c.string)}else if(k.isArrayBuffer(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.arrayBuffer)}else if(ArrayBuffer.isView(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.typedArray)}else if(D(e)){this.#ue+=e.size;this.#Qe.add(e,()=>{this.#ue-=e.size},c.blob)}}get readyState(){r.brandCheck(this,WebSocket);return this[h]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#ue}get url(){r.brandCheck(this,WebSocket);return s(this[l])}get extensions(){r.brandCheck(this,WebSocket);return this.#ie}get protocol(){r.brandCheck(this,WebSocket);return this.#Ee}get onopen(){r.brandCheck(this,WebSocket);return this.#H.open}set onopen(e){r.brandCheck(this,WebSocket);if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#H.error}set onerror(e){r.brandCheck(this,WebSocket);if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#H.close}set onclose(e){r.brandCheck(this,WebSocket);if(this.#H.close){this.removeEventListener("close",this.#H.close)}if(typeof e==="function"){this.#H.close=e;this.addEventListener("close",e)}else{this.#H.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#H.message}set onmessage(e){r.brandCheck(this,WebSocket);if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[u]}set binaryType(e){r.brandCheck(this,WebSocket);if(e!=="blob"&&e!=="arraybuffer"){this[u]="blob"}else{this[u]=e}}#Ce(e,t){this[E]=e;const A=this[g]?.dispatcher?.webSocketOptions;const r=A?.maxFragments;const s=A?.maxPayloadSize;const n=new m(this,t,{maxFragments:r,maxPayloadSize:s});n.on("drain",onParserDrain);n.on("error",onParserError.bind(this));e.socket.ws=this;this[C]=n;this.#Qe=new N(e.socket);this[h]=o.OPEN;const i=e.headersList.get("sec-websocket-extensions");if(i!==null){this.#ie=i}const a=e.headersList.get("sec-websocket-protocol");if(a!==null){this.#Ee=a}p("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=o.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=o.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=o.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=o.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i,url:R,readyState:R,bufferedAmount:R,onopen:R,onerror:R,onclose:R,close:R,onmessage:R,binaryType:R,send:R,extensions:R,protocol:R,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i});r.converters["sequence"]=r.sequenceConverter(r.converters.DOMString);r.converters["DOMString or sequence"]=function(e,t,A){if(r.util.Type(e)==="Object"&&Symbol.iterator in e){return r.converters["sequence"](e)}return r.converters.DOMString(e,t,A)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:r.converters.any,defaultValue:()=>b()},{key:"headers",converter:r.nullableConverter(r.converters.HeadersInit)}]);r.converters["DOMString or sequence or WebSocketInit"]=function(e){if(r.util.Type(e)==="Object"&&!(Symbol.iterator in e)){return r.converters.WebSocketInit(e)}return{protocols:r.converters["DOMString or sequence"](e)}};r.converters.WebSocketSendData=function(e){if(r.util.Type(e)==="Object"){if(D(e)){return r.converters.Blob(e,{strict:false})}if(ArrayBuffer.isView(e)||k.isArrayBuffer(e)){return r.converters.BufferSource(e)}}return r.converters.USVString(e)};function onParserDrain(){this.ws[E].socket.resume()}function onParserError(e){let t;let A;if(e instanceof F){t=e.reason;A=e.code}else{t=e.message}p("error",this,()=>new S("error",{error:e,message:t}));y(this,A)}e.exports={WebSocket:WebSocket}},2613:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("assert")},4434:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("events")},8611:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http")},5692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("https")},9278:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("net")},4589:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:assert")},6698:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:async_hooks")},4573:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:buffer")},7540:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:console")},7598:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:crypto")},3053:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:diagnostics_channel")},610:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:dns")},8474:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:events")},7067:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http")},2467:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http2")},7030:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:net")},643:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:perf_hooks")},1792:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:querystring")},7075:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream")},1692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tls")},3136:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:url")},7975:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util")},3429:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util/types")},5919:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:worker_threads")},8522:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:zlib")},2203:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream")},3193:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("string_decoder")},4756:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("tls")},9023:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("util")},6628:(e,t,A)=>{A.a(e,async(e,t)=>{try{var r=A(3218);var s=A(3720);var n=A(9482);var i=A(4508);var o=A(2668);async function main(){const e=(0,n.F9)(r.V4("base_sha",{required:true}),r.V4("head_sha",{required:true}));const t=r.V4("baseline_path");const A=r.V4("fail_on_new").toLowerCase();if(A!==""&&A!=="true"&&A!=="false"){throw new Error("fail_on_new must be true or false")}const a=A==="true";const c=t?await(0,o.mF)(t):undefined;const l=t||a?(0,o.ZY)(e.files.flatMap(e=>e.findings.map(t=>({path:e.path,finding:t}))),c,"git-all"):undefined;let h=0;const g=l?{...e,files:e.files.map(e=>({...e,findings:e.findings.map(()=>l.findings[h++])})),lifecycle:l.counts,resolvedFindings:l.resolvedFindings}:e;const u=g.files.flatMap(e=>e.findings);const E=r.V4("fail_on")||"unreviewed";if(!["never","review","unreviewed"].includes(E)){throw new Error("fail_on must be one of: never, review, unreviewed")}const Q=r.V4("fail_on_risk")||"none";(0,i.p)(Q);const C=g.unreviewed.length>0?"incomplete":u.length>0?"findings":"clean";process.stdout.write("ChangeGuard review completed.\n");r.uH("outcome",C);r.uH("finding_count",String(u.length));r.uH("reviewed_file_count",String(g.reviewedFileCount));r.uH("unreviewed_count",String(g.unreviewedFileCount));r.uH("rule_ids",g.ruleIds.join(","));r.uH("highest_severity",u.length?"review":"none");const B={low:1,medium:2,high:3};const I=u.reduce((e,t)=>{const A=t.riskLevel??"medium";return B[A]>(e==="none"?0:B[e])?A:e},"none");r.uH("highest_risk",I);r.uH("risk_threshold_exceeded",String((0,i.E)(u,Q)));r.uH("new_finding_count",l?String(l.counts.newCount):"");r.uH("existing_finding_count",l?String(l.counts.existingCount):"");r.uH("resolved_finding_count",l?String(l.counts.resolvedCount):"");r.uH("report",JSON.stringify(g));await r.z.addRaw((0,s.B)(g)).write();for(const e of g.files)for(const t of e.findings){r.$e(`${t.ruleId}: ${t.summary}`,{file:e.path,title:`${t.ruleId} (${t.riskLevel??"medium"} risk)`})}if((E!=="never"||a)&&g.unreviewed.length>0){throw new Error("Review incomplete: one or more configurations could not be analyzed.")}if(E==="review"&&u.length>0)throw new Error("Review findings detected.");if((0,i.E)(u,Q))throw new Error(`Review findings meet the ${Q} risk threshold.`);if(a&&(l?.counts.newCount??0)>0)throw new Error("New review findings detected.")}try{await main()}catch(a){r.C1(a instanceof Error?a.message:"Unexpected failure.")}t()}catch(c){t(c)}},1)},2668:(e,t,A)=>{A.d(t,{ZY:()=>classifyFindings,mF:()=>readBaseline});var r=A(7598);const s=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:fs/promises");const n=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:path");const i=1024*1024;const o=1e4;const a=/^[a-f0-9]{64}$/;const c=/^[A-Z0-9][A-Z0-9_-]{0,99}$/;function normaliseRepositoryPath(e){if(!e||e.includes("\0"))throw new Error("Baseline configuration paths must be repository-relative.");const t=e.replaceAll("\\","/");if(t.startsWith("/")||/^[A-Za-z]:/.test(t)||(0,n.isAbsolute)(e)||n.win32.isAbsolute(e)){throw new Error("Baseline configuration paths must be repository-relative.")}const A=t.split("/");if(A.some(e=>e===".."))throw new Error("Baseline configuration paths must not traverse directories.");const r=A.filter(e=>e&&e!==".").join("/");if(!r||r.length>2048||r.includes(":")){throw new Error("Baseline configuration paths must be repository-relative.")}return r}function findingFingerprint(e,t){const A=normaliseRepositoryPath(t);const s=["changeguard-baseline-v1",e.ruleId,A,e.field,e.category??"unspecified",e.riskLevel??"medium",e.summary];return(0,r.createHash)("sha256").update(JSON.stringify(s),"utf8").digest("hex")}function createBaseline(e,t){const A=new Map;for(const e of t){const t=normaliseRepositoryPath(e.path);const r=findingFingerprint(e.finding,t);const s=A.get(r);if(s){s.count++}else{A.set(r,{fingerprint:r,ruleId:e.finding.ruleId,path:t,field:e.finding.field,riskLevel:e.finding.riskLevel??"medium",count:1})}}if(A.size>o)throw new Error("Too many findings for a ChangeGuard baseline.");return{schemaVersion:1,comparisonKind:e,findings:[...A.values()].sort(compareBaselineFinding)}}function compareBaselineFinding(e,t){return e.path.localeCompare(t.path)||e.ruleId.localeCompare(t.ruleId)||e.field.localeCompare(t.field)||e.fingerprint.localeCompare(t.fingerprint)}function validateBaseline(e){if(typeof e!=="object"||e===null||Array.isArray(e))throw new Error("Baseline must be a JSON object.");const t=e;if(t.schemaVersion!==1)throw new Error("Unsupported ChangeGuard baseline schema version.");if(!["configuration-pair","git-file","git-all"].includes(String(t.comparisonKind))){throw new Error("Baseline comparisonKind is invalid.")}if(!Array.isArray(t.findings)||t.findings.length>o){throw new Error("Baseline findings must be a bounded array.")}let A=0;const r=new Set;const s=t.findings.map(e=>{if(typeof e!=="object"||e===null||Array.isArray(e))throw new Error("Baseline finding is invalid.");const t=e;if(typeof t.fingerprint!=="string"||!a.test(t.fingerprint)||r.has(t.fingerprint)){throw new Error("Baseline finding fingerprint is invalid or duplicated.")}if(typeof t.ruleId!=="string"||!c.test(t.ruleId))throw new Error("Baseline finding ruleId is invalid.");if(typeof t.path!=="string"||normaliseRepositoryPath(t.path)!==t.path)throw new Error("Baseline finding path is invalid.");if(typeof t.field!=="string"||!t.field||t.field.length>256||/[\r\n\0]/.test(t.field)){throw new Error("Baseline finding field is invalid.")}if(t.riskLevel!=="low"&&t.riskLevel!=="medium"&&t.riskLevel!=="high"){throw new Error("Baseline finding riskLevel is invalid.")}if(!Number.isSafeInteger(t.count)||t.count<1||t.count>o){throw new Error("Baseline finding count is invalid.")}A+=t.count;if(A>o)throw new Error("Baseline contains too many findings.");r.add(t.fingerprint);return{fingerprint:t.fingerprint,ruleId:t.ruleId,path:t.path,field:t.field,riskLevel:t.riskLevel,count:t.count}});s.sort(compareBaselineFinding);return{schemaVersion:1,comparisonKind:t.comparisonKind,findings:s}}function classifyFindings(e,t,A){if(t&&t.comparisonKind!==A)throw new Error("Baseline comparison type does not match the selected review.");const r=new Map((t?.findings??[]).map(e=>[e.fingerprint,e.count]));const s=new Map;const n={newCount:0,existingCount:0,resolvedCount:0};const i=e.map(({path:e,finding:t})=>{const A=findingFingerprint(t,e);const i=(s.get(A)??0)+1;s.set(A,i);const o=i<=(r.get(A)??0)?"EXISTING":"NEW";if(o==="EXISTING")n.existingCount++;else n.newCount++;return{...t,lifecycle:o}});const o=[];if(t){for(const e of t.findings){const t=e.count-(s.get(e.fingerprint)??0);if(t>0){n.resolvedCount+=t;o.push({...e,count:t,lifecycle:"RESOLVED"})}}}return{findings:i,resolvedFindings:o,counts:n}}async function checkedBaselinePath(e,t){if(!e||e.includes("\0")||(0,n.isAbsolute)(e)||n.win32.isAbsolute(e)){throw new Error("Baseline paths must be relative to the repository root.")}const A=e.replaceAll("\\","/");const r=A.split("/");if(r.some(e=>e===".."))throw new Error("Baseline paths must not traverse directories.");const i=r.filter(e=>e&&e!==".").join("/");if(!i)throw new Error("Baseline path is invalid.");const o=await(0,s.realpath)(t);const a=(0,n.resolve)(o,i);const c=(0,n.relative)(o,a);if(!c||c.startsWith(`..${n.sep}`)||c===".."||(0,n.isAbsolute)(c))throw new Error("Baseline paths must stay within the repository root.");const l=c.split(n.sep);let h=o;for(const e of l.slice(0,-1)){h=(0,n.resolve)(h,e);const t=await(0,s.lstat)(h).catch(()=>undefined);if(!t?.isDirectory()||t.isSymbolicLink())throw new Error("Baseline parent path must be an existing regular directory.")}return{absolute:a,relative:c.split(n.sep).join("/")}}async function readBaseline(e,t=process.cwd()){const A=await checkedBaselinePath(e,t);const r=await(0,s.lstat)(A.absolute).catch(()=>undefined);if(!r?.isFile()||r.isSymbolicLink())throw new Error("Baseline must be an existing regular file.");if(r.size>i)throw new Error("Baseline exceeds the supported size limit.");let n;try{n=JSON.parse(await(0,s.readFile)(A.absolute,"utf8"))}catch{throw new Error("Baseline is not valid JSON.")}return validateBaseline(n)}async function writeBaseline(e,t,A=process.cwd()){const r=await checkedBaselinePath(e,A);const s=`${JSON.stringify(validateBaseline(t),null,2)}\n`;if(Buffer.byteLength(s,"utf8")>i)throw new Error("Baseline exceeds the supported size limit.");let n;try{n=await open(r.absolute,"wx",384);await n.writeFile(s,"utf8");await n.close()}catch{await(n?.close().catch(()=>undefined));throw new Error("Unable to create baseline; the destination may already exist or be unavailable.")}return r.relative}},9482:(e,t,A)=>{A.d(t,{F9:()=>reviewPullRequest});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:child_process");function readClientId(e){if(!Object.prototype.hasOwnProperty.call(e,"client_id")){return undefined}const t=e.client_id;if(typeof t!=="string"||t.trim().length===0){throw new Error("client_id must be a non-empty string")}return t}function compareClientIds(e,t){const A=readClientId(e);const r=readClientId(t);if(A===r){return[]}const s=A===undefined?"CLIENT_ID_ADDED":r===undefined?"CLIENT_ID_REMOVED":"CLIENT_ID_CHANGED";const n=A===undefined?"client ID added":r===undefined?"client ID removed":"client ID changed";return[{ruleId:s,severity:"review",field:"client_id",summary:n}]}function applicationUrl(e){const t=e.application_url;if(t===undefined)return undefined;if(typeof t!=="string"||!t.trim()){throw new Error("application_url must be a non-empty string when provided")}return t}function redirectUrls(e){const t=e.auth;if(t===undefined)return new Set;if(typeof t!=="object"||t===null||Array.isArray(t)){throw new Error("[auth] must be a table when provided")}const A=t.redirect_urls;if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error("[auth].redirect_urls must be an array of non-empty strings")}return new Set(A)}function compareUrls(e,t){const A=applicationUrl(e);const r=applicationUrl(t);const s=redirectUrls(e);const n=redirectUrls(t);const i=[];if(A!==r){const e=A===undefined?"added":r===undefined?"removed":"changed";i.push({ruleId:"APPLICATION_URL_CHANGED",severity:"review",field:"application_url",summary:`application_url ${e}; review the intended app environment and destination`})}const o=[...n].filter(e=>!s.has(e)).length;const a=[...s].filter(e=>!n.has(e)).length;if(o||a){i.push({ruleId:"AUTH_REDIRECT_URLS_CHANGED",severity:"review",field:"auth.redirect_urls",summary:`authorization redirect URL set changed (added: ${o}; removed: ${a}); review OAuth callback configuration`})}return i}function isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function normalise(e){if(Array.isArray(e))return e.map(normalise);if(isTable(e)){return Object.fromEntries(Object.keys(e).sort().map(t=>[t,normalise(e[t])]))}return e}function readTopicList(e,t){const A=e[t];if(A===undefined)return[];if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error(`webhooks.subscriptions.${t} must be an array of non-empty strings`)}return[...new Set(A.map(e=>e.trim()))].sort()}function readWebhooks(e){const t=e.webhooks;if(t===undefined)return{routes:new Map};if(!isTable(t))throw new Error("[webhooks] must be a table");const A=t.api_version;if(A!==undefined&&(typeof A!=="string"||!A.trim())){throw new Error("[webhooks].api_version must be a non-empty string")}const r=t.subscriptions??[];if(!Array.isArray(r)){throw new Error("webhooks.subscriptions must be an array of tables")}const s=new Map;for(const e of r){if(!isTable(e))throw new Error("Each webhook subscription must be a table");const t=readTopicList(e,"topics");const A=readTopicList(e,"compliance_topics");if(!t.length&&!A.length){throw new Error("Webhook subscription requires topics or compliance_topics")}if(typeof e.uri!=="string"||!e.uri.trim()){throw new Error("Webhook subscription uri must be a non-empty string")}if(e.include_fields!==undefined&&(!Array.isArray(e.include_fields)||!e.include_fields.every(e=>typeof e==="string"&&e.trim()))){throw new Error("Webhook include_fields must be an array of non-empty strings")}if(e.filter!==undefined&&typeof e.filter!=="string"){throw new Error("Webhook filter must be a string")}const{topics:r,compliance_topics:n,...i}=e;const o=JSON.stringify(normalise({...i,...e.include_fields!==undefined?{include_fields:[...new Set(e.include_fields)].sort()}:{}}));for(const[e,r]of[["topics",t],["compliance_topics",A]]){for(const t of r){const A=JSON.stringify([e,t]);const r=s.get(A)??new Set;r.add(o);s.set(A,r)}}}return{version:A,routes:s}}function sameSet(e,t){return e.size===t.size&&[...e].every(e=>t.has(e))}function compareWebhooks(e,t){const A=readWebhooks(e);const r=readWebhooks(t);const s=[];if(A.version!==r.version){s.push({ruleId:"WEBHOOK_API_VERSION_CHANGED",severity:"review",field:"webhooks.api_version",summary:"webhook API version changed; review delivery payload compatibility"})}let n=0;let i=0;let o=0;for(const e of new Set([...A.routes.keys(),...r.routes.keys()])){const t=A.routes.get(e);const s=r.routes.get(e);if(!t)n++;else if(!s)i++;else if(!sameSet(t,s))o++}if(n||i||o){s.push({ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",severity:"review",field:"webhooks.subscriptions",summary:`webhook routes changed (added: ${n}; removed: ${i}; modified: ${o}); review topics, destinations and delivery settings`})}return s}function events_isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function readString(e,t,A){const r=e[t];if(typeof r!=="string"||!r.trim()){throw new Error(`${A}.${t} must be a non-empty string`)}return r.trim()}function readStringSet(e,t,A){const r=e[t];if(!Array.isArray(r)||!r.every(e=>typeof e==="string"&&e.trim())){throw new Error(`${A}.${t} must be an array of non-empty strings`)}return[...new Set(r.map(e=>e.trim()))].sort()}function readEvents(e){const t=e.events;if(t===undefined)return{subscriptions:new Map};if(!events_isTable(t))throw new Error("[events] must be a table");const A=t.api_version;if(A===undefined){throw new Error("[events].api_version is required")}if(typeof A!=="string"||!A.trim()){throw new Error("[events].api_version must be a non-empty string")}const r=t.subscription??[];if(!Array.isArray(r)){throw new Error("events.subscription must be an array of tables")}const s=new Map;for(const e of r){if(!events_isTable(e))throw new Error("Each Events subscription must be a table");const t="events.subscription";const A=readString(e,"handle",t);if(!/^[A-Za-z0-9_-]{1,50}$/.test(A)){throw new Error("events.subscription.handle must be alphanumeric, _, or - and at most 50 characters")}const r=readString(e,"topic",t);const n=readStringSet(e,"actions",t);if(n.some(e=>!["create","update","delete"].includes(e))){throw new Error("events.subscription.actions must contain only create, update, or delete")}const i=readString(e,"uri",t);if(n.includes("update")){readStringSet(e,"triggers",t)}else if(e.triggers!==undefined){readStringSet(e,"triggers",t)}const o=e.query===undefined?undefined:readString(e,"query",t);const a=e.query_filter===undefined?undefined:normalizeFilter(readString(e,"query_filter",t));if(s.has(A))throw new Error("Events subscription handles must be unique");const c=o===undefined?undefined:normalizeGraphQL(o);const l=e.triggers===undefined?[]:[...new Set(e.triggers.map(e=>e.trim()))].sort();const h={actions:n,query:c,filter:a,topic:r,triggers:l,destination:i};s.set(A,{handle:A,fingerprint:JSON.stringify(h),...h})}return{version:A,subscriptions:s}}function compareEvents(e,t){const A=readEvents(e);const r=readEvents(t);const s=[];if(A.version!==r.version){s.push({ruleId:"EVENTS_API_VERSION_CHANGED",severity:"review",field:"events.api_version",summary:"Events API version changed; review preview/runtime compatibility"})}let n=0,i=0,o=0;const a={topic:0,destination:0,actions:0,triggers:0,query:0,filter:0};for(const e of new Set([...A.subscriptions.keys(),...r.subscriptions.keys()])){const t=A.subscriptions.get(e);const s=r.subscriptions.get(e);if(!t)n++;else if(!s)i++;else if(t.fingerprint!==s.fingerprint){o++;for(const e of Object.keys(a))if(JSON.stringify(t[e])!==JSON.stringify(s[e]))a[e]++}}if(n||i||o){const e=o?`; modified fields: ${Object.entries(a).filter(([,e])=>e>0).map(([e,t])=>`${e==="destination"?"destination":e==="filter"?"query filter":e} ${t}`).join(", ")}`:"";s.push({ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",severity:"review",field:"events.subscription",summary:`Events subscriptions changed (created: ${n}; removed: ${i}; modified: ${o}${e}); review the affected subscription configuration`})}return s}function normalizeGraphQL(e){const t=[];const A=/#[^\r\n]*|"""[\s\S]*?"""|"(?:\\.|[^"\\])*"|[A-Za-z_][A-Za-z0-9_]*|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\.\.|[^\s,]/g;for(const r of e.matchAll(A)){if(r[0].startsWith("#"))continue;t.push(r[0])}return t.length?t.join(" "):e}function normalizeFilter(e){let t="",A="",r=false,s=false;for(const n of e.trim()){if(A){t+=n;if(r)r=false;else if(n==="\\")r=true;else if(n===A)A=""}else if(n==='"'||n==="'"){if(s&&t)t+=" ";s=false;A=n;t+=n}else if(/\s/.test(n))s=true;else{if(s&&t)t+=" ";s=false;t+=n}}return t}const s="https://shopify.dev/docs/apps/build/cli-for-apps/app-configuration";const n="https://shopify.dev/docs/apps/build/cli-for-apps/manage-app-config-files";const i="https://shopify.dev/docs/apps/build/online-store/app-proxies";const o=[{ruleId:"SCOPE_REQUIRED_ADDED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was added.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_REMOVED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_ADDED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was added.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_REMOVED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",category:"authorization",field:"access_scopes",explanation:"An optional scope became required.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",category:"authorization",field:"access_scopes",explanation:"A required scope became optional.",documentationUrl:s},{ruleId:"CLIENT_ID_ADDED",category:"identity",field:"client_id",explanation:"The app client ID was added.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_REMOVED",category:"identity",field:"client_id",explanation:"The app client ID was removed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_CHANGED",category:"identity",field:"client_id",explanation:"The app client ID changed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"APPLICATION_URL_CHANGED",category:"routing",field:"application_url",explanation:"The app application URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"AUTH_REDIRECT_URLS_CHANGED",category:"routing",field:"auth.redirect_urls",explanation:"The OAuth redirect URL set changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"embedded",explanation:"The embedded app mode changed.",documentationUrl:s},{ruleId:"APP_HANDLE_CHANGED",category:"identity",field:"handle",explanation:"The app handle changed.",documentationUrl:s},{ruleId:"APP_NAME_CHANGED",category:"identity",field:"name",explanation:"The app name changed.",documentationUrl:s,redaction:"Name values are not included in findings."},{ruleId:"LEGACY_INSTALL_FLOW_CHANGED",category:"authorization",field:"access_scopes.use_legacy_install_flow",explanation:"The legacy installation flow setting changed.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",category:"api-access",field:"access.admin.embedded_app_direct_api_access",explanation:"Admin Direct API access was enabled or disabled.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",category:"api-access",field:"access.admin.direct_api_mode",explanation:"Admin Direct API online/offline mode changed.",documentationUrl:s},{ruleId:"CUSTOMER_AUTH_REDIRECTS_CHANGED",category:"authorization",field:"customer_authentication.redirect_uris",explanation:"Customer account authentication redirect URIs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"CUSTOMER_AUTH_ORIGINS_CHANGED",category:"authorization",field:"customer_authentication.javascript_origins",explanation:"Customer account authentication JavaScript origins changed.",documentationUrl:s,redaction:"Origin values are never included in findings."},{ruleId:"CUSTOMER_AUTH_LOGOUT_URLS_CHANGED",category:"authorization",field:"customer_authentication.logout_urls",explanation:"Customer account authentication logout URLs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ENABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was enabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DISABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was disabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DESTINATION_CHANGED",category:"routing",field:"app_proxy.url",explanation:"The app proxy destination changed.",documentationUrl:i,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ROUTE_CHANGED",category:"routing",field:"app_proxy.prefix/subpath",explanation:"The app proxy storefront route changed.",documentationUrl:i},{ruleId:"POS_EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"pos.embedded",explanation:"Shopify POS embedded mode changed.",documentationUrl:s},{ruleId:"APP_PREFERENCES_URL_CHANGED",category:"routing",field:"app_preferences.url",explanation:"The app preferences URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EXTENSION_DIRECTORIES_CHANGED",category:"project-discovery",field:"extension_directories",explanation:"The extension discovery directory set changed.",documentationUrl:s},{ruleId:"WEB_DIRECTORIES_CHANGED",category:"project-discovery",field:"web_directories",explanation:"The web discovery directory set changed.",documentationUrl:s},{ruleId:"AUTOMATIC_DEV_URLS_CHANGED",category:"runtime-behaviour",field:"build.automatically_update_urls_on_dev",explanation:"Automatic development URL updates changed.",documentationUrl:s},{ruleId:"WEBHOOK_API_VERSION_CHANGED",category:"event-delivery",field:"webhooks.api_version",explanation:"The webhook API version changed.",documentationUrl:s},{ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"webhooks.subscriptions",explanation:"Webhook routes or delivery settings changed.",documentationUrl:s,redaction:"Destinations, topics, filters, and field names are never included in findings."},{ruleId:"EVENTS_API_VERSION_CHANGED",category:"event-delivery",field:"events.api_version",explanation:"The Events API version changed.",documentationUrl:s},{ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"events.subscription",explanation:"Events subscriptions changed.",documentationUrl:s,redaction:"Handles, destinations, topics, triggers, queries, and filters are never included in findings."},{ruleId:"CONFIG_ADDED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was added.",documentationUrl:n},{ruleId:"CONFIG_REMOVED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was removed.",documentationUrl:n},{ruleId:"CONFIG_RENAMED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was renamed.",documentationUrl:n}];const a=new Map(o.map(e=>[e.ruleId,e]));const c={authorization:{level:"high",rationale:"Can change merchant consent, access, or authentication behaviour."},identity:{level:"high",rationale:"Can change the app or environment a deployment targets."},routing:{level:"high",rationale:"Can redirect app, OAuth, proxy, or merchant-facing traffic."},"api-access":{level:"high",rationale:"Can change how the app obtains or uses Admin API access."},"event-delivery":{level:"high",rationale:"Can change event coverage, payload compatibility, or delivery destinations."},"runtime-behaviour":{level:"medium",rationale:"Can change runtime or installation behaviour without directly changing permissions."},"project-discovery":{level:"low",rationale:"Changes which local project paths Shopify CLI discovers."},"configuration-lifecycle":{level:"high",rationale:"Can change which environment configuration is selected for deployment."}};function withRisk(e){const t=c[e.category];return{...e,riskLevel:t.level,riskRationale:t.rationale}}function metadataFor(e,t){const A=a.get(e);if(A)return A;const r=categoryFor(t);return withRisk({ruleId:e,category:r,field:t,explanation:"An internal or otherwise unknown Shopify app configuration value changed.",documentationUrl:s})}function categoryFor(e){if(e.startsWith("access_scopes")||e.startsWith("customer_authentication"))return"authorization";if(e.includes("client_id")||e==="name"||e==="handle")return"identity";if(e.includes("url")||e.includes("proxy")||e.includes("redirect"))return"routing";if(e.startsWith("access.admin"))return"api-access";if(e.startsWith("webhooks")||e.startsWith("events"))return"event-delivery";if(e.startsWith("extension_directories")||e.startsWith("web_directories"))return"project-discovery";if(e.startsWith("configuration"))return"configuration-lifecycle";return"runtime-behaviour"}function ruleCatalogue(){return o.map(e=>({...e}))}for(let e=0;etypeof e==="string"&&e.trim()))throw new Error("[access_scopes].optional_scopes must be an array of non-empty strings");const r=new Set(t.scopes.split(",").map(e=>e.trim()).filter(Boolean));const s=new Set(A.map(e=>e.trim()));const n=[...r].filter(e=>s.has(e));if(n.length>0)throw new Error("Scope cannot be both required and optional: "+n.sort().join(", "));return{required:r,optional:s}}function readOptionalBoolean(e,t){const A=e[t];if(A!==undefined&&typeof A!=="boolean")throw new Error(`${t} must be a boolean`);return A}function readOptionalString(e,t){const A=e[t];if(A!==undefined&&(typeof A!=="string"||!A.trim()))throw new Error(`${t} must be a non-empty string`);return A}function readTable(e,t){const A=e[t];if(A===undefined)return{};if(!isObject(A))throw new Error(`[${t}] must be a table`);return A}function core_readStringSet(e,t){const A=e[t];if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim()))throw new Error(`${t} must be an array of non-empty strings`);return new Set(A.map(e=>e.trim()))}function changedSetFinding(e,t,A,r,s){const n=[...s].filter(e=>!r.has(e)).length;const i=[...r].filter(e=>!s.has(e)).length;if(!n&&!i)return[];return[{ruleId:e,severity:"review",field:t,summary:`${A} changed (added: ${n}; removed: ${i}); review the affected Shopify behaviour`}]}function compareRootSettings(e,t){const A=[];const r=[["embedded","EMBEDDED_MODE_CHANGED","boolean"],["handle","APP_HANDLE_CHANGED","string"],["name","APP_NAME_CHANGED","string"]];for(const[s,n,i]of r){const r=i==="boolean"?readOptionalBoolean(e,s):readOptionalString(e,s);const o=i==="boolean"?readOptionalBoolean(t,s):readOptionalString(t,s);if(r!==o)A.push({ruleId:n,severity:"review",field:s,summary:`${s} changed; review the intended app behaviour and deployment impact`})}const s=isObject(e.access_scopes)?e.access_scopes:{};const n=isObject(t.access_scopes)?t.access_scopes:{};const i=readOptionalBoolean(s,"use_legacy_install_flow");const o=readOptionalBoolean(n,"use_legacy_install_flow");if(i!==o)A.push({ruleId:"LEGACY_INSTALL_FLOW_CHANGED",severity:"review",field:"access_scopes.use_legacy_install_flow",summary:"legacy installation flow setting changed; review OAuth and scope-management behaviour"});const a=readTable(readTable(e,"access"),"admin");const c=readTable(readTable(t,"access"),"admin");const l=readOptionalBoolean(a,"embedded_app_direct_api_access")??false;const h=readOptionalBoolean(c,"embedded_app_direct_api_access")??false;if(l!==h)A.push({ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",severity:"review",field:"access.admin.embedded_app_direct_api_access",summary:"Admin Direct API access was enabled or disabled; review client-side API access and authorization behaviour"});const g=readOptionalString(a,"direct_api_mode")??"online";const u=readOptionalString(c,"direct_api_mode")??"online";if(!["online","offline"].includes(g)||!["online","offline"].includes(u))throw new Error("[access.admin].direct_api_mode must be online or offline");if(g!==u)A.push({ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",severity:"review",field:"access.admin.direct_api_mode",summary:"Admin Direct API access mode changed; review online/offline token expectations"});const E=readTable(e,"customer_authentication");const Q=readTable(t,"customer_authentication");A.push(...changedSetFinding("CUSTOMER_AUTH_REDIRECTS_CHANGED","customer_authentication.redirect_uris","Customer authentication redirect URI set",core_readStringSet(E,"redirect_uris"),core_readStringSet(Q,"redirect_uris")));A.push(...changedSetFinding("CUSTOMER_AUTH_ORIGINS_CHANGED","customer_authentication.javascript_origins","Customer authentication JavaScript origin set",core_readStringSet(E,"javascript_origins"),core_readStringSet(Q,"javascript_origins")));A.push(...changedSetFinding("CUSTOMER_AUTH_LOGOUT_URLS_CHANGED","customer_authentication.logout_urls","Customer authentication logout URL set",core_readStringSet(E,"logout_urls"),core_readStringSet(Q,"logout_urls")));const C=readTable(e,"app_proxy");const B=readTable(t,"app_proxy");const I=Object.keys(C).length>0;const d=Object.keys(B).length>0;if(I!==d)A.push({ruleId:d?"APP_PROXY_ENABLED":"APP_PROXY_DISABLED",severity:"review",field:"app_proxy",summary:`app proxy ${d?"enabled":"disabled"}; review storefront routing and access scope behaviour`});if(readOptionalString(C,"url")!==readOptionalString(B,"url"))A.push({ruleId:"APP_PROXY_DESTINATION_CHANGED",severity:"review",field:"app_proxy.url",summary:"app proxy destination changed; review proxy routing and deployment behaviour"});const f=`${readOptionalString(C,"prefix")??""}/${readOptionalString(C,"subpath")??""}`;const p=`${readOptionalString(B,"prefix")??""}/${readOptionalString(B,"subpath")??""}`;if(f!==p)A.push({ruleId:"APP_PROXY_ROUTE_CHANGED",severity:"review",field:"app_proxy.prefix/subpath",summary:"app proxy storefront route changed; review links, theme integrations and merchant-facing URLs"});const w=readTable(e,"pos");const y=readTable(t,"pos");if(readOptionalBoolean(w,"embedded")!==readOptionalBoolean(y,"embedded"))A.push({ruleId:"POS_EMBEDDED_MODE_CHANGED",severity:"review",field:"pos.embedded",summary:"POS embedded mode changed; review Shopify POS app behaviour"});const m=readTable(e,"app_preferences");const R=readTable(t,"app_preferences");if(readOptionalString(m,"url")!==readOptionalString(R,"url"))A.push({ruleId:"APP_PREFERENCES_URL_CHANGED",severity:"review",field:"app_preferences.url",summary:"app preferences URL changed; review the destination used by merchants"});A.push(...changedSetFinding("EXTENSION_DIRECTORIES_CHANGED","extension_directories","Extension discovery directory set",core_readStringSet(e,"extension_directories"),core_readStringSet(t,"extension_directories")));A.push(...changedSetFinding("WEB_DIRECTORIES_CHANGED","web_directories","Web discovery directory set",core_readStringSet(e,"web_directories"),core_readStringSet(t,"web_directories")));const D=readTable(e,"build");const b=readTable(t,"build");if(readOptionalBoolean(D,"automatically_update_urls_on_dev")!==readOptionalBoolean(b,"automatically_update_urls_on_dev"))A.push({ruleId:"AUTOMATIC_DEV_URLS_CHANGED",severity:"review",field:"build.automatically_update_urls_on_dev",summary:"automatic development URL updates changed; review local tunnel and callback behaviour"});return A}function decorate(e){return e.map(e=>{const t=metadataFor(e.ruleId,e.field);return{...e,category:t.category,documentationUrl:t.documentationUrl,riskLevel:t.riskLevel,riskRationale:t.riskRationale}})}function compareConfigs(e,t){const A=readScopes(e);const r=readScopes(t);const s=[];for(const e of[...A.optional].filter(e=>r.required.has(e)).sort())s.push({ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",severity:"review",field:"access_scopes",summary:`scope changed from optional to required: ${e}`});for(const e of[...A.required].filter(e=>r.optional.has(e)).sort())s.push({ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",severity:"review",field:"access_scopes",summary:`scope changed from required to optional: ${e}`});const compare=(e,t,n)=>{const i=n==="required"?A.optional:A.required;const o=n==="required"?r.optional:r.required;for(const A of[...t].filter(t=>!e.has(t)&&!i.has(t)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_ADDED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope added: ${A}`});for(const A of[...e].filter(e=>!t.has(e)&&!o.has(e)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_REMOVED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope removed: ${A}`})};compare(A.required,r.required,"required");compare(A.optional,r.optional,"optional");s.push(...compareRootSettings(e,t),...compareClientIds(e,t),...compareUrls(e,t),...compareWebhooks(e,t),...compareEvents(e,t));return decorate(s.sort((e,t)=>e.field.localeCompare(t.field)||e.ruleId.localeCompare(t.ruleId)||e.summary.localeCompare(t.summary)))}var l=A(4572);const h=1024*1024;function resolveCommitRef(e){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes(".."))throw new Error("Invalid Git revision");const t=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],process.cwd()).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(t))throw new Error("Invalid resolved Git commit");return t}function git(e,t){try{return(0,r.execFileSync)("git",e,{cwd:t,stdio:["ignore","pipe","pipe"],maxBuffer:h+4096})}catch{throw new Error("Unable to read the requested Git revision or file")}}function readConfigAtRef(e,t){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes("..")){throw new Error("Invalid Git revision")}if(!t||t.startsWith("/")||t.includes("\\")||t.includes(":")||t.split("/").some(e=>!e||e==="."||e==="..")){throw new Error("Invalid repository-relative file path")}const A=git(["rev-parse","--show-toplevel"],process.cwd()).toString("utf8").trim();const r=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],A).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(r)){throw new Error("Invalid resolved Git commit")}const s=git(["ls-tree","-z",r,"--",t],A).toString("utf8");if(!/^100(?:644|755) blob /.test(s))throw new Error("Git configuration must be a regular file");const n=git(["cat-file","blob",`${r}:${t}`],A);if(n.length>h||n.includes(0)){throw new Error("Git configuration must be a text file up to 1 MiB")}try{return(0,l.parse)(n.toString("utf8"))}catch{throw new Error("Invalid TOML in Git revision; contents were not printed")}}const g=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/;const u=/(^|\/)shopify\.app(?:\.[^/]+)?\.toml$/;function gitDiff(e,t){const A=(0,r.spawnSync)("git",["diff","--find-renames=20%","--name-status","-z",e,t,"--"],{encoding:"buffer",maxBuffer:4*1024*1024});if(A.error||A.status!==0)throw new Error("Unable to inspect the Git changes.");const s=A.stdout.toString("utf8").split("\0");if(s.at(-1)==="")s.pop();const n=[];for(let e=0;eu.test(e.path)||(e.previousPath?u.test(e.previousPath):false));if(r.length>50)throw new Error("Too many configuration changes for this review.");const s=[];const n=[];for(const e of r){try{if(e.status==="M"){s.push({status:"M",path:e.path,findings:compareConfigs(readConfigAtRef(A,e.path),readConfigAtRef(t,e.path))})}else if(e.status==="A"){readConfigAtRef(t,e.path);s.push({status:"A",path:e.path,findings:[lifecycleFinding("CONFIG_ADDED","configuration","Shopify app configuration file added; review the new environment and its deployment selection")]})}else if(e.status==="D"){s.push({status:"D",path:e.path,findings:[lifecycleFinding("CONFIG_REMOVED","configuration","Shopify app configuration file removed; review which environment remains deployable")]})}else{readConfigAtRef(A,e.previousPath??e.path);readConfigAtRef(t,e.path);s.push({status:"R",previousPath:e.previousPath,path:e.path,findings:[lifecycleFinding("CONFIG_RENAMED","configuration","Shopify app configuration file renamed; review environment selection and deployment workflows"),...compareConfigs(readConfigAtRef(A,e.previousPath??e.path),readConfigAtRef(t,e.path))]})}}catch{n.push({path:e.path,reason:"Configuration could not be analyzed."})}}const i=[...new Set(s.flatMap(e=>e.findings.map(e=>e.ruleId)))].sort();return{schemaVersion:1,note:"Review only; not deployment approval.",files:s,unreviewed:n,changedFileCount:r.length,reviewedFileCount:s.length,unreviewedFileCount:n.length,ruleIds:i}}function reviewPullRequest(e,t){return reviewGitRange(e,t)}},4508:(e,t,A)=>{A.d(t,{E:()=>matchesRiskThreshold,p:()=>validateRiskThreshold});const r={low:1,medium:2,high:3};function validateRiskThreshold(e){if(!["none","low","medium","high"].includes(e))throw new Error("fail_on_risk must be one of: none, low, medium, high")}function matchesRiskThreshold(e,t){if(t==="none")return false;return e.some(e=>r[e.riskLevel??"medium"]>=r[t])}},3720:(e,t,A)=>{A.d(t,{B:()=>renderSummary});function renderSummary(e){if(!Array.isArray(e.files)||!Array.isArray(e.unreviewed)){throw new Error("Invalid ChangeGuard report.")}const t=new Map;const A=new Map;const r=new Map;const s=new Map;let n=0;for(const i of e.files){if(!Array.isArray(i.findings))throw new Error("Invalid findings.");for(const e of i.findings){if(typeof e.ruleId!=="string"||!/^[A-Z][A-Z0-9_]{0,79}$/.test(e.ruleId)){throw new Error("Invalid rule ID.")}t.set(e.ruleId,(t.get(e.ruleId)??0)+1);if(e.category)A.set(e.category,(A.get(e.category)??0)+1);if(e.documentationUrl)r.set(e.ruleId,e.documentationUrl);if(e.riskLevel!==undefined){if(!["low","medium","high"].includes(e.riskLevel))throw new Error("Invalid risk level.");s.set(e.riskLevel,(s.get(e.riskLevel)??0)+1)}n++}}const i=["## ChangeGuard review","","> Review only; not deployment approval.","",`- Configuration files reviewed: ${e.reviewedFileCount??e.files.length}`,`- Review findings: ${n}`,`- Unreviewable configurations: ${e.unreviewedFileCount??e.unreviewed.length}`,"","### Review status",""];if(e.lifecycle)i.splice(7,0,`- New: ${e.lifecycle.newCount}; existing: ${e.lifecycle.existingCount}; resolved: ${e.lifecycle.resolvedCount}`);if(s.size){i.push("","### Findings by risk","","| Risk | Count |","| --- | ---: |");for(const e of["high","medium","low"])if(s.has(e))i.push(`| ${e} | ${s.get(e)} |`);const e=["high","medium","low"].find(e=>s.has(e));i.push("",`Highest risk: **${e}**.`)}if(e.unreviewed.length>0){i.push("**Review incomplete:** Some configurations could not be analysed. The configured failure policy determines the check result.")}else if(n>0){i.push("**Manual review recommended:** Supported-field changes were found. The configured failure policy determines the check result.")}else{i.push("**No supported-field changes detected.** This is not a deployment or security approval.")}if(t.size){i.push("","### Findings by rule","","| Rule | Count |","| --- | ---: |");for(const[e,A]of[...t].sort())i.push(`| ${e} | ${A} |`);if(A.size){i.push("","### Findings by category","","| Category | Count |","| --- | ---: |");for(const[e,t]of[...A].sort())i.push(`| ${e} | ${t} |`)}if(r.size){i.push("","### Rule documentation","");for(const[e,t]of[...r].sort())i.push(`- [${e}](${t})`)}}if(e.unreviewed.length)i.push("","Some configurations could not be reviewed.","See the JSON logs for details.");return`${i.join("\n")}\n`}},3218:(e,t,A)=>{A.d(t,{V4:()=>getInput,C1:()=>setFailed,uH:()=>setOutput,z:()=>N,$e:()=>warning});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("os");function utils_toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}function utils_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}}function command_issueCommand(e,t,A){const s=new Command(e,t,A);process.stdout.write(s.toString()+r.EOL)}function command_issue(e,t=""){command_issueCommand(e,{},t)}const s="::";class Command{constructor(e,t,A){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=A}toString(){let e=s+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 r=this.properties[A];if(r){if(t){t=false}else{e+=","}e+=`${A}=${escapeProperty(r)}`}}}}e+=`${s}${escapeData(this.message)}`;return e}}function escapeData(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}const n=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("crypto");const i=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs");function file_command_issueFileCommand(e,t){const A=process.env[`GITHUB_${e}`];if(!A){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!i.existsSync(A)){throw new Error(`Missing file at path: ${A}`)}i.appendFileSync(A,`${utils_toCommandValue(t)}${r.EOL}`,{encoding:"utf8"})}function file_command_prepareKeyValueMessage(e,t){const A=`ghadelimiter_${n.randomUUID()}`;const s=utils_toCommandValue(t);if(e.includes(A)){throw new Error(`Unexpected input: name should not contain the delimiter "${A}"`)}if(s.includes(A)){throw new Error(`Unexpected input: value should not contain the delimiter "${A}"`)}return`${e}<<${A}${r.EOL}${s}${r.EOL}${A}`}const o=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("path");var a=A(8611);var c=A(5692);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 DecodedURL(A)}catch(e){if(!A.startsWith("http://")&&!A.startsWith("https://"))return new DecodedURL(`http://${A}`)}}else{return undefined}}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 r;if(e.port){r=Number(e.port)}else if(e.protocol==="http:"){r=80}else if(e.protocol==="https:"){r=443}const s=[e.hostname.toUpperCase()];if(typeof r==="number"){s.push(`${s[0]}:${r}`)}for(const e of A.split(",").map(e=>e.trim().toUpperCase()).filter(e=>e)){if(e==="*"||s.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(".")&&t.endsWith(`${e}`))){return true}}return false}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]")}class DecodedURL extends URL{constructor(e,t){super(e,t);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}var l=A(770);var h=A(6752);var g=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var u;(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"})(u||(u={}));var E;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(E||(E={}));var Q;(function(e){e["ApplicationJson"]="application/json"})(Q||(Q={}));function lib_getProxyUrl(e){const t=pm.getProxyUrl(new URL(e));return t?t.href:""}const C=[u.MovedPermanently,u.ResourceMoved,u.SeeOther,u.TemporaryRedirect,u.PermanentRedirect];const B=[u.BadGateway,u.ServiceUnavailable,u.GatewayTimeout];const I=null&&["OPTIONS","GET","DELETE","HEAD"];const d=10;const f=5;class HttpClientError extends Error{constructor(e,t){super(e);this.name="HttpClientError";this.statusCode=t;Object.setPrototypeOf(this,HttpClientError.prototype)}}class HttpClientResponse{constructor(e){this.message=e}readBody(){return g(this,void 0,void 0,function*(){return new Promise(e=>g(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 g(this,void 0,void 0,function*(){return new Promise(e=>g(this,void 0,void 0,function*(){const t=[];this.message.on("data",e=>{t.push(e)});this.message.on("end",()=>{e(Buffer.concat(t))})}))})}}function isHttps(e){const t=new URL(e);return t.protocol==="https:"}class lib_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=this._getUserAgentWithOrchestrationId(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 g(this,void 0,void 0,function*(){return this.request("OPTIONS",e,null,t||{})})}get(e,t){return g(this,void 0,void 0,function*(){return this.request("GET",e,null,t||{})})}del(e,t){return g(this,void 0,void 0,function*(){return this.request("DELETE",e,null,t||{})})}post(e,t,A){return g(this,void 0,void 0,function*(){return this.request("POST",e,t,A||{})})}patch(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PATCH",e,t,A||{})})}put(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PUT",e,t,A||{})})}head(e,t){return g(this,void 0,void 0,function*(){return this.request("HEAD",e,null,t||{})})}sendStream(e,t,A,r){return g(this,void 0,void 0,function*(){return this.request(e,t,A,r)})}getJson(e){return g(this,arguments,void 0,function*(e,t={}){t[E.Accept]=this._getExistingOrDefaultHeader(t,E.Accept,Q.ApplicationJson);const A=yield this.get(e,t);return this._processResponse(A,this.requestOptions)})}postJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.post(e,r,A);return this._processResponse(s,this.requestOptions)})}putJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.put(e,r,A);return this._processResponse(s,this.requestOptions)})}patchJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.patch(e,r,A);return this._processResponse(s,this.requestOptions)})}request(e,t,A,r){return g(this,void 0,void 0,function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const s=new URL(t);let n=this._prepareRequest(e,s,r);const i=this._allowRetries&&I.includes(e)?this._maxRetries+1:1;let o=0;let a;do{a=yield this.requestRaw(n,A);if(a&&a.message&&a.message.statusCode===u.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(a)){e=t;break}}if(e){return e.handleAuthentication(this,n,A)}else{return a}}let t=this._maxRedirects;while(a.message.statusCode&&C.includes(a.message.statusCode)&&this._allowRedirects&&t>0){const i=a.message.headers["location"];if(!i){break}const o=new URL(i);if(s.protocol==="https:"&&s.protocol!==o.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(o.hostname!==s.hostname){for(const e in r){if(e.toLowerCase()==="authorization"){delete r[e]}}}n=this._prepareRequest(e,o,r);a=yield this.requestRaw(n,A);t--}if(!a.message.statusCode||!B.includes(a.message.statusCode)){return a}o+=1;if(o{function callbackForResult(e,t){if(e){r(e)}else if(!t){r(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 r=false;function handleResult(e,t){if(!r){r=true;A(e,t)}}const s=e.httpModule.request(e.options,e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)});let n;s.on("socket",e=>{n=e});s.setTimeout(this._socketTimeout||3*6e4,()=>{if(n){n.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))});s.on("error",function(e){handleResult(e)});if(t&&typeof t==="string"){s.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",function(){s.end()});t.pipe(s)}else{s.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){const t=new URL(e);const A=pm.getProxyUrl(t);const r=A&&A.hostname;if(!r){return}return this._getProxyAgentDispatcher(t,A)}_prepareRequest(e,t,A){const r={};r.parsedUrl=t;const s=r.parsedUrl.protocol==="https:";r.httpModule=s?https:http;const n=s?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):n;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=e;r.options.headers=this._mergeHeaders(A);if(this.userAgent!=null){r.options.headers["user-agent"]=this.userAgent}r.options.agent=this._getAgent(r.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(r.options)}}return r}_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 r;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[t];if(e){r=typeof e==="number"?e.toString():e}}const s=e[t];if(s!==undefined){return typeof s==="number"?s.toString():s}if(r!==undefined){return r}return A}_getExistingOrDefaultContentTypeHeader(e,t){let A;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[E.ContentType];if(e){if(typeof e==="number"){A=String(e)}else if(Array.isArray(e)){A=e.join(", ")}else{A=e}}}const r=e[E.ContentType];if(r!==undefined){if(typeof r==="number"){return String(r)}else if(Array.isArray(r)){return r.join(", ")}else{return r}}if(A!==undefined){return A}return t}_getAgent(e){let t;const A=pm.getProxyUrl(e);const r=A&&A.hostname;if(this._keepAlive&&r){t=this._proxyAgent}if(!r){t=this._agent}if(t){return t}const s=e.protocol==="https:";let n=100;if(this.requestOptions){n=this.requestOptions.maxSockets||http.globalAgent.maxSockets}if(A&&A.hostname){const e={maxSockets:n,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(A.username||A.password)&&{proxyAuth:`${A.username}:${A.password}`}),{host:A.hostname,port:A.port})};let r;const i=A.protocol==="https:";if(s){r=i?tunnel.httpsOverHttps:tunnel.httpsOverHttp}else{r=i?tunnel.httpOverHttps:tunnel.httpOverHttp}t=r(e);this._proxyAgent=t}if(!t){const e={keepAlive:this._keepAlive,maxSockets:n};t=s?new https.Agent(e):new http.Agent(e);this._agent=t}if(s&&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 r=e.protocol==="https:";A=new ProxyAgent(Object.assign({uri:t.href,pipelining:!this._keepAlive?0:1},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString("base64")}`}));this._proxyAgentDispatcher=A;if(r&&this._ignoreSslError){A.options=Object.assign(A.options.requestTls||{},{rejectUnauthorized:false})}return A}_getUserAgentWithOrchestrationId(e){const t=e||"actions/http-client";const A=process.env["ACTIONS_ORCHESTRATION_ID"];if(A){const e=A.replace(/[^a-z0-9_.-]/gi,"_");return`${t} actions_orchestration_id/${e}`}return t}_performExponentialBackoff(e){return g(this,void 0,void 0,function*(){e=Math.min(d,e);const t=f*Math.pow(2,e);return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return g(this,void 0,void 0,function*(){return new Promise((A,r)=>g(this,void 0,void 0,function*(){const s=e.message.statusCode||0;const n={statusCode:s,result:null,headers:{}};if(s===u.NotFound){A(n)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let i;let o;try{o=yield e.readBody();if(o&&o.length>0){if(t&&t.deserializeDates){i=JSON.parse(o,dateTimeDeserializer)}else{i=JSON.parse(o)}n.result=i}n.headers=e.message.headers}catch(e){}if(s>299){let e;if(i&&i.message){e=i.message}else if(o&&o.length>0){e=o}else{e=`Failed request: (${s})`}const t=new HttpClientError(e,s);t.result=n.result;r(t)}else{A(n)}}))})}}const lowercaseKeys=e=>Object.keys(e).reduce((t,A)=>(t[A.toLowerCase()]=e[A],t),{});var p=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}class auth_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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}var w=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};class oidc_utils_OidcClient{static createHttpClient(e=true,t=10){const A={allowRetries:e,maxRetries:t};return new HttpClient("actions/oidc-client",[new BearerCredentialHandler(oidc_utils_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){return w(this,void 0,void 0,function*(){var t;const A=oidc_utils_OidcClient.createHttpClient();const r=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 s=(t=r.result)===null||t===void 0?void 0:t.value;if(!s){throw new Error("Response json body do not have ID Token field")}return s})}static getIDToken(e){return w(this,void 0,void 0,function*(){try{let t=oidc_utils_OidcClient.getIDTokenUrl();if(e){const A=encodeURIComponent(e);t=`${t}&audience=${A}`}debug(`ID token url is ${t}`);const A=yield oidc_utils_OidcClient.getCall(t);setSecret(A);return A}catch(e){throw new Error(`Error message: ${e.message}`)}})}}var y=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{access:m,appendFile:R,writeFile:D}=i.promises;const b="GITHUB_STEP_SUMMARY";const k="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return y(this,void 0,void 0,function*(){if(this._filePath){return this._filePath}const e=process.env[b];if(!e){throw new Error(`Unable to find environment variable for $${b}. Check if your runtime environment supports job summaries.`)}try{yield m(e,i.constants.R_OK|i.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 r=Object.entries(A).map(([e,t])=>` ${e}="${t}"`).join("");if(!t){return`<${e}${r}>`}return`<${e}${r}>${t}`}write(e){return y(this,void 0,void 0,function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const A=yield this.filePath();const r=t?D:R;yield r(A,this._buffer,{encoding:"utf8"});return this.emptyBuffer()})}clear(){return y(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(r.EOL)}addCodeBlock(e,t){const A=Object.assign({},t&&{lang:t});const r=this.wrap("pre",this.wrap("code",e),A);return this.addRaw(r).addEOL()}addList(e,t=false){const A=t?"ol":"ul";const r=e.map(e=>this.wrap("li",e)).join("");const s=this.wrap(A,r);return this.addRaw(s).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:r,rowspan:s}=e;const n=t?"th":"td";const i=Object.assign(Object.assign({},r&&{colspan:r}),s&&{rowspan:s});return this.wrap(n,A,i)}).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:r,height:s}=A||{};const n=Object.assign(Object.assign({},r&&{width:r}),s&&{height:s});const i=this.wrap("img",null,Object.assign({src:e,alt:t},n));return this.addRaw(i).addEOL()}addHeading(e,t){const A=`h${t}`;const r=["h1","h2","h3","h4","h5","h6"].includes(A)?A:"h1";const s=this.wrap(r,e);return this.addRaw(s).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 r=this.wrap("blockquote",e,A);return this.addRaw(r).addEOL()}addLink(e,t){const A=this.wrap("a",e,{href:t});return this.addRaw(A).addEOL()}}const S=new Summary;const F=null&&S;const N=S;function toPosixPath(e){return e.replace(/[\\]/g,"/")}function toWin32Path(e){return e.replace(/[/]/g,"\\")}function toPlatformPath(e){return e.replace(/[/\\]/g,path.sep)}var U=A(3193);var T=A(4434);const M=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("child_process");var L=A(2613);var v=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{chmod:H,copyFile:x,lstat:G,mkdir:Y,open:J,readdir:_,rename:V,rm:O,rmdir:P,stat:W,symlink:q,unlink:Z}=i.promises;const z=process.platform==="win32";function readlink(e){return v(this,void 0,void 0,function*(){const t=yield fs.promises.readlink(e);if(z&&!t.endsWith("\\")){return`${t}\\`}return t})}const K=268435456;const X=i.constants.O_RDONLY;function exists(e){return v(this,void 0,void 0,function*(){try{yield W(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}function isDirectory(e){return v(this,arguments,void 0,function*(e,t=false){const A=t?yield W(e):yield G(e);return A.isDirectory()})}function isRooted(e){e=normalizeSeparators(e);if(!e){throw new Error('isRooted() parameter "p" cannot be empty')}if(z){return e.startsWith("\\")||/^[A-Z]:/i.test(e)}return e.startsWith("/")}function tryGetExecutablePath(e,t){return v(this,void 0,void 0,function*(){let A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){const A=o.extname(e).toUpperCase();if(t.some(e=>e.toUpperCase()===A)){return e}}else{if(isUnixExecutable(A)){return e}}}const r=e;for(const s of t){e=r+s;A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){try{const t=o.dirname(e);const A=o.basename(e).toUpperCase();for(const r of yield _(t)){if(A===r.toUpperCase()){e=o.join(t,r);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(A)){return e}}}}return""})}function normalizeSeparators(e){e=e||"";if(z){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==undefined&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==undefined&&e.uid===process.getuid()}function getCmdPath(){var e;return(e=process.env["COMSPEC"])!==null&&e!==void 0?e:`cmd.exe`}var j=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function cp(e,t){return j(this,arguments,void 0,function*(e,t,A={}){const{force:r,recursive:s,copySourceDirectory:n}=readCopyOptions(A);const i=(yield ioUtil.exists(t))?yield ioUtil.stat(t):null;if(i&&i.isFile()&&!r){return}const o=i&&i.isDirectory()&&n?path.join(t,path.basename(e)):t;if(!(yield ioUtil.exists(e))){throw new Error(`no such file or directory: ${e}`)}const a=yield ioUtil.stat(e);if(a.isDirectory()){if(!s){throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(e,o,0,r)}}else{if(path.relative(e,o)===""){throw new Error(`'${o}' and '${e}' are the same file`)}yield io_copyFile(e,o,r)}})}function mv(e,t){return j(this,arguments,void 0,function*(e,t,A={}){if(yield ioUtil.exists(t)){let r=true;if(yield ioUtil.isDirectory(t)){t=path.join(t,path.basename(e));r=yield ioUtil.exists(t)}if(r){if(A.force==null||A.force){yield rmRF(t)}else{throw new Error("Destination already exists")}}}yield mkdirP(path.dirname(t));yield ioUtil.rename(e,t)})}function rmRF(e){return j(this,void 0,void 0,function*(){if(ioUtil.IS_WINDOWS){if(/[*"<>|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield ioUtil.rm(e,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}})}function mkdirP(e){return j(this,void 0,void 0,function*(){ok(e,"a path argument must be provided");yield ioUtil.mkdir(e,{recursive:true})})}function which(e,t){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(z){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return t}const A=yield findInPath(e);if(A&&A.length>0){return A[0]}return""})}function findInPath(e){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}const t=[];if(z&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(o.delimiter)){if(e){t.push(e)}}}if(isRooted(e)){const A=yield tryGetExecutablePath(e,t);if(A){return[A]}return[]}if(e.includes(o.sep)){return[]}const A=[];if(process.env.PATH){for(const e of process.env.PATH.split(o.delimiter)){if(e){A.push(e)}}}const r=[];for(const s of A){const A=yield tryGetExecutablePath(o.join(s,e),t);if(A){r.push(A)}}return r})}function readCopyOptions(e){const t=e.force==null?true:e.force;const A=Boolean(e.recursive);const r=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:t,recursive:A,copySourceDirectory:r}}function cpDirRecursive(e,t,A,r){return j(this,void 0,void 0,function*(){if(A>=255)return;A++;yield mkdirP(t);const s=yield ioUtil.readdir(e);for(const n of s){const s=`${e}/${n}`;const i=`${t}/${n}`;const o=yield ioUtil.lstat(s);if(o.isDirectory()){yield cpDirRecursive(s,i,A,r)}else{yield io_copyFile(s,i,r)}}yield ioUtil.chmod(t,(yield ioUtil.stat(e)).mode)})}function io_copyFile(e,t,A){return j(this,void 0,void 0,function*(){if((yield ioUtil.lstat(e)).isSymbolicLink()){try{yield ioUtil.lstat(t);yield ioUtil.unlink(t)}catch(e){if(e.code==="EPERM"){yield ioUtil.chmod(t,"0666");yield ioUtil.unlink(t)}}const A=yield ioUtil.readlink(e);yield ioUtil.symlink(A,t,ioUtil.IS_WINDOWS?"junction":null)}else if(!(yield ioUtil.exists(t))||A){yield ioUtil.copyFile(e,t)}})}const $=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("timers");var ee=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const te=process.platform==="win32";class ToolRunner extends T.EventEmitter{constructor(e,t,A){super();if(!e){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=e;this.args=t||[];this.options=A||{}}_debug(e){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(e)}}_getCommandString(e,t){const A=this._getSpawnFileName();const r=this._getSpawnArgs(e);let s=t?"":"[command]";if(te){if(this._isCmdFile()){s+=A;for(const e of r){s+=` ${e}`}}else if(e.windowsVerbatimArguments){s+=`"${A}"`;for(const e of r){s+=` ${e}`}}else{s+=this._windowsQuoteCmdArg(A);for(const e of r){s+=` ${this._windowsQuoteCmdArg(e)}`}}}else{s+=A;for(const e of r){s+=` ${e}`}}return s}_processLineBuffer(e,t,A){try{let s=t+e.toString();let n=s.indexOf(r.EOL);while(n>-1){const e=s.substring(0,n);A(e);s=s.substring(n+r.EOL.length);n=s.indexOf(r.EOL)}return s}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(te){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(te){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const A of this.args){t+=" ";t+=e.windowsVerbatimArguments?A:this._windowsQuoteCmdArg(A)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let A=false;for(const r of e){if(t.some(e=>e===r)){A=true;break}}if(!A){return e}let r='"';let s=true;for(let t=e.length;t>0;t--){r+=e[t-1];if(s&&e[t-1]==="\\"){r+="\\"}else if(e[t-1]==='"'){s=true;r+='"'}else{s=false}}r+='"';return r.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let A=true;for(let r=e.length;r>0;r--){t+=e[r-1];if(A&&e[r-1]==="\\"){t+="\\"}else if(e[r-1]==='"'){A=true;t+="\\"}else{A=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const A={};A.cwd=e.cwd;A.env=e.env;A["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){A.argv0=`"${t}"`}return A}exec(){return ee(this,void 0,void 0,function*(){if(!isRooted(this.toolPath)&&(this.toolPath.includes("/")||te&&this.toolPath.includes("\\"))){this.toolPath=o.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield which(this.toolPath,true);return new Promise((e,t)=>ee(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const A=this._cloneExecOptions(this.options);if(!A.silent&&A.outStream){A.outStream.write(this._getCommandString(A)+r.EOL)}const s=new ExecState(A,this.toolPath);s.on("debug",e=>{this._debug(e)});if(this.options.cwd&&!(yield exists(this.options.cwd))){return t(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const n=this._getSpawnFileName();const i=M.spawn(n,this._getSpawnArgs(A),this._getSpawnOptions(this.options,n));let o="";if(i.stdout){i.stdout.on("data",e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!A.silent&&A.outStream){A.outStream.write(e)}o=this._processLineBuffer(e,o,e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}})})}let a="";if(i.stderr){i.stderr.on("data",e=>{s.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!A.silent&&A.errStream&&A.outStream){const t=A.failOnStdErr?A.errStream:A.outStream;t.write(e)}a=this._processLineBuffer(e,a,e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}})})}i.on("error",e=>{s.processError=e.message;s.processExited=true;s.processClosed=true;s.CheckComplete()});i.on("exit",e=>{s.processExitCode=e;s.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);s.CheckComplete()});i.on("close",e=>{s.processExitCode=e;s.processExited=true;s.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);s.CheckComplete()});s.on("done",(A,r)=>{if(o.length>0){this.emit("stdline",o)}if(a.length>0){this.emit("errline",a)}i.removeAllListeners();if(A){t(A)}else{e(r)}});if(this.options.input){if(!i.stdin){throw new Error("child process missing stdin")}i.stdin.end(this.options.input)}}))})}}function argStringToArray(e){const t=[];let A=false;let r=false;let s="";function append(e){if(r&&e!=='"'){s+="\\"}s+=e;r=false}for(let n=0;n0){t.push(s);s=""}continue}append(i)}if(s.length>0){t.push(s.trim())}return t}class ExecState extends T.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,$.setTimeout)(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}var Ae=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function exec_exec(e,t,A){return Ae(this,void 0,void 0,function*(){const r=tr.argStringToArray(e);if(r.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const s=r[0];t=r.slice(1).concat(t||[]);const n=new tr.ToolRunner(s,t,A);return n.exec()})}function getExecOutput(e,t,A){return Ae(this,void 0,void 0,function*(){var r,s;let n="";let i="";const o=new StringDecoder("utf8");const a=new StringDecoder("utf8");const c=(r=A===null||A===void 0?void 0:A.listeners)===null||r===void 0?void 0:r.stdout;const l=(s=A===null||A===void 0?void 0:A.listeners)===null||s===void 0?void 0:s.stderr;const stdErrListener=e=>{i+=a.write(e);if(l){l(e)}};const stdOutListener=e=>{n+=o.write(e);if(c){c(e)}};const h=Object.assign(Object.assign({},A===null||A===void 0?void 0:A.listeners),{stdout:stdOutListener,stderr:stdErrListener});const g=yield exec_exec(e,t,Object.assign(Object.assign({},A),{listeners:h}));n+=o.end();i+=a.end();return{exitCode:g,stdout:n,stderr:i}})}var re=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const getWindowsInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',undefined,{silent:true});const{stdout:t}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',undefined,{silent:true});return{name:t.trim(),version:e.trim()}});const getMacOsInfo=()=>re(void 0,void 0,void 0,function*(){var e,t,A,r;const{stdout:s}=yield exec.getExecOutput("sw_vers",undefined,{silent:true});const n=(t=(e=s.match(/ProductVersion:\s*(.+)/))===null||e===void 0?void 0:e[1])!==null&&t!==void 0?t:"";const i=(r=(A=s.match(/ProductName:\s*(.+)/))===null||A===void 0?void 0:A[1])!==null&&r!==void 0?r:"";return{name:i,version:n}});const getLinuxInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput("lsb_release",["-i","-r","-s"],{silent:true});const[t,A]=e.trim().split("\n");return{name:t,version:A}});const se=r.platform();const ne=r.arch();const ie=se==="win32";const oe=se==="darwin";const ae=se==="linux";function getDetails(){return re(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield ie?getWindowsInfo():oe?getMacOsInfo():getLinuxInfo()),{platform:se,arch:ne,isWindows:ie,isMacOS:oe,isLinux:ae})})}var ce=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var le;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(le||(le={}));function exportVariable(e,t){const A=toCommandValue(t);process.env[e]=A;const r=process.env["GITHUB_ENV"]||"";if(r){return issueFileCommand("ENV",prepareKeyValueMessage(e,t))}issueCommand("set-env",{name:e},A)}function core_setSecret(e){issueCommand("add-mask",{},e)}function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){issueFileCommand("PATH",e)}else{issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${path.delimiter}${process.env["PATH"]}`}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()}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())}function getBooleanInput(e,t){const A=["true","True","TRUE"];const r=["false","False","FALSE"];const s=getInput(e,t);if(A.includes(s))return true;if(r.includes(s))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\``)}function setOutput(e,t){const A=process.env["GITHUB_OUTPUT"]||"";if(A){return file_command_issueFileCommand("OUTPUT",file_command_prepareKeyValueMessage(e,t))}process.stdout.write(r.EOL);command_issueCommand("set-output",{name:e},utils_toCommandValue(t))}function setCommandEcho(e){issue("echo",e?"on":"off")}function setFailed(e){process.exitCode=le.Failure;error(e)}function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}function core_debug(e){issueCommand("debug",{},e)}function error(e,t={}){command_issueCommand("error",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function warning(e,t={}){command_issueCommand("warning",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function notice(e,t={}){issueCommand("notice",toCommandProperties(t),e instanceof Error?e.toString():e)}function info(e){process.stdout.write(e+os.EOL)}function startGroup(e){issue("group",e)}function endGroup(){issue("endgroup")}function group(e,t){return ce(this,void 0,void 0,function*(){startGroup(e);let A;try{A=yield t()}finally{endGroup()}return A})}function saveState(e,t){const A=process.env["GITHUB_STATE"]||"";if(A){return issueFileCommand("STATE",prepareKeyValueMessage(e,t))}issueCommand("save-state",{name:e},toCommandValue(t))}function getState(e){return process.env[`STATE_${e}`]||""}function getIDToken(e){return ce(this,void 0,void 0,function*(){return yield OidcClient.getIDToken(e)})}}};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 r=true;try{__webpack_modules__[e](A,A.exports,__nccwpck_require__);r=false}finally{if(r)delete __webpack_module_cache__[e]}return A.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=decodeURIComponent(new URL(".",import.meta.url).pathname).slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";(()=>{var e=typeof Symbol==="function"?Symbol("webpack queues"):"__webpack_queues__";var t=typeof Symbol==="function"?Symbol("webpack exports"):"__webpack_exports__";var A=typeof Symbol==="function"?Symbol("webpack error"):"__webpack_error__";var resolveQueue=e=>{if(e&&e.d<1){e.d=1;e.forEach(e=>e.r--);e.forEach(e=>e.r--?e.r++:e())}};var wrapDeps=r=>r.map(r=>{if(r!==null&&typeof r==="object"){if(r[e])return r;if(r.then){var s=[];s.d=0;r.then(e=>{n[t]=e;resolveQueue(s)},e=>{n[A]=e;resolveQueue(s)});var n={};n[e]=e=>e(s);return n}}var i={};i[e]=e=>{};i[t]=r;return i});__nccwpck_require__.a=(r,s,n)=>{var i;n&&((i=[]).d=-1);var o=new Set;var a=r.exports;var c;var l;var h;var g=new Promise((e,t)=>{h=t;l=e});g[t]=a;g[e]=e=>(i&&e(i),o.forEach(e),g["catch"](e=>{}));r.exports=g;s(r=>{c=wrapDeps(r);var s;var getResult=()=>c.map(e=>{if(e[A])throw e[A];return e[t]});var n=new Promise(t=>{s=()=>t(getResult);s.r=0;var fnQueue=e=>e!==i&&!o.has(e)&&(o.add(e),e&&!e.d&&(s.r++,e.push(s)));c.map(t=>t[e](fnQueue))});return s.r?n:getResult()},e=>(e?h(g[A]=e):l(a),resolveQueue(i)));i&&i.d<0&&(i.d=0)}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var A in t){if(__nccwpck_require__.o(t,A)&&!__nccwpck_require__.o(e,A)){Object.defineProperty(e,A,{enumerable:true,get:t[A]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();var __webpack_exports__=__nccwpck_require__(6628);__webpack_exports__=await __webpack_exports__; \ No newline at end of file +/*! ws. MIT License. Einar Otto Stangvik */o[i-4]=A[0];o[i-3]=A[1];o[i-2]=A[2];o[i-1]=A[3];o[1]=n;if(n===126){o.writeUInt16BE(s,2)}else if(n===127){o[2]=o[3]=0;o.writeUIntBE(s,4,6)}o[1]|=128;for(let e=0;e{const{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:s}=A(8522);const{isValidClientWindowBits:n}=A(8625);const{MessageSizeExceededError:i}=A(8707);const o=Buffer.from([0,0,255,255]);const a=Symbol("kBuffer");const c=Symbol("kLength");class PerMessageDeflate{#j;#Q={};#$=0;constructor(e,t){this.#Q.serverNoContextTakeover=e.has("server_no_context_takeover");this.#Q.serverMaxWindowBits=e.get("server_max_window_bits");this.#$=t.maxPayloadSize}decompress(e,t,A){if(!this.#j){let e=s;if(this.#Q.serverMaxWindowBits){if(!n(this.#Q.serverMaxWindowBits)){A(new Error("Invalid server_max_window_bits"));return}e=Number.parseInt(this.#Q.serverMaxWindowBits)}try{this.#j=r({windowBits:e})}catch(e){A(e);return}this.#j[a]=[];this.#j[c]=0;this.#j.on("data",e=>{this.#j[c]+=e.length;if(this.#$>0&&this.#j[c]>this.#$){A(new i);this.#j.removeAllListeners();this.#j.destroy();this.#j=null;return}this.#j[a].push(e)});this.#j.on("error",e=>{this.#j=null;A(e)})}this.#j.write(e);if(t){this.#j.write(o)}this.#j.flush(()=>{if(!this.#j){return}const e=Buffer.concat(this.#j[a],this.#j[c]);this.#j[a].length=0;this.#j[c]=0;A(null,e)})}}e.exports={PerMessageDeflate:PerMessageDeflate}},1652:(e,t,A)=>{const{Writable:r}=A(7075);const s=A(4589);const{parserStates:n,opcodes:i,states:o,emptyBuffer:a,sentCloseFrameState:c}=A(736);const{kReadyState:l,kSentClose:h,kResponse:g,kReceivedClose:u}=A(1216);const{channels:E}=A(2414);const{isValidStatusCode:Q,isValidOpcode:C,failWebsocketConnection:B,websocketMessageReceived:I,utf8Decode:d,isControlFrame:f,isTextBinaryFrame:p,isContinuationFrame:w}=A(8625);const{WebsocketFrameSend:y}=A(3264);const{closeWebSocketConnection:m}=A(6897);const{PerMessageDeflate:R}=A(9469);const{MessageSizeExceededError:D}=A(8707);function failWebsocketConnectionWithCode(e,t,A){m(e,t,A,Buffer.byteLength(A));B(e,A)}class ByteParser extends r{#ee=[];#te=0;#Ae=0;#re=false;#w=n.INFO;#se={};#ne=[];#ie;#oe;#$;constructor(e,t,A={}){super();this.ws=e;this.#ie=t==null?new Map:t;this.#oe=A.maxFragments??0;this.#$=A.maxPayloadSize??0;if(this.#ie.has("permessage-deflate")){this.#ie.set("permessage-deflate",new R(t,A))}}_write(e,t,A){this.#ee.push(e);this.#Ae+=e.length;this.#re=true;this.run(A)}#ae(){if(this.#$>0&&!f(this.#se.opcode)&&this.#se.payloadLength+this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(e){while(this.#re){if(this.#w===n.INFO){if(this.#Ae<2){return e()}const t=this.consume(2);const A=(t[0]&128)!==0;const r=t[0]&15;const s=(t[1]&128)===128;const o=!A&&r!==i.CONTINUATION;const a=t[1]&127;const c=t[0]&64;const l=t[0]&32;const h=t[0]&16;if(!C(r)){B(this.ws,"Invalid opcode received");return e()}if(s){B(this.ws,"Frame cannot be masked");return e()}if(c!==0&&!this.#ie.has("permessage-deflate")){B(this.ws,"Expected RSV1 to be clear.");return}if(l!==0||h!==0){B(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(o&&!p(r)){B(this.ws,"Invalid frame type was fragmented.");return}if(p(r)&&this.#ne.length>0){B(this.ws,"Expected continuation frame");return}if(this.#se.fragmented&&o){B(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((a>125||o)&&f(r)){B(this.ws,"Control frame either too large or fragmented");return}if(w(r)&&this.#ne.length===0&&!this.#se.compressed){B(this.ws,"Unexpected continuation frame");return}if(a<=125){this.#se.payloadLength=a;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(a===126){this.#w=n.PAYLOADLENGTH_16}else if(a===127){this.#w=n.PAYLOADLENGTH_64}if(p(r)){this.#se.binaryType=r;this.#se.compressed=c!==0}this.#se.opcode=r;this.#se.masked=s;this.#se.fin=A;this.#se.fragmented=o}else if(this.#w===n.PAYLOADLENGTH_16){if(this.#Ae<2){return e()}const t=this.consume(2);this.#se.payloadLength=t.readUInt16BE(0);this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.PAYLOADLENGTH_64){if(this.#Ae<8){return e()}const t=this.consume(8);const A=t.readUInt32BE(0);const r=t.readUInt32BE(4);if(A!==0||r>2**31-1){B(this.ws,"Received payload length > 2^31 bytes.");return}this.#se.payloadLength=r;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.READ_DATA){if(this.#Ae0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fragmented&&this.#se.fin){I(this.ws,this.#se.binaryType,this.consumeFragments())}this.#w=n.INFO}else{this.#ie.get("permessage-deflate").decompress(t,this.#se.fin,(t,A)=>{if(t){const e=t instanceof D?1009:1007;failWebsocketConnectionWithCode(this.ws,e,t.message);return}if(!this.writeFragments(A)){return}if(this.#$>0&&this.#te>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new D).message);return}if(!this.#se.fin){this.#w=n.INFO;this.#re=true;this.run(e);return}I(this.ws,this.#se.binaryType,this.consumeFragments());this.#re=true;this.#w=n.INFO;this.run(e)});this.#re=false;break}}}}}consume(e){if(e>this.#Ae){throw new Error("Called consume() before buffers satiated.")}else if(e===0){return a}if(this.#ee[0].length===e){this.#Ae-=this.#ee[0].length;return this.#ee.shift()}const t=Buffer.allocUnsafe(e);let A=0;while(A!==e){const r=this.#ee[0];const{length:s}=r;if(s+A===e){t.set(this.#ee.shift(),A);break}else if(s+A>e){t.set(r.subarray(0,e-A),A);this.#ee[0]=r.subarray(e-A);break}else{t.set(this.#ee.shift(),A);A+=r.length}}this.#Ae-=e;return t}writeFragments(e){if(this.#oe>0&&this.#ne.length===this.#oe){failWebsocketConnectionWithCode(this.ws,1008,"Too many message fragments");return false}this.#te+=e.length;this.#ne.push(e);return true}consumeFragments(){const e=this.#ne;if(e.length===1){this.#te=0;return e.shift()}const t=Buffer.concat(e,this.#te);this.#ne=[];this.#te=0;return t}parseCloseBody(e){s(e.length!==1);let t;if(e.length>=2){t=e.readUInt16BE(0)}if(t!==undefined&&!Q(t)){return{code:1002,reason:"Invalid status code",error:true}}let A=e.subarray(2);if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}try{A=d(A)}catch{return{code:1007,reason:"Invalid UTF-8",error:true}}return{code:t,reason:A,error:false}}parseControlFrame(e){const{opcode:t,payloadLength:A}=this.#se;if(t===i.CLOSE){if(A===1){B(this.ws,"Received close frame with a 1-byte body.");return false}this.#se.closeInfo=this.parseCloseBody(e);if(this.#se.closeInfo.error){const{code:e,reason:t}=this.#se.closeInfo;m(this.ws,e,t,t.length);B(this.ws,t);return false}if(this.ws[h]!==c.SENT){let e=a;if(this.#se.closeInfo.code){e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#se.closeInfo.code,0)}const t=new y(e);this.ws[g].socket.write(t.createFrame(i.CLOSE),e=>{if(!e){this.ws[h]=c.SENT}})}this.ws[l]=o.CLOSING;this.ws[u]=true;return false}else if(t===i.PING){if(!this.ws[u]){const t=new y(e);this.ws[g].socket.write(t.createFrame(i.PONG));if(E.ping.hasSubscribers){E.ping.publish({payload:e})}}}else if(t===i.PONG){if(E.pong.hasSubscribers){E.pong.publish({payload:e})}}return true}get closingInfo(){return this.#se.closeInfo}}e.exports={ByteParser:ByteParser}},3900:(e,t,A)=>{const{WebsocketFrameSend:r}=A(3264);const{opcodes:s,sendHints:n}=A(736);const i=A(4660);const o=Buffer[Symbol.species];class SendQueue{#ce=new i;#le=false;#he;constructor(e){this.#he=e}add(e,t,A){if(A!==n.blob){const r=createFrame(e,A);if(!this.#le){this.#he.write(r,t)}else{const e={promise:null,callback:t,frame:r};this.#ce.push(e)}return}const r={promise:e.arrayBuffer().then(e=>{r.promise=null;r.frame=createFrame(e,A)}),callback:t,frame:null};this.#ce.push(r);if(!this.#le){this.#ge()}}async#ge(){this.#le=true;const e=this.#ce;while(!e.isEmpty()){const t=e.shift();if(t.promise!==null){await t.promise}this.#he.write(t.frame,t.callback);t.callback=t.frame=null}this.#le=false}}function createFrame(e,t){return new r(toBuffer(e,t)).createFrame(t===n.string?s.TEXT:s.BINARY)}function toBuffer(e,t){switch(t){case n.string:return Buffer.from(e);case n.arrayBuffer:case n.blob:return new o(e);case n.typedArray:return new o(e.buffer,e.byteOffset,e.byteLength)}}e.exports={SendQueue:SendQueue}},1216: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")}},8625:(e,t,A)=>{const{kReadyState:r,kController:s,kResponse:n,kBinaryType:i,kWebSocketURL:o}=A(1216);const{states:a,opcodes:c}=A(736);const{ErrorEvent:l,createFastMessageEvent:h}=A(5188);const{isUtf8:g}=A(4573);const{collectASequenceOfCodePointsFast:u,removeHTTPWhitespace:E}=A(1900);function isConnecting(e){return e[r]===a.CONNECTING}function isEstablished(e){return e[r]===a.OPEN}function isClosing(e){return e[r]===a.CLOSING}function isClosed(e){return e[r]===a.CLOSED}function fireEvent(e,t,A=(e,t)=>new Event(e,t),r={}){const s=A(e,r);t.dispatchEvent(s)}function websocketMessageReceived(e,t,A){if(e[r]!==a.OPEN){return}let s;if(t===c.TEXT){try{s=B(A)}catch{failWebsocketConnection(e,"Received invalid UTF-8 in text frame.");return}}else if(t===c.BINARY){if(e[i]==="blob"){s=new Blob([A])}else{s=toArrayBuffer(A)}}fireEvent("message",e,h,{origin:e[o].origin,data:s})}function toArrayBuffer(e){if(e.byteLength===e.buffer.byteLength){return e.buffer}return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function isValidSubprotocol(e){if(e.length===0){return false}for(let t=0;t126||A===34||A===40||A===41||A===44||A===47||A===58||A===59||A===60||A===61||A===62||A===63||A===64||A===91||A===92||A===93||A===123||A===125){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{[s]:A,[n]:r}=e;A.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(t){fireEvent("error",e,(e,t)=>new l(e,t),{error:new Error(t),message:t})}}function isControlFrame(e){return e===c.CLOSE||e===c.PING||e===c.PONG}function isContinuationFrame(e){return e===c.CONTINUATION}function isTextBinaryFrame(e){return e===c.TEXT||e===c.BINARY}function isValidOpcode(e){return isTextBinaryFrame(e)||isContinuationFrame(e)||isControlFrame(e)}function parseExtensions(e){const t={position:0};const A=new Map;while(t.position57){return false}}const t=Number.parseInt(e,10);return t>=8&&t<=15}const Q=typeof process.versions.icu==="string";const C=Q?new TextDecoder("utf-8",{fatal:true}):undefined;const B=Q?C.decode.bind(C):function(e){if(g(e)){return e.toString("utf-8")}throw new TypeError("Invalid utf-8 received.")};e.exports={isConnecting:isConnecting,isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived,utf8Decode:B,isControlFrame:isControlFrame,isContinuationFrame:isContinuationFrame,isTextBinaryFrame:isTextBinaryFrame,isValidOpcode:isValidOpcode,parseExtensions:parseExtensions,isValidClientWindowBits:isValidClientWindowBits}},3726:(e,t,A)=>{const{webidl:r}=A(5893);const{URLSerializer:s}=A(1900);const{environmentSettingsObject:n}=A(3168);const{staticPropertyDescriptors:i,states:o,sentCloseFrameState:a,sendHints:c}=A(736);const{kWebSocketURL:l,kReadyState:h,kController:g,kBinaryType:u,kResponse:E,kSentClose:Q,kByteParser:C}=A(1216);const{isConnecting:B,isEstablished:I,isClosing:d,isValidSubprotocol:f,fireEvent:p}=A(8625);const{establishWebSocketConnection:w,closeWebSocketConnection:y}=A(6897);const{ByteParser:m}=A(1652);const{kEnumerableProperty:R,isBlobLike:D}=A(3440);const{getGlobalDispatcher:b}=A(2581);const{types:k}=A(7975);const{ErrorEvent:S,CloseEvent:F}=A(5188);const{SendQueue:N}=A(3900);class WebSocket extends EventTarget{#H={open:null,error:null,close:null,message:null};#ue=0;#Ee="";#ie="";#Qe;constructor(e,t=[]){super();r.util.markAsUncloneable(this);const A="WebSocket constructor";r.argumentLengthCheck(arguments,1,A);const s=r.converters["DOMString or sequence or WebSocketInit"](t,A,"options");e=r.converters.USVString(e,A,"url");t=s.protocols;const i=n.settingsObject.baseUrl;let o;try{o=new URL(e,i)}catch(e){throw new DOMException(e,"SyntaxError")}if(o.protocol==="http:"){o.protocol="ws:"}else if(o.protocol==="https:"){o.protocol="wss:"}if(o.protocol!=="ws:"&&o.protocol!=="wss:"){throw new DOMException(`Expected a ws: or wss: protocol, got ${o.protocol}`,"SyntaxError")}if(o.hash||o.href.endsWith("#")){throw new DOMException("Got fragment","SyntaxError")}if(typeof t==="string"){t=[t]}if(t.length!==new Set(t.map(e=>e.toLowerCase())).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(t.length>0&&!t.every(e=>f(e))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[l]=new URL(o.href);const c=n.settingsObject;this[g]=w(o,t,c,this,(e,t)=>this.#Ce(e,t),s);this[h]=WebSocket.CONNECTING;this[Q]=a.NOT_SENT;this[u]="blob"}close(e=undefined,t=undefined){r.brandCheck(this,WebSocket);const A="WebSocket.close";if(e!==undefined){e=r.converters["unsigned short"](e,A,"code",{clamp:true})}if(t!==undefined){t=r.converters.USVString(t,A,"reason")}if(e!==undefined){if(e!==1e3&&(e<3e3||e>4999)){throw new DOMException("invalid code","InvalidAccessError")}}let s=0;if(t!==undefined){s=Buffer.byteLength(t);if(s>123){throw new DOMException(`Reason must be less than 123 bytes; received ${s}`,"SyntaxError")}}y(this,e,t,s)}send(e){r.brandCheck(this,WebSocket);const t="WebSocket.send";r.argumentLengthCheck(arguments,1,t);e=r.converters.WebSocketSendData(e,t,"data");if(B(this)){throw new DOMException("Sent before connected.","InvalidStateError")}if(!I(this)||d(this)){return}if(typeof e==="string"){const t=Buffer.byteLength(e);this.#ue+=t;this.#Qe.add(e,()=>{this.#ue-=t},c.string)}else if(k.isArrayBuffer(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.arrayBuffer)}else if(ArrayBuffer.isView(e)){this.#ue+=e.byteLength;this.#Qe.add(e,()=>{this.#ue-=e.byteLength},c.typedArray)}else if(D(e)){this.#ue+=e.size;this.#Qe.add(e,()=>{this.#ue-=e.size},c.blob)}}get readyState(){r.brandCheck(this,WebSocket);return this[h]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#ue}get url(){r.brandCheck(this,WebSocket);return s(this[l])}get extensions(){r.brandCheck(this,WebSocket);return this.#ie}get protocol(){r.brandCheck(this,WebSocket);return this.#Ee}get onopen(){r.brandCheck(this,WebSocket);return this.#H.open}set onopen(e){r.brandCheck(this,WebSocket);if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#H.error}set onerror(e){r.brandCheck(this,WebSocket);if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#H.close}set onclose(e){r.brandCheck(this,WebSocket);if(this.#H.close){this.removeEventListener("close",this.#H.close)}if(typeof e==="function"){this.#H.close=e;this.addEventListener("close",e)}else{this.#H.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#H.message}set onmessage(e){r.brandCheck(this,WebSocket);if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[u]}set binaryType(e){r.brandCheck(this,WebSocket);if(e!=="blob"&&e!=="arraybuffer"){this[u]="blob"}else{this[u]=e}}#Ce(e,t){this[E]=e;const A=this[g]?.dispatcher?.webSocketOptions;const r=A?.maxFragments;const s=A?.maxPayloadSize;const n=new m(this,t,{maxFragments:r,maxPayloadSize:s});n.on("drain",onParserDrain);n.on("error",onParserError.bind(this));e.socket.ws=this;this[C]=n;this.#Qe=new N(e.socket);this[h]=o.OPEN;const i=e.headersList.get("sec-websocket-extensions");if(i!==null){this.#ie=i}const a=e.headersList.get("sec-websocket-protocol");if(a!==null){this.#Ee=a}p("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=o.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=o.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=o.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=o.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i,url:R,readyState:R,bufferedAmount:R,onopen:R,onerror:R,onclose:R,close:R,onmessage:R,binaryType:R,send:R,extensions:R,protocol:R,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i});r.converters["sequence"]=r.sequenceConverter(r.converters.DOMString);r.converters["DOMString or sequence"]=function(e,t,A){if(r.util.Type(e)==="Object"&&Symbol.iterator in e){return r.converters["sequence"](e)}return r.converters.DOMString(e,t,A)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:r.converters.any,defaultValue:()=>b()},{key:"headers",converter:r.nullableConverter(r.converters.HeadersInit)}]);r.converters["DOMString or sequence or WebSocketInit"]=function(e){if(r.util.Type(e)==="Object"&&!(Symbol.iterator in e)){return r.converters.WebSocketInit(e)}return{protocols:r.converters["DOMString or sequence"](e)}};r.converters.WebSocketSendData=function(e){if(r.util.Type(e)==="Object"){if(D(e)){return r.converters.Blob(e,{strict:false})}if(ArrayBuffer.isView(e)||k.isArrayBuffer(e)){return r.converters.BufferSource(e)}}return r.converters.USVString(e)};function onParserDrain(){this.ws[E].socket.resume()}function onParserError(e){let t;let A;if(e instanceof F){t=e.reason;A=e.code}else{t=e.message}p("error",this,()=>new S("error",{error:e,message:t}));y(this,A)}e.exports={WebSocket:WebSocket}},2613:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("assert")},4434:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("events")},8611:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http")},5692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("https")},9278:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("net")},4589:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:assert")},6698:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:async_hooks")},4573:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:buffer")},7540:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:console")},7598:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:crypto")},3053:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:diagnostics_channel")},610:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:dns")},8474:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:events")},7067:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http")},2467:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http2")},7030:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:net")},643:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:perf_hooks")},1792:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:querystring")},7075:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream")},1692:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tls")},3136:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:url")},7975:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util")},3429:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util/types")},5919:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:worker_threads")},8522:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:zlib")},2203:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream")},3193:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("string_decoder")},4756:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("tls")},9023:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("util")},6628:(e,t,A)=>{A.a(e,async(e,t)=>{try{var r=A(3218);var s=A(3720);var n=A(9482);var i=A(4508);var o=A(2668);async function main(){const e=(0,n.F9)(r.V4("base_sha",{required:true}),r.V4("head_sha",{required:true}));const t=r.V4("baseline_path");const A=r.V4("fail_on_new").toLowerCase();if(A!==""&&A!=="true"&&A!=="false"){throw new Error("fail_on_new must be true or false")}const a=A==="true";const c=t?await(0,o.mF)(t):undefined;const l=t||a?(0,o.ZY)(e.files.flatMap(e=>e.findings.map(t=>({path:e.path,finding:t}))),c,"git-all"):undefined;let h=0;const g=l?{...e,files:e.files.map(e=>({...e,findings:e.findings.map(()=>l.findings[h++])})),lifecycle:l.counts,resolvedFindings:l.resolvedFindings}:e;const u=g.files.flatMap(e=>e.findings);const E=r.V4("fail_on")||"unreviewed";if(!["never","review","unreviewed"].includes(E)){throw new Error("fail_on must be one of: never, review, unreviewed")}const Q=r.V4("fail_on_risk")||"none";(0,i.p)(Q);const C=g.unreviewed.length>0?"incomplete":u.length>0?"findings":"clean";process.stdout.write("ChangeGuard review completed.\n");r.uH("outcome",C);r.uH("finding_count",String(u.length));r.uH("reviewed_file_count",String(g.reviewedFileCount));r.uH("unreviewed_count",String(g.unreviewedFileCount));r.uH("rule_ids",g.ruleIds.join(","));r.uH("highest_severity",u.length?"review":"none");const B={low:1,medium:2,high:3};const I=u.reduce((e,t)=>{const A=t.riskLevel??"medium";return B[A]>(e==="none"?0:B[e])?A:e},"none");r.uH("highest_risk",I);r.uH("risk_threshold_exceeded",String((0,i.E)(u,Q)));r.uH("new_finding_count",l?String(l.counts.newCount):"");r.uH("existing_finding_count",l?String(l.counts.existingCount):"");r.uH("resolved_finding_count",l?String(l.counts.resolvedCount):"");r.uH("report",JSON.stringify(g));await r.z.addRaw((0,s.B)(g)).write();for(const e of g.files)for(const t of e.findings){r.$e(`${t.ruleId}: ${t.summary}`,{file:e.path,title:`${t.ruleId} (${t.riskLevel??"medium"} risk)`})}if((E!=="never"||a)&&g.unreviewed.length>0){throw new Error("Review incomplete: one or more configurations could not be analyzed.")}if(E==="review"&&u.length>0)throw new Error("Review findings detected.");if((0,i.E)(u,Q))throw new Error(`Review findings meet the ${Q} risk threshold.`);if(a&&(l?.counts.newCount??0)>0)throw new Error("New review findings detected.")}try{await main()}catch(a){r.C1(a instanceof Error?a.message:"Unexpected failure.")}t()}catch(c){t(c)}},1)},2668:(e,t,A)=>{A.d(t,{ZY:()=>classifyFindings,mF:()=>readBaseline});var r=A(7598);const s=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:fs/promises");const n=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:path");const i=1024*1024;const o=1e4;const a=/^[a-f0-9]{64}$/;const c=/^[A-Z0-9][A-Z0-9_-]{0,99}$/;function normaliseRepositoryPath(e){if(!e||e.includes("\0"))throw new Error("Baseline configuration paths must be repository-relative.");const t=e.replaceAll("\\","/");if(t.startsWith("/")||/^[A-Za-z]:/.test(t)||(0,n.isAbsolute)(e)||n.win32.isAbsolute(e)){throw new Error("Baseline configuration paths must be repository-relative.")}const A=t.split("/");if(A.some(e=>e===".."))throw new Error("Baseline configuration paths must not traverse directories.");const r=A.filter(e=>e&&e!==".").join("/");if(!r||r.length>2048||r.includes(":")){throw new Error("Baseline configuration paths must be repository-relative.")}return r}function findingFingerprint(e,t){const A=normaliseRepositoryPath(t);const s=["changeguard-baseline-v1",e.ruleId,A,e.field,e.category??"unspecified",e.riskLevel??"medium",e.summary];return(0,r.createHash)("sha256").update(JSON.stringify(s),"utf8").digest("hex")}function createBaseline(e,t){const A=new Map;for(const e of t){const t=normaliseRepositoryPath(e.path);const r=findingFingerprint(e.finding,t);const s=A.get(r);if(s){s.count++}else{A.set(r,{fingerprint:r,ruleId:e.finding.ruleId,path:t,field:e.finding.field,riskLevel:e.finding.riskLevel??"medium",count:1})}}if(A.size>o)throw new Error("Too many findings for a ChangeGuard baseline.");return{schemaVersion:1,comparisonKind:e,findings:[...A.values()].sort(compareBaselineFinding)}}function compareBaselineFinding(e,t){return compareText(e.path,t.path)||compareText(e.ruleId,t.ruleId)||compareText(e.field,t.field)||compareText(e.fingerprint,t.fingerprint)}function compareText(e,t){return et?1:0}function validateBaseline(e){if(typeof e!=="object"||e===null||Array.isArray(e))throw new Error("Baseline must be a JSON object.");const t=e;if(t.schemaVersion!==1)throw new Error("Unsupported ChangeGuard baseline schema version.");if(!["configuration-pair","git-file","git-all"].includes(String(t.comparisonKind))){throw new Error("Baseline comparisonKind is invalid.")}if(!Array.isArray(t.findings)||t.findings.length>o){throw new Error("Baseline findings must be a bounded array.")}let A=0;const r=new Set;const s=t.findings.map(e=>{if(typeof e!=="object"||e===null||Array.isArray(e))throw new Error("Baseline finding is invalid.");const t=e;if(typeof t.fingerprint!=="string"||!a.test(t.fingerprint)||r.has(t.fingerprint)){throw new Error("Baseline finding fingerprint is invalid or duplicated.")}if(typeof t.ruleId!=="string"||!c.test(t.ruleId))throw new Error("Baseline finding ruleId is invalid.");if(typeof t.path!=="string"||normaliseRepositoryPath(t.path)!==t.path)throw new Error("Baseline finding path is invalid.");if(typeof t.field!=="string"||!t.field||t.field.length>256||/[\r\n\0]/.test(t.field)){throw new Error("Baseline finding field is invalid.")}if(t.riskLevel!=="low"&&t.riskLevel!=="medium"&&t.riskLevel!=="high"){throw new Error("Baseline finding riskLevel is invalid.")}if(!Number.isSafeInteger(t.count)||t.count<1||t.count>o){throw new Error("Baseline finding count is invalid.")}A+=t.count;if(A>o)throw new Error("Baseline contains too many findings.");r.add(t.fingerprint);return{fingerprint:t.fingerprint,ruleId:t.ruleId,path:t.path,field:t.field,riskLevel:t.riskLevel,count:t.count}});s.sort(compareBaselineFinding);return{schemaVersion:1,comparisonKind:t.comparisonKind,findings:s}}function classifyFindings(e,t,A){if(t&&t.comparisonKind!==A)throw new Error("Baseline comparison type does not match the selected review.");const r=new Map((t?.findings??[]).map(e=>[e.fingerprint,e.count]));const s=new Map;const n={newCount:0,existingCount:0,resolvedCount:0};const i=e.map(({path:e,finding:t})=>{const A=findingFingerprint(t,e);const i=(s.get(A)??0)+1;s.set(A,i);const o=i<=(r.get(A)??0)?"EXISTING":"NEW";if(o==="EXISTING")n.existingCount++;else n.newCount++;return{...t,lifecycle:o}});const o=[];if(t){for(const e of t.findings){const t=e.count-(s.get(e.fingerprint)??0);if(t>0){n.resolvedCount+=t;o.push({...e,count:t,lifecycle:"RESOLVED"})}}}return{findings:i,resolvedFindings:o,counts:n}}async function checkedBaselinePath(e,t){if(!e||e.includes("\0")||(0,n.isAbsolute)(e)||n.win32.isAbsolute(e)){throw new Error("Baseline paths must be relative to the repository root.")}const A=e.replaceAll("\\","/");const r=A.split("/");if(r.some(e=>e===".."))throw new Error("Baseline paths must not traverse directories.");const i=r.filter(e=>e&&e!==".").join("/");if(!i)throw new Error("Baseline path is invalid.");const o=await(0,s.realpath)(t);const a=(0,n.resolve)(o,i);const c=(0,n.relative)(o,a);if(!c||c.startsWith(`..${n.sep}`)||c===".."||(0,n.isAbsolute)(c))throw new Error("Baseline paths must stay within the repository root.");const l=c.split(n.sep);let h=o;for(const e of l.slice(0,-1)){h=(0,n.resolve)(h,e);const t=await(0,s.lstat)(h).catch(()=>undefined);if(!t?.isDirectory()||t.isSymbolicLink())throw new Error("Baseline parent path must be an existing regular directory.")}return{absolute:a,relative:c.split(n.sep).join("/")}}async function readBaseline(e,t=process.cwd()){const A=await checkedBaselinePath(e,t);const r=await(0,s.lstat)(A.absolute).catch(()=>undefined);if(!r?.isFile()||r.isSymbolicLink())throw new Error("Baseline must be an existing regular file.");if(r.size>i)throw new Error("Baseline exceeds the supported size limit.");let n;try{n=JSON.parse(await(0,s.readFile)(A.absolute,"utf8"))}catch{throw new Error("Baseline is not valid JSON.")}return validateBaseline(n)}async function writeBaseline(e,t,A=process.cwd()){const r=await checkedBaselinePath(e,A);const s=`${JSON.stringify(validateBaseline(t),null,2)}\n`;if(Buffer.byteLength(s,"utf8")>i)throw new Error("Baseline exceeds the supported size limit.");let n;try{n=await open(r.absolute,"wx",384);await n.writeFile(s,"utf8");await n.close()}catch{await(n?.close().catch(()=>undefined));throw new Error("Unable to create baseline; the destination may already exist or be unavailable.")}return r.relative}},9482:(e,t,A)=>{A.d(t,{F9:()=>reviewPullRequest});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:child_process");function readClientId(e){if(!Object.prototype.hasOwnProperty.call(e,"client_id")){return undefined}const t=e.client_id;if(typeof t!=="string"||t.trim().length===0){throw new Error("client_id must be a non-empty string")}return t}function compareClientIds(e,t){const A=readClientId(e);const r=readClientId(t);if(A===r){return[]}const s=A===undefined?"CLIENT_ID_ADDED":r===undefined?"CLIENT_ID_REMOVED":"CLIENT_ID_CHANGED";const n=A===undefined?"client ID added":r===undefined?"client ID removed":"client ID changed";return[{ruleId:s,severity:"review",field:"client_id",summary:n}]}function applicationUrl(e){const t=e.application_url;if(t===undefined)return undefined;if(typeof t!=="string"||!t.trim()){throw new Error("application_url must be a non-empty string when provided")}return t}function redirectUrls(e){const t=e.auth;if(t===undefined)return new Set;if(typeof t!=="object"||t===null||Array.isArray(t)){throw new Error("[auth] must be a table when provided")}const A=t.redirect_urls;if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error("[auth].redirect_urls must be an array of non-empty strings")}return new Set(A)}function compareUrls(e,t){const A=applicationUrl(e);const r=applicationUrl(t);const s=redirectUrls(e);const n=redirectUrls(t);const i=[];if(A!==r){const e=A===undefined?"added":r===undefined?"removed":"changed";i.push({ruleId:"APPLICATION_URL_CHANGED",severity:"review",field:"application_url",summary:`application_url ${e}; review the intended app environment and destination`})}const o=[...n].filter(e=>!s.has(e)).length;const a=[...s].filter(e=>!n.has(e)).length;if(o||a){i.push({ruleId:"AUTH_REDIRECT_URLS_CHANGED",severity:"review",field:"auth.redirect_urls",summary:`authorization redirect URL set changed (added: ${o}; removed: ${a}); review OAuth callback configuration`})}return i}function isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function normalise(e){if(Array.isArray(e))return e.map(normalise);if(isTable(e)){return Object.fromEntries(Object.keys(e).sort().map(t=>[t,normalise(e[t])]))}return e}function readTopicList(e,t){const A=e[t];if(A===undefined)return[];if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim())){throw new Error(`webhooks.subscriptions.${t} must be an array of non-empty strings`)}return[...new Set(A.map(e=>e.trim()))].sort()}function readWebhooks(e){const t=e.webhooks;if(t===undefined)return{routes:new Map};if(!isTable(t))throw new Error("[webhooks] must be a table");const A=t.api_version;if(A!==undefined&&(typeof A!=="string"||!A.trim())){throw new Error("[webhooks].api_version must be a non-empty string")}const r=t.subscriptions??[];if(!Array.isArray(r)){throw new Error("webhooks.subscriptions must be an array of tables")}const s=new Map;for(const e of r){if(!isTable(e))throw new Error("Each webhook subscription must be a table");const t=readTopicList(e,"topics");const A=readTopicList(e,"compliance_topics");if(!t.length&&!A.length){throw new Error("Webhook subscription requires topics or compliance_topics")}if(typeof e.uri!=="string"||!e.uri.trim()){throw new Error("Webhook subscription uri must be a non-empty string")}if(e.include_fields!==undefined&&(!Array.isArray(e.include_fields)||!e.include_fields.every(e=>typeof e==="string"&&e.trim()))){throw new Error("Webhook include_fields must be an array of non-empty strings")}if(e.filter!==undefined&&typeof e.filter!=="string"){throw new Error("Webhook filter must be a string")}const{topics:r,compliance_topics:n,...i}=e;const o=JSON.stringify(normalise({...i,...e.include_fields!==undefined?{include_fields:[...new Set(e.include_fields)].sort()}:{}}));for(const[e,r]of[["topics",t],["compliance_topics",A]]){for(const t of r){const A=JSON.stringify([e,t]);const r=s.get(A)??new Set;r.add(o);s.set(A,r)}}}return{version:A,routes:s}}function sameSet(e,t){return e.size===t.size&&[...e].every(e=>t.has(e))}function compareWebhooks(e,t){const A=readWebhooks(e);const r=readWebhooks(t);const s=[];if(A.version!==r.version){s.push({ruleId:"WEBHOOK_API_VERSION_CHANGED",severity:"review",field:"webhooks.api_version",summary:"webhook API version changed; review delivery payload compatibility"})}let n=0;let i=0;let o=0;for(const e of new Set([...A.routes.keys(),...r.routes.keys()])){const t=A.routes.get(e);const s=r.routes.get(e);if(!t)n++;else if(!s)i++;else if(!sameSet(t,s))o++}if(n||i||o){s.push({ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",severity:"review",field:"webhooks.subscriptions",summary:`webhook routes changed (added: ${n}; removed: ${i}; modified: ${o}); review topics, destinations and delivery settings`})}return s}function events_isTable(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function readString(e,t,A){const r=e[t];if(typeof r!=="string"||!r.trim()){throw new Error(`${A}.${t} must be a non-empty string`)}return r.trim()}function readStringSet(e,t,A){const r=e[t];if(!Array.isArray(r)||!r.every(e=>typeof e==="string"&&e.trim())){throw new Error(`${A}.${t} must be an array of non-empty strings`)}return[...new Set(r.map(e=>e.trim()))].sort()}function readEvents(e){const t=e.events;if(t===undefined)return{subscriptions:new Map};if(!events_isTable(t))throw new Error("[events] must be a table");const A=t.api_version;if(A===undefined){throw new Error("[events].api_version is required")}if(typeof A!=="string"||!A.trim()){throw new Error("[events].api_version must be a non-empty string")}const r=t.subscription??[];if(!Array.isArray(r)){throw new Error("events.subscription must be an array of tables")}const s=new Map;for(const e of r){if(!events_isTable(e))throw new Error("Each Events subscription must be a table");const t="events.subscription";const A=readString(e,"handle",t);if(!/^[A-Za-z0-9_-]{1,50}$/.test(A)){throw new Error("events.subscription.handle must be alphanumeric, _, or - and at most 50 characters")}const r=readString(e,"topic",t);const n=readStringSet(e,"actions",t);if(n.some(e=>!["create","update","delete"].includes(e))){throw new Error("events.subscription.actions must contain only create, update, or delete")}const i=readString(e,"uri",t);if(n.includes("update")){readStringSet(e,"triggers",t)}else if(e.triggers!==undefined){readStringSet(e,"triggers",t)}const o=e.query===undefined?undefined:readString(e,"query",t);const a=e.query_filter===undefined?undefined:normalizeFilter(readString(e,"query_filter",t));if(s.has(A))throw new Error("Events subscription handles must be unique");const c=o===undefined?undefined:normalizeGraphQL(o);const l=e.triggers===undefined?[]:[...new Set(e.triggers.map(e=>e.trim()))].sort();const h={actions:n,query:c,filter:a,topic:r,triggers:l,destination:i};s.set(A,{handle:A,fingerprint:JSON.stringify(h),...h})}return{version:A,subscriptions:s}}function compareEvents(e,t){const A=readEvents(e);const r=readEvents(t);const s=[];if(A.version!==r.version){s.push({ruleId:"EVENTS_API_VERSION_CHANGED",severity:"review",field:"events.api_version",summary:"Events API version changed; review preview/runtime compatibility"})}let n=0,i=0,o=0;const a={topic:0,destination:0,actions:0,triggers:0,query:0,filter:0};for(const e of new Set([...A.subscriptions.keys(),...r.subscriptions.keys()])){const t=A.subscriptions.get(e);const s=r.subscriptions.get(e);if(!t)n++;else if(!s)i++;else if(t.fingerprint!==s.fingerprint){o++;for(const e of Object.keys(a))if(JSON.stringify(t[e])!==JSON.stringify(s[e]))a[e]++}}if(n||i||o){const e=o?`; modified fields: ${Object.entries(a).filter(([,e])=>e>0).map(([e,t])=>`${e==="destination"?"destination":e==="filter"?"query filter":e} ${t}`).join(", ")}`:"";s.push({ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",severity:"review",field:"events.subscription",summary:`Events subscriptions changed (created: ${n}; removed: ${i}; modified: ${o}${e}); review the affected subscription configuration`})}return s}function normalizeGraphQL(e){const t=[];const A=/#[^\r\n]*|"""[\s\S]*?"""|"(?:\\.|[^"\\])*"|[A-Za-z_][A-Za-z0-9_]*|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\.\.|[^\s,]/g;for(const r of e.matchAll(A)){if(r[0].startsWith("#"))continue;t.push(r[0])}return t.length?t.join(" "):e}function normalizeFilter(e){let t="",A="",r=false,s=false;for(const n of e.trim()){if(A){t+=n;if(r)r=false;else if(n==="\\")r=true;else if(n===A)A=""}else if(n==='"'||n==="'"){if(s&&t)t+=" ";s=false;A=n;t+=n}else if(/\s/.test(n))s=true;else{if(s&&t)t+=" ";s=false;t+=n}}return t}const s="https://shopify.dev/docs/apps/build/cli-for-apps/app-configuration";const n="https://shopify.dev/docs/apps/build/cli-for-apps/manage-app-config-files";const i="https://shopify.dev/docs/apps/build/online-store/app-proxies";const o=[{ruleId:"SCOPE_REQUIRED_ADDED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was added.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_REMOVED",category:"authorization",field:"access_scopes.scopes",explanation:"A required access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_ADDED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was added.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_REMOVED",category:"authorization",field:"access_scopes.optional_scopes",explanation:"An optional access scope was removed.",documentationUrl:s},{ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",category:"authorization",field:"access_scopes",explanation:"An optional scope became required.",documentationUrl:s},{ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",category:"authorization",field:"access_scopes",explanation:"A required scope became optional.",documentationUrl:s},{ruleId:"CLIENT_ID_ADDED",category:"identity",field:"client_id",explanation:"The app client ID was added.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_REMOVED",category:"identity",field:"client_id",explanation:"The app client ID was removed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"CLIENT_ID_CHANGED",category:"identity",field:"client_id",explanation:"The app client ID changed.",documentationUrl:s,redaction:"The client ID is never included in findings."},{ruleId:"APPLICATION_URL_CHANGED",category:"routing",field:"application_url",explanation:"The app application URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"AUTH_REDIRECT_URLS_CHANGED",category:"routing",field:"auth.redirect_urls",explanation:"The OAuth redirect URL set changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"embedded",explanation:"The embedded app mode changed.",documentationUrl:s},{ruleId:"APP_HANDLE_CHANGED",category:"identity",field:"handle",explanation:"The app handle changed.",documentationUrl:s},{ruleId:"APP_NAME_CHANGED",category:"identity",field:"name",explanation:"The app name changed.",documentationUrl:s,redaction:"Name values are not included in findings."},{ruleId:"LEGACY_INSTALL_FLOW_CHANGED",category:"authorization",field:"access_scopes.use_legacy_install_flow",explanation:"The legacy installation flow setting changed.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",category:"api-access",field:"access.admin.embedded_app_direct_api_access",explanation:"Admin Direct API access was enabled or disabled.",documentationUrl:s},{ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",category:"api-access",field:"access.admin.direct_api_mode",explanation:"Admin Direct API online/offline mode changed.",documentationUrl:s},{ruleId:"CUSTOMER_AUTH_REDIRECTS_CHANGED",category:"authorization",field:"customer_authentication.redirect_uris",explanation:"Customer account authentication redirect URIs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"CUSTOMER_AUTH_ORIGINS_CHANGED",category:"authorization",field:"customer_authentication.javascript_origins",explanation:"Customer account authentication JavaScript origins changed.",documentationUrl:s,redaction:"Origin values are never included in findings."},{ruleId:"CUSTOMER_AUTH_LOGOUT_URLS_CHANGED",category:"authorization",field:"customer_authentication.logout_urls",explanation:"Customer account authentication logout URLs changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ENABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was enabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DISABLED",category:"routing",field:"app_proxy",explanation:"An app proxy was disabled.",documentationUrl:i,redaction:"Proxy destinations are never included in findings."},{ruleId:"APP_PROXY_DESTINATION_CHANGED",category:"routing",field:"app_proxy.url",explanation:"The app proxy destination changed.",documentationUrl:i,redaction:"URL values are never included in findings."},{ruleId:"APP_PROXY_ROUTE_CHANGED",category:"routing",field:"app_proxy.prefix/subpath",explanation:"The app proxy storefront route changed.",documentationUrl:i},{ruleId:"POS_EMBEDDED_MODE_CHANGED",category:"runtime-behaviour",field:"pos.embedded",explanation:"Shopify POS embedded mode changed.",documentationUrl:s},{ruleId:"APP_PREFERENCES_URL_CHANGED",category:"routing",field:"app_preferences.url",explanation:"The app preferences URL changed.",documentationUrl:s,redaction:"URL values are never included in findings."},{ruleId:"EXTENSION_DIRECTORIES_CHANGED",category:"project-discovery",field:"extension_directories",explanation:"The extension discovery directory set changed.",documentationUrl:s},{ruleId:"WEB_DIRECTORIES_CHANGED",category:"project-discovery",field:"web_directories",explanation:"The web discovery directory set changed.",documentationUrl:s},{ruleId:"AUTOMATIC_DEV_URLS_CHANGED",category:"runtime-behaviour",field:"build.automatically_update_urls_on_dev",explanation:"Automatic development URL updates changed.",documentationUrl:s},{ruleId:"WEBHOOK_API_VERSION_CHANGED",category:"event-delivery",field:"webhooks.api_version",explanation:"The webhook API version changed.",documentationUrl:s},{ruleId:"WEBHOOK_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"webhooks.subscriptions",explanation:"Webhook routes or delivery settings changed.",documentationUrl:s,redaction:"Destinations, topics, filters, and field names are never included in findings."},{ruleId:"EVENTS_API_VERSION_CHANGED",category:"event-delivery",field:"events.api_version",explanation:"The Events API version changed.",documentationUrl:s},{ruleId:"EVENTS_SUBSCRIPTIONS_CHANGED",category:"event-delivery",field:"events.subscription",explanation:"Events subscriptions changed.",documentationUrl:s,redaction:"Handles, destinations, topics, triggers, queries, and filters are never included in findings."},{ruleId:"CONFIG_ADDED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was added.",documentationUrl:n},{ruleId:"CONFIG_REMOVED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was removed.",documentationUrl:n},{ruleId:"CONFIG_RENAMED",category:"configuration-lifecycle",field:"configuration",explanation:"A named Shopify app configuration file was renamed.",documentationUrl:n}];const a=new Map(o.map(e=>[e.ruleId,e]));const c={authorization:{level:"high",rationale:"Can change merchant consent, access, or authentication behaviour."},identity:{level:"high",rationale:"Can change the app or environment a deployment targets."},routing:{level:"high",rationale:"Can redirect app, OAuth, proxy, or merchant-facing traffic."},"api-access":{level:"high",rationale:"Can change how the app obtains or uses Admin API access."},"event-delivery":{level:"high",rationale:"Can change event coverage, payload compatibility, or delivery destinations."},"runtime-behaviour":{level:"medium",rationale:"Can change runtime or installation behaviour without directly changing permissions."},"project-discovery":{level:"low",rationale:"Changes which local project paths Shopify CLI discovers."},"configuration-lifecycle":{level:"high",rationale:"Can change which environment configuration is selected for deployment."}};function withRisk(e){const t=c[e.category];return{...e,riskLevel:t.level,riskRationale:t.rationale}}function metadataFor(e,t){const A=a.get(e);if(A)return A;const r=categoryFor(t);return withRisk({ruleId:e,category:r,field:t,explanation:"An internal or otherwise unknown Shopify app configuration value changed.",documentationUrl:s})}function categoryFor(e){if(e.startsWith("access_scopes")||e.startsWith("customer_authentication"))return"authorization";if(e.includes("client_id")||e==="name"||e==="handle")return"identity";if(e.includes("url")||e.includes("proxy")||e.includes("redirect"))return"routing";if(e.startsWith("access.admin"))return"api-access";if(e.startsWith("webhooks")||e.startsWith("events"))return"event-delivery";if(e.startsWith("extension_directories")||e.startsWith("web_directories"))return"project-discovery";if(e.startsWith("configuration"))return"configuration-lifecycle";return"runtime-behaviour"}function ruleCatalogue(){return o.map(e=>({...e}))}for(let e=0;etypeof e==="string"&&e.trim()))throw new Error("[access_scopes].optional_scopes must be an array of non-empty strings");const r=new Set(t.scopes.split(",").map(e=>e.trim()).filter(Boolean));const s=new Set(A.map(e=>e.trim()));const n=[...r].filter(e=>s.has(e));if(n.length>0)throw new Error("Scope cannot be both required and optional: "+n.sort().join(", "));return{required:r,optional:s}}function readOptionalBoolean(e,t){const A=e[t];if(A!==undefined&&typeof A!=="boolean")throw new Error(`${t} must be a boolean`);return A}function readOptionalString(e,t){const A=e[t];if(A!==undefined&&(typeof A!=="string"||!A.trim()))throw new Error(`${t} must be a non-empty string`);return A}function readTable(e,t){const A=e[t];if(A===undefined)return{};if(!isObject(A))throw new Error(`[${t}] must be a table`);return A}function core_readStringSet(e,t){const A=e[t];if(A===undefined)return new Set;if(!Array.isArray(A)||!A.every(e=>typeof e==="string"&&e.trim()))throw new Error(`${t} must be an array of non-empty strings`);return new Set(A.map(e=>e.trim()))}function changedSetFinding(e,t,A,r,s){const n=[...s].filter(e=>!r.has(e)).length;const i=[...r].filter(e=>!s.has(e)).length;if(!n&&!i)return[];return[{ruleId:e,severity:"review",field:t,summary:`${A} changed (added: ${n}; removed: ${i}); review the affected Shopify behaviour`}]}function compareRootSettings(e,t){const A=[];const r=[["embedded","EMBEDDED_MODE_CHANGED","boolean"],["handle","APP_HANDLE_CHANGED","string"],["name","APP_NAME_CHANGED","string"]];for(const[s,n,i]of r){const r=i==="boolean"?readOptionalBoolean(e,s):readOptionalString(e,s);const o=i==="boolean"?readOptionalBoolean(t,s):readOptionalString(t,s);if(r!==o)A.push({ruleId:n,severity:"review",field:s,summary:`${s} changed; review the intended app behaviour and deployment impact`})}const s=isObject(e.access_scopes)?e.access_scopes:{};const n=isObject(t.access_scopes)?t.access_scopes:{};const i=readOptionalBoolean(s,"use_legacy_install_flow");const o=readOptionalBoolean(n,"use_legacy_install_flow");if(i!==o)A.push({ruleId:"LEGACY_INSTALL_FLOW_CHANGED",severity:"review",field:"access_scopes.use_legacy_install_flow",summary:"legacy installation flow setting changed; review OAuth and scope-management behaviour"});const a=readTable(readTable(e,"access"),"admin");const c=readTable(readTable(t,"access"),"admin");const l=readOptionalBoolean(a,"embedded_app_direct_api_access")??false;const h=readOptionalBoolean(c,"embedded_app_direct_api_access")??false;if(l!==h)A.push({ruleId:"ADMIN_DIRECT_API_ACCESS_CHANGED",severity:"review",field:"access.admin.embedded_app_direct_api_access",summary:"Admin Direct API access was enabled or disabled; review client-side API access and authorization behaviour"});const g=readOptionalString(a,"direct_api_mode")??"online";const u=readOptionalString(c,"direct_api_mode")??"online";if(!["online","offline"].includes(g)||!["online","offline"].includes(u))throw new Error("[access.admin].direct_api_mode must be online or offline");if(g!==u)A.push({ruleId:"ADMIN_DIRECT_API_MODE_CHANGED",severity:"review",field:"access.admin.direct_api_mode",summary:"Admin Direct API access mode changed; review online/offline token expectations"});const E=readTable(e,"customer_authentication");const Q=readTable(t,"customer_authentication");A.push(...changedSetFinding("CUSTOMER_AUTH_REDIRECTS_CHANGED","customer_authentication.redirect_uris","Customer authentication redirect URI set",core_readStringSet(E,"redirect_uris"),core_readStringSet(Q,"redirect_uris")));A.push(...changedSetFinding("CUSTOMER_AUTH_ORIGINS_CHANGED","customer_authentication.javascript_origins","Customer authentication JavaScript origin set",core_readStringSet(E,"javascript_origins"),core_readStringSet(Q,"javascript_origins")));A.push(...changedSetFinding("CUSTOMER_AUTH_LOGOUT_URLS_CHANGED","customer_authentication.logout_urls","Customer authentication logout URL set",core_readStringSet(E,"logout_urls"),core_readStringSet(Q,"logout_urls")));const C=readTable(e,"app_proxy");const B=readTable(t,"app_proxy");const I=Object.keys(C).length>0;const d=Object.keys(B).length>0;if(I!==d)A.push({ruleId:d?"APP_PROXY_ENABLED":"APP_PROXY_DISABLED",severity:"review",field:"app_proxy",summary:`app proxy ${d?"enabled":"disabled"}; review storefront routing and access scope behaviour`});if(readOptionalString(C,"url")!==readOptionalString(B,"url"))A.push({ruleId:"APP_PROXY_DESTINATION_CHANGED",severity:"review",field:"app_proxy.url",summary:"app proxy destination changed; review proxy routing and deployment behaviour"});const f=`${readOptionalString(C,"prefix")??""}/${readOptionalString(C,"subpath")??""}`;const p=`${readOptionalString(B,"prefix")??""}/${readOptionalString(B,"subpath")??""}`;if(f!==p)A.push({ruleId:"APP_PROXY_ROUTE_CHANGED",severity:"review",field:"app_proxy.prefix/subpath",summary:"app proxy storefront route changed; review links, theme integrations and merchant-facing URLs"});const w=readTable(e,"pos");const y=readTable(t,"pos");if(readOptionalBoolean(w,"embedded")!==readOptionalBoolean(y,"embedded"))A.push({ruleId:"POS_EMBEDDED_MODE_CHANGED",severity:"review",field:"pos.embedded",summary:"POS embedded mode changed; review Shopify POS app behaviour"});const m=readTable(e,"app_preferences");const R=readTable(t,"app_preferences");if(readOptionalString(m,"url")!==readOptionalString(R,"url"))A.push({ruleId:"APP_PREFERENCES_URL_CHANGED",severity:"review",field:"app_preferences.url",summary:"app preferences URL changed; review the destination used by merchants"});A.push(...changedSetFinding("EXTENSION_DIRECTORIES_CHANGED","extension_directories","Extension discovery directory set",core_readStringSet(e,"extension_directories"),core_readStringSet(t,"extension_directories")));A.push(...changedSetFinding("WEB_DIRECTORIES_CHANGED","web_directories","Web discovery directory set",core_readStringSet(e,"web_directories"),core_readStringSet(t,"web_directories")));const D=readTable(e,"build");const b=readTable(t,"build");if(readOptionalBoolean(D,"automatically_update_urls_on_dev")!==readOptionalBoolean(b,"automatically_update_urls_on_dev"))A.push({ruleId:"AUTOMATIC_DEV_URLS_CHANGED",severity:"review",field:"build.automatically_update_urls_on_dev",summary:"automatic development URL updates changed; review local tunnel and callback behaviour"});return A}function decorate(e){return e.map(e=>{const t=metadataFor(e.ruleId,e.field);return{...e,category:t.category,documentationUrl:t.documentationUrl,riskLevel:t.riskLevel,riskRationale:t.riskRationale}})}function compareConfigs(e,t){const A=readScopes(e);const r=readScopes(t);const s=[];for(const e of[...A.optional].filter(e=>r.required.has(e)).sort())s.push({ruleId:"SCOPE_OPTIONAL_TO_REQUIRED",severity:"review",field:"access_scopes",summary:`scope changed from optional to required: ${e}`});for(const e of[...A.required].filter(e=>r.optional.has(e)).sort())s.push({ruleId:"SCOPE_REQUIRED_TO_OPTIONAL",severity:"review",field:"access_scopes",summary:`scope changed from required to optional: ${e}`});const compare=(e,t,n)=>{const i=n==="required"?A.optional:A.required;const o=n==="required"?r.optional:r.required;for(const A of[...t].filter(t=>!e.has(t)&&!i.has(t)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_ADDED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope added: ${A}`});for(const A of[...e].filter(e=>!t.has(e)&&!o.has(e)).sort())s.push({ruleId:`SCOPE_${n.toUpperCase()}_REMOVED`,severity:"review",field:`access_scopes.${n==="required"?"scopes":"optional_scopes"}`,summary:`${n} scope removed: ${A}`})};compare(A.required,r.required,"required");compare(A.optional,r.optional,"optional");s.push(...compareRootSettings(e,t),...compareClientIds(e,t),...compareUrls(e,t),...compareWebhooks(e,t),...compareEvents(e,t));return decorate(s.sort((e,t)=>e.field.localeCompare(t.field)||e.ruleId.localeCompare(t.ruleId)||e.summary.localeCompare(t.summary)))}var l=A(4572);const h=1024*1024;function resolveCommitRef(e){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes(".."))throw new Error("Invalid Git revision");const t=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],process.cwd()).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(t))throw new Error("Invalid resolved Git commit");return t}function git(e,t){try{return(0,r.execFileSync)("git",e,{cwd:t,stdio:["ignore","pipe","pipe"],maxBuffer:h+4096})}catch{throw new Error("Unable to read the requested Git revision or file")}}function readConfigAtRef(e,t){if(!/^[A-Za-z0-9][A-Za-z0-9._/~^-]*$/.test(e)||e.includes("..")){throw new Error("Invalid Git revision")}if(!t||t.startsWith("/")||t.includes("\\")||t.includes(":")||t.split("/").some(e=>!e||e==="."||e==="..")){throw new Error("Invalid repository-relative file path")}const A=git(["rev-parse","--show-toplevel"],process.cwd()).toString("utf8").trim();const r=git(["rev-parse","--verify","--end-of-options",`${e}^{commit}`],A).toString("utf8").trim();if(!/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(r)){throw new Error("Invalid resolved Git commit")}const s=git(["ls-tree","-z",r,"--",t],A).toString("utf8");if(!/^100(?:644|755) blob /.test(s))throw new Error("Git configuration must be a regular file");const n=git(["cat-file","blob",`${r}:${t}`],A);if(n.length>h||n.includes(0)){throw new Error("Git configuration must be a text file up to 1 MiB")}try{return(0,l.parse)(n.toString("utf8"))}catch{throw new Error("Invalid TOML in Git revision; contents were not printed")}}const g=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/;const u=/(^|\/)shopify\.app(?:\.[^/]+)?\.toml$/;function gitDiff(e,t){const A=(0,r.spawnSync)("git",["diff","--find-renames=20%","--name-status","-z",e,t,"--"],{encoding:"buffer",maxBuffer:4*1024*1024});if(A.error||A.status!==0)throw new Error("Unable to inspect the Git changes.");const s=A.stdout.toString("utf8").split("\0");if(s.at(-1)==="")s.pop();const n=[];for(let e=0;eu.test(e.path)||(e.previousPath?u.test(e.previousPath):false));if(r.length>50)throw new Error("Too many configuration changes for this review.");const s=[];const n=[];for(const e of r){try{if(e.status==="M"){s.push({status:"M",path:e.path,findings:compareConfigs(readConfigAtRef(A,e.path),readConfigAtRef(t,e.path))})}else if(e.status==="A"){readConfigAtRef(t,e.path);s.push({status:"A",path:e.path,findings:[lifecycleFinding("CONFIG_ADDED","configuration","Shopify app configuration file added; review the new environment and its deployment selection")]})}else if(e.status==="D"){s.push({status:"D",path:e.path,findings:[lifecycleFinding("CONFIG_REMOVED","configuration","Shopify app configuration file removed; review which environment remains deployable")]})}else{readConfigAtRef(A,e.previousPath??e.path);readConfigAtRef(t,e.path);s.push({status:"R",previousPath:e.previousPath,path:e.path,findings:[lifecycleFinding("CONFIG_RENAMED","configuration","Shopify app configuration file renamed; review environment selection and deployment workflows"),...compareConfigs(readConfigAtRef(A,e.previousPath??e.path),readConfigAtRef(t,e.path))]})}}catch{n.push({path:e.path,reason:"Configuration could not be analyzed."})}}const i=[...new Set(s.flatMap(e=>e.findings.map(e=>e.ruleId)))].sort();return{schemaVersion:1,note:"Review only; not deployment approval.",files:s,unreviewed:n,changedFileCount:r.length,reviewedFileCount:s.length,unreviewedFileCount:n.length,ruleIds:i}}function reviewPullRequest(e,t){return reviewGitRange(e,t)}},4508:(e,t,A)=>{A.d(t,{E:()=>matchesRiskThreshold,p:()=>validateRiskThreshold});const r={low:1,medium:2,high:3};function validateRiskThreshold(e){if(!["none","low","medium","high"].includes(e))throw new Error("fail_on_risk must be one of: none, low, medium, high")}function matchesRiskThreshold(e,t){if(t==="none")return false;return e.some(e=>r[e.riskLevel??"medium"]>=r[t])}},3720:(e,t,A)=>{A.d(t,{B:()=>renderSummary});function renderSummary(e){if(!Array.isArray(e.files)||!Array.isArray(e.unreviewed)){throw new Error("Invalid ChangeGuard report.")}const t=new Map;const A=new Map;const r=new Map;const s=new Map;let n=0;for(const i of e.files){if(!Array.isArray(i.findings))throw new Error("Invalid findings.");for(const e of i.findings){if(typeof e.ruleId!=="string"||!/^[A-Z][A-Z0-9_]{0,79}$/.test(e.ruleId)){throw new Error("Invalid rule ID.")}t.set(e.ruleId,(t.get(e.ruleId)??0)+1);if(e.category)A.set(e.category,(A.get(e.category)??0)+1);if(e.documentationUrl)r.set(e.ruleId,e.documentationUrl);if(e.riskLevel!==undefined){if(!["low","medium","high"].includes(e.riskLevel))throw new Error("Invalid risk level.");s.set(e.riskLevel,(s.get(e.riskLevel)??0)+1)}n++}}const i=["## ChangeGuard review","","> Review only; not deployment approval.","",`- Configuration files reviewed: ${e.reviewedFileCount??e.files.length}`,`- Review findings: ${n}`,`- Unreviewable configurations: ${e.unreviewedFileCount??e.unreviewed.length}`,"","### Review status",""];if(e.lifecycle)i.splice(7,0,`- New: ${e.lifecycle.newCount}; existing: ${e.lifecycle.existingCount}; resolved: ${e.lifecycle.resolvedCount}`);if(s.size){i.push("","### Findings by risk","","| Risk | Count |","| --- | ---: |");for(const e of["high","medium","low"])if(s.has(e))i.push(`| ${e} | ${s.get(e)} |`);const e=["high","medium","low"].find(e=>s.has(e));i.push("",`Highest risk: **${e}**.`)}if(e.unreviewed.length>0){i.push("**Review incomplete:** Some configurations could not be analysed. The configured failure policy determines the check result.")}else if(n>0){i.push("**Manual review recommended:** Supported-field changes were found. The configured failure policy determines the check result.")}else{i.push("**No supported-field changes detected.** This is not a deployment or security approval.")}if(t.size){i.push("","### Findings by rule","","| Rule | Count |","| --- | ---: |");for(const[e,A]of[...t].sort())i.push(`| ${e} | ${A} |`);if(A.size){i.push("","### Findings by category","","| Category | Count |","| --- | ---: |");for(const[e,t]of[...A].sort())i.push(`| ${e} | ${t} |`)}if(r.size){i.push("","### Rule documentation","");for(const[e,t]of[...r].sort())i.push(`- [${e}](${t})`)}}if(e.unreviewed.length)i.push("","Some configurations could not be reviewed.","See the JSON logs for details.");return`${i.join("\n")}\n`}},3218:(e,t,A)=>{A.d(t,{V4:()=>getInput,C1:()=>setFailed,uH:()=>setOutput,z:()=>N,$e:()=>warning});const r=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("os");function utils_toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}function utils_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}}function command_issueCommand(e,t,A){const s=new Command(e,t,A);process.stdout.write(s.toString()+r.EOL)}function command_issue(e,t=""){command_issueCommand(e,{},t)}const s="::";class Command{constructor(e,t,A){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=A}toString(){let e=s+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 r=this.properties[A];if(r){if(t){t=false}else{e+=","}e+=`${A}=${escapeProperty(r)}`}}}}e+=`${s}${escapeData(this.message)}`;return e}}function escapeData(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return utils_toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}const n=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("crypto");const i=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs");function file_command_issueFileCommand(e,t){const A=process.env[`GITHUB_${e}`];if(!A){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!i.existsSync(A)){throw new Error(`Missing file at path: ${A}`)}i.appendFileSync(A,`${utils_toCommandValue(t)}${r.EOL}`,{encoding:"utf8"})}function file_command_prepareKeyValueMessage(e,t){const A=`ghadelimiter_${n.randomUUID()}`;const s=utils_toCommandValue(t);if(e.includes(A)){throw new Error(`Unexpected input: name should not contain the delimiter "${A}"`)}if(s.includes(A)){throw new Error(`Unexpected input: value should not contain the delimiter "${A}"`)}return`${e}<<${A}${r.EOL}${s}${r.EOL}${A}`}const o=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("path");var a=A(8611);var c=A(5692);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 DecodedURL(A)}catch(e){if(!A.startsWith("http://")&&!A.startsWith("https://"))return new DecodedURL(`http://${A}`)}}else{return undefined}}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 r;if(e.port){r=Number(e.port)}else if(e.protocol==="http:"){r=80}else if(e.protocol==="https:"){r=443}const s=[e.hostname.toUpperCase()];if(typeof r==="number"){s.push(`${s[0]}:${r}`)}for(const e of A.split(",").map(e=>e.trim().toUpperCase()).filter(e=>e)){if(e==="*"||s.some(t=>t===e||t.endsWith(`.${e}`)||e.startsWith(".")&&t.endsWith(`${e}`))){return true}}return false}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]")}class DecodedURL extends URL{constructor(e,t){super(e,t);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}var l=A(770);var h=A(6752);var g=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var u;(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"})(u||(u={}));var E;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(E||(E={}));var Q;(function(e){e["ApplicationJson"]="application/json"})(Q||(Q={}));function lib_getProxyUrl(e){const t=pm.getProxyUrl(new URL(e));return t?t.href:""}const C=[u.MovedPermanently,u.ResourceMoved,u.SeeOther,u.TemporaryRedirect,u.PermanentRedirect];const B=[u.BadGateway,u.ServiceUnavailable,u.GatewayTimeout];const I=null&&["OPTIONS","GET","DELETE","HEAD"];const d=10;const f=5;class HttpClientError extends Error{constructor(e,t){super(e);this.name="HttpClientError";this.statusCode=t;Object.setPrototypeOf(this,HttpClientError.prototype)}}class HttpClientResponse{constructor(e){this.message=e}readBody(){return g(this,void 0,void 0,function*(){return new Promise(e=>g(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 g(this,void 0,void 0,function*(){return new Promise(e=>g(this,void 0,void 0,function*(){const t=[];this.message.on("data",e=>{t.push(e)});this.message.on("end",()=>{e(Buffer.concat(t))})}))})}}function isHttps(e){const t=new URL(e);return t.protocol==="https:"}class lib_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=this._getUserAgentWithOrchestrationId(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 g(this,void 0,void 0,function*(){return this.request("OPTIONS",e,null,t||{})})}get(e,t){return g(this,void 0,void 0,function*(){return this.request("GET",e,null,t||{})})}del(e,t){return g(this,void 0,void 0,function*(){return this.request("DELETE",e,null,t||{})})}post(e,t,A){return g(this,void 0,void 0,function*(){return this.request("POST",e,t,A||{})})}patch(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PATCH",e,t,A||{})})}put(e,t,A){return g(this,void 0,void 0,function*(){return this.request("PUT",e,t,A||{})})}head(e,t){return g(this,void 0,void 0,function*(){return this.request("HEAD",e,null,t||{})})}sendStream(e,t,A,r){return g(this,void 0,void 0,function*(){return this.request(e,t,A,r)})}getJson(e){return g(this,arguments,void 0,function*(e,t={}){t[E.Accept]=this._getExistingOrDefaultHeader(t,E.Accept,Q.ApplicationJson);const A=yield this.get(e,t);return this._processResponse(A,this.requestOptions)})}postJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.post(e,r,A);return this._processResponse(s,this.requestOptions)})}putJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.put(e,r,A);return this._processResponse(s,this.requestOptions)})}patchJson(e,t){return g(this,arguments,void 0,function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[E.Accept]=this._getExistingOrDefaultHeader(A,E.Accept,Q.ApplicationJson);A[E.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,Q.ApplicationJson);const s=yield this.patch(e,r,A);return this._processResponse(s,this.requestOptions)})}request(e,t,A,r){return g(this,void 0,void 0,function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const s=new URL(t);let n=this._prepareRequest(e,s,r);const i=this._allowRetries&&I.includes(e)?this._maxRetries+1:1;let o=0;let a;do{a=yield this.requestRaw(n,A);if(a&&a.message&&a.message.statusCode===u.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(a)){e=t;break}}if(e){return e.handleAuthentication(this,n,A)}else{return a}}let t=this._maxRedirects;while(a.message.statusCode&&C.includes(a.message.statusCode)&&this._allowRedirects&&t>0){const i=a.message.headers["location"];if(!i){break}const o=new URL(i);if(s.protocol==="https:"&&s.protocol!==o.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(o.hostname!==s.hostname){for(const e in r){if(e.toLowerCase()==="authorization"){delete r[e]}}}n=this._prepareRequest(e,o,r);a=yield this.requestRaw(n,A);t--}if(!a.message.statusCode||!B.includes(a.message.statusCode)){return a}o+=1;if(o{function callbackForResult(e,t){if(e){r(e)}else if(!t){r(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 r=false;function handleResult(e,t){if(!r){r=true;A(e,t)}}const s=e.httpModule.request(e.options,e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)});let n;s.on("socket",e=>{n=e});s.setTimeout(this._socketTimeout||3*6e4,()=>{if(n){n.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))});s.on("error",function(e){handleResult(e)});if(t&&typeof t==="string"){s.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",function(){s.end()});t.pipe(s)}else{s.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){const t=new URL(e);const A=pm.getProxyUrl(t);const r=A&&A.hostname;if(!r){return}return this._getProxyAgentDispatcher(t,A)}_prepareRequest(e,t,A){const r={};r.parsedUrl=t;const s=r.parsedUrl.protocol==="https:";r.httpModule=s?https:http;const n=s?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):n;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=e;r.options.headers=this._mergeHeaders(A);if(this.userAgent!=null){r.options.headers["user-agent"]=this.userAgent}r.options.agent=this._getAgent(r.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(r.options)}}return r}_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 r;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[t];if(e){r=typeof e==="number"?e.toString():e}}const s=e[t];if(s!==undefined){return typeof s==="number"?s.toString():s}if(r!==undefined){return r}return A}_getExistingOrDefaultContentTypeHeader(e,t){let A;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[E.ContentType];if(e){if(typeof e==="number"){A=String(e)}else if(Array.isArray(e)){A=e.join(", ")}else{A=e}}}const r=e[E.ContentType];if(r!==undefined){if(typeof r==="number"){return String(r)}else if(Array.isArray(r)){return r.join(", ")}else{return r}}if(A!==undefined){return A}return t}_getAgent(e){let t;const A=pm.getProxyUrl(e);const r=A&&A.hostname;if(this._keepAlive&&r){t=this._proxyAgent}if(!r){t=this._agent}if(t){return t}const s=e.protocol==="https:";let n=100;if(this.requestOptions){n=this.requestOptions.maxSockets||http.globalAgent.maxSockets}if(A&&A.hostname){const e={maxSockets:n,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(A.username||A.password)&&{proxyAuth:`${A.username}:${A.password}`}),{host:A.hostname,port:A.port})};let r;const i=A.protocol==="https:";if(s){r=i?tunnel.httpsOverHttps:tunnel.httpsOverHttp}else{r=i?tunnel.httpOverHttps:tunnel.httpOverHttp}t=r(e);this._proxyAgent=t}if(!t){const e={keepAlive:this._keepAlive,maxSockets:n};t=s?new https.Agent(e):new http.Agent(e);this._agent=t}if(s&&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 r=e.protocol==="https:";A=new ProxyAgent(Object.assign({uri:t.href,pipelining:!this._keepAlive?0:1},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString("base64")}`}));this._proxyAgentDispatcher=A;if(r&&this._ignoreSslError){A.options=Object.assign(A.options.requestTls||{},{rejectUnauthorized:false})}return A}_getUserAgentWithOrchestrationId(e){const t=e||"actions/http-client";const A=process.env["ACTIONS_ORCHESTRATION_ID"];if(A){const e=A.replace(/[^a-z0-9_.-]/gi,"_");return`${t} actions_orchestration_id/${e}`}return t}_performExponentialBackoff(e){return g(this,void 0,void 0,function*(){e=Math.min(d,e);const t=f*Math.pow(2,e);return new Promise(e=>setTimeout(()=>e(),t))})}_processResponse(e,t){return g(this,void 0,void 0,function*(){return new Promise((A,r)=>g(this,void 0,void 0,function*(){const s=e.message.statusCode||0;const n={statusCode:s,result:null,headers:{}};if(s===u.NotFound){A(n)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let i;let o;try{o=yield e.readBody();if(o&&o.length>0){if(t&&t.deserializeDates){i=JSON.parse(o,dateTimeDeserializer)}else{i=JSON.parse(o)}n.result=i}n.headers=e.message.headers}catch(e){}if(s>299){let e;if(i&&i.message){e=i.message}else if(o&&o.length>0){e=o}else{e=`Failed request: (${s})`}const t=new HttpClientError(e,s);t.result=n.result;r(t)}else{A(n)}}))})}}const lowercaseKeys=e=>Object.keys(e).reduce((t,A)=>(t[A.toLowerCase()]=e[A],t),{});var p=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}class auth_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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}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 p(this,void 0,void 0,function*(){throw new Error("not implemented")})}}var w=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};class oidc_utils_OidcClient{static createHttpClient(e=true,t=10){const A={allowRetries:e,maxRetries:t};return new HttpClient("actions/oidc-client",[new BearerCredentialHandler(oidc_utils_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){return w(this,void 0,void 0,function*(){var t;const A=oidc_utils_OidcClient.createHttpClient();const r=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 s=(t=r.result)===null||t===void 0?void 0:t.value;if(!s){throw new Error("Response json body do not have ID Token field")}return s})}static getIDToken(e){return w(this,void 0,void 0,function*(){try{let t=oidc_utils_OidcClient.getIDTokenUrl();if(e){const A=encodeURIComponent(e);t=`${t}&audience=${A}`}debug(`ID token url is ${t}`);const A=yield oidc_utils_OidcClient.getCall(t);setSecret(A);return A}catch(e){throw new Error(`Error message: ${e.message}`)}})}}var y=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{access:m,appendFile:R,writeFile:D}=i.promises;const b="GITHUB_STEP_SUMMARY";const k="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return y(this,void 0,void 0,function*(){if(this._filePath){return this._filePath}const e=process.env[b];if(!e){throw new Error(`Unable to find environment variable for $${b}. Check if your runtime environment supports job summaries.`)}try{yield m(e,i.constants.R_OK|i.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 r=Object.entries(A).map(([e,t])=>` ${e}="${t}"`).join("");if(!t){return`<${e}${r}>`}return`<${e}${r}>${t}`}write(e){return y(this,void 0,void 0,function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const A=yield this.filePath();const r=t?D:R;yield r(A,this._buffer,{encoding:"utf8"});return this.emptyBuffer()})}clear(){return y(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(r.EOL)}addCodeBlock(e,t){const A=Object.assign({},t&&{lang:t});const r=this.wrap("pre",this.wrap("code",e),A);return this.addRaw(r).addEOL()}addList(e,t=false){const A=t?"ol":"ul";const r=e.map(e=>this.wrap("li",e)).join("");const s=this.wrap(A,r);return this.addRaw(s).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:r,rowspan:s}=e;const n=t?"th":"td";const i=Object.assign(Object.assign({},r&&{colspan:r}),s&&{rowspan:s});return this.wrap(n,A,i)}).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:r,height:s}=A||{};const n=Object.assign(Object.assign({},r&&{width:r}),s&&{height:s});const i=this.wrap("img",null,Object.assign({src:e,alt:t},n));return this.addRaw(i).addEOL()}addHeading(e,t){const A=`h${t}`;const r=["h1","h2","h3","h4","h5","h6"].includes(A)?A:"h1";const s=this.wrap(r,e);return this.addRaw(s).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 r=this.wrap("blockquote",e,A);return this.addRaw(r).addEOL()}addLink(e,t){const A=this.wrap("a",e,{href:t});return this.addRaw(A).addEOL()}}const S=new Summary;const F=null&&S;const N=S;function toPosixPath(e){return e.replace(/[\\]/g,"/")}function toWin32Path(e){return e.replace(/[/]/g,"\\")}function toPlatformPath(e){return e.replace(/[/\\]/g,path.sep)}var U=A(3193);var T=A(4434);const M=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("child_process");var L=A(2613);var v=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{chmod:H,copyFile:x,lstat:G,mkdir:Y,open:J,readdir:_,rename:V,rm:O,rmdir:P,stat:W,symlink:q,unlink:Z}=i.promises;const z=process.platform==="win32";function readlink(e){return v(this,void 0,void 0,function*(){const t=yield fs.promises.readlink(e);if(z&&!t.endsWith("\\")){return`${t}\\`}return t})}const K=268435456;const X=i.constants.O_RDONLY;function exists(e){return v(this,void 0,void 0,function*(){try{yield W(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}function isDirectory(e){return v(this,arguments,void 0,function*(e,t=false){const A=t?yield W(e):yield G(e);return A.isDirectory()})}function isRooted(e){e=normalizeSeparators(e);if(!e){throw new Error('isRooted() parameter "p" cannot be empty')}if(z){return e.startsWith("\\")||/^[A-Z]:/i.test(e)}return e.startsWith("/")}function tryGetExecutablePath(e,t){return v(this,void 0,void 0,function*(){let A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){const A=o.extname(e).toUpperCase();if(t.some(e=>e.toUpperCase()===A)){return e}}else{if(isUnixExecutable(A)){return e}}}const r=e;for(const s of t){e=r+s;A=undefined;try{A=yield W(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(A&&A.isFile()){if(z){try{const t=o.dirname(e);const A=o.basename(e).toUpperCase();for(const r of yield _(t)){if(A===r.toUpperCase()){e=o.join(t,r);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(A)){return e}}}}return""})}function normalizeSeparators(e){e=e||"";if(z){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==undefined&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==undefined&&e.uid===process.getuid()}function getCmdPath(){var e;return(e=process.env["COMSPEC"])!==null&&e!==void 0?e:`cmd.exe`}var j=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function cp(e,t){return j(this,arguments,void 0,function*(e,t,A={}){const{force:r,recursive:s,copySourceDirectory:n}=readCopyOptions(A);const i=(yield ioUtil.exists(t))?yield ioUtil.stat(t):null;if(i&&i.isFile()&&!r){return}const o=i&&i.isDirectory()&&n?path.join(t,path.basename(e)):t;if(!(yield ioUtil.exists(e))){throw new Error(`no such file or directory: ${e}`)}const a=yield ioUtil.stat(e);if(a.isDirectory()){if(!s){throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(e,o,0,r)}}else{if(path.relative(e,o)===""){throw new Error(`'${o}' and '${e}' are the same file`)}yield io_copyFile(e,o,r)}})}function mv(e,t){return j(this,arguments,void 0,function*(e,t,A={}){if(yield ioUtil.exists(t)){let r=true;if(yield ioUtil.isDirectory(t)){t=path.join(t,path.basename(e));r=yield ioUtil.exists(t)}if(r){if(A.force==null||A.force){yield rmRF(t)}else{throw new Error("Destination already exists")}}}yield mkdirP(path.dirname(t));yield ioUtil.rename(e,t)})}function rmRF(e){return j(this,void 0,void 0,function*(){if(ioUtil.IS_WINDOWS){if(/[*"<>|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield ioUtil.rm(e,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}})}function mkdirP(e){return j(this,void 0,void 0,function*(){ok(e,"a path argument must be provided");yield ioUtil.mkdir(e,{recursive:true})})}function which(e,t){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(z){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return t}const A=yield findInPath(e);if(A&&A.length>0){return A[0]}return""})}function findInPath(e){return j(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}const t=[];if(z&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(o.delimiter)){if(e){t.push(e)}}}if(isRooted(e)){const A=yield tryGetExecutablePath(e,t);if(A){return[A]}return[]}if(e.includes(o.sep)){return[]}const A=[];if(process.env.PATH){for(const e of process.env.PATH.split(o.delimiter)){if(e){A.push(e)}}}const r=[];for(const s of A){const A=yield tryGetExecutablePath(o.join(s,e),t);if(A){r.push(A)}}return r})}function readCopyOptions(e){const t=e.force==null?true:e.force;const A=Boolean(e.recursive);const r=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:t,recursive:A,copySourceDirectory:r}}function cpDirRecursive(e,t,A,r){return j(this,void 0,void 0,function*(){if(A>=255)return;A++;yield mkdirP(t);const s=yield ioUtil.readdir(e);for(const n of s){const s=`${e}/${n}`;const i=`${t}/${n}`;const o=yield ioUtil.lstat(s);if(o.isDirectory()){yield cpDirRecursive(s,i,A,r)}else{yield io_copyFile(s,i,r)}}yield ioUtil.chmod(t,(yield ioUtil.stat(e)).mode)})}function io_copyFile(e,t,A){return j(this,void 0,void 0,function*(){if((yield ioUtil.lstat(e)).isSymbolicLink()){try{yield ioUtil.lstat(t);yield ioUtil.unlink(t)}catch(e){if(e.code==="EPERM"){yield ioUtil.chmod(t,"0666");yield ioUtil.unlink(t)}}const A=yield ioUtil.readlink(e);yield ioUtil.symlink(A,t,ioUtil.IS_WINDOWS?"junction":null)}else if(!(yield ioUtil.exists(t))||A){yield ioUtil.copyFile(e,t)}})}const $=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("timers");var ee=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const te=process.platform==="win32";class ToolRunner extends T.EventEmitter{constructor(e,t,A){super();if(!e){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=e;this.args=t||[];this.options=A||{}}_debug(e){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(e)}}_getCommandString(e,t){const A=this._getSpawnFileName();const r=this._getSpawnArgs(e);let s=t?"":"[command]";if(te){if(this._isCmdFile()){s+=A;for(const e of r){s+=` ${e}`}}else if(e.windowsVerbatimArguments){s+=`"${A}"`;for(const e of r){s+=` ${e}`}}else{s+=this._windowsQuoteCmdArg(A);for(const e of r){s+=` ${this._windowsQuoteCmdArg(e)}`}}}else{s+=A;for(const e of r){s+=` ${e}`}}return s}_processLineBuffer(e,t,A){try{let s=t+e.toString();let n=s.indexOf(r.EOL);while(n>-1){const e=s.substring(0,n);A(e);s=s.substring(n+r.EOL.length);n=s.indexOf(r.EOL)}return s}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(te){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(te){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const A of this.args){t+=" ";t+=e.windowsVerbatimArguments?A:this._windowsQuoteCmdArg(A)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let A=false;for(const r of e){if(t.some(e=>e===r)){A=true;break}}if(!A){return e}let r='"';let s=true;for(let t=e.length;t>0;t--){r+=e[t-1];if(s&&e[t-1]==="\\"){r+="\\"}else if(e[t-1]==='"'){s=true;r+='"'}else{s=false}}r+='"';return r.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let A=true;for(let r=e.length;r>0;r--){t+=e[r-1];if(A&&e[r-1]==="\\"){t+="\\"}else if(e[r-1]==='"'){A=true;t+="\\"}else{A=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const A={};A.cwd=e.cwd;A.env=e.env;A["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){A.argv0=`"${t}"`}return A}exec(){return ee(this,void 0,void 0,function*(){if(!isRooted(this.toolPath)&&(this.toolPath.includes("/")||te&&this.toolPath.includes("\\"))){this.toolPath=o.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield which(this.toolPath,true);return new Promise((e,t)=>ee(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const A=this._cloneExecOptions(this.options);if(!A.silent&&A.outStream){A.outStream.write(this._getCommandString(A)+r.EOL)}const s=new ExecState(A,this.toolPath);s.on("debug",e=>{this._debug(e)});if(this.options.cwd&&!(yield exists(this.options.cwd))){return t(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const n=this._getSpawnFileName();const i=M.spawn(n,this._getSpawnArgs(A),this._getSpawnOptions(this.options,n));let o="";if(i.stdout){i.stdout.on("data",e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!A.silent&&A.outStream){A.outStream.write(e)}o=this._processLineBuffer(e,o,e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}})})}let a="";if(i.stderr){i.stderr.on("data",e=>{s.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!A.silent&&A.errStream&&A.outStream){const t=A.failOnStdErr?A.errStream:A.outStream;t.write(e)}a=this._processLineBuffer(e,a,e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}})})}i.on("error",e=>{s.processError=e.message;s.processExited=true;s.processClosed=true;s.CheckComplete()});i.on("exit",e=>{s.processExitCode=e;s.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);s.CheckComplete()});i.on("close",e=>{s.processExitCode=e;s.processExited=true;s.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);s.CheckComplete()});s.on("done",(A,r)=>{if(o.length>0){this.emit("stdline",o)}if(a.length>0){this.emit("errline",a)}i.removeAllListeners();if(A){t(A)}else{e(r)}});if(this.options.input){if(!i.stdin){throw new Error("child process missing stdin")}i.stdin.end(this.options.input)}}))})}}function argStringToArray(e){const t=[];let A=false;let r=false;let s="";function append(e){if(r&&e!=='"'){s+="\\"}s+=e;r=false}for(let n=0;n0){t.push(s);s=""}continue}append(i)}if(s.length>0){t.push(s.trim())}return t}class ExecState extends T.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,$.setTimeout)(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}var Ae=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};function exec_exec(e,t,A){return Ae(this,void 0,void 0,function*(){const r=tr.argStringToArray(e);if(r.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const s=r[0];t=r.slice(1).concat(t||[]);const n=new tr.ToolRunner(s,t,A);return n.exec()})}function getExecOutput(e,t,A){return Ae(this,void 0,void 0,function*(){var r,s;let n="";let i="";const o=new StringDecoder("utf8");const a=new StringDecoder("utf8");const c=(r=A===null||A===void 0?void 0:A.listeners)===null||r===void 0?void 0:r.stdout;const l=(s=A===null||A===void 0?void 0:A.listeners)===null||s===void 0?void 0:s.stderr;const stdErrListener=e=>{i+=a.write(e);if(l){l(e)}};const stdOutListener=e=>{n+=o.write(e);if(c){c(e)}};const h=Object.assign(Object.assign({},A===null||A===void 0?void 0:A.listeners),{stdout:stdOutListener,stderr:stdErrListener});const g=yield exec_exec(e,t,Object.assign(Object.assign({},A),{listeners:h}));n+=o.end();i+=a.end();return{exitCode:g,stdout:n,stderr:i}})}var re=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const getWindowsInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',undefined,{silent:true});const{stdout:t}=yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',undefined,{silent:true});return{name:t.trim(),version:e.trim()}});const getMacOsInfo=()=>re(void 0,void 0,void 0,function*(){var e,t,A,r;const{stdout:s}=yield exec.getExecOutput("sw_vers",undefined,{silent:true});const n=(t=(e=s.match(/ProductVersion:\s*(.+)/))===null||e===void 0?void 0:e[1])!==null&&t!==void 0?t:"";const i=(r=(A=s.match(/ProductName:\s*(.+)/))===null||A===void 0?void 0:A[1])!==null&&r!==void 0?r:"";return{name:i,version:n}});const getLinuxInfo=()=>re(void 0,void 0,void 0,function*(){const{stdout:e}=yield exec.getExecOutput("lsb_release",["-i","-r","-s"],{silent:true});const[t,A]=e.trim().split("\n");return{name:t,version:A}});const se=r.platform();const ne=r.arch();const ie=se==="win32";const oe=se==="darwin";const ae=se==="linux";function getDetails(){return re(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield ie?getWindowsInfo():oe?getMacOsInfo():getLinuxInfo()),{platform:se,arch:ne,isWindows:ie,isMacOS:oe,isLinux:ae})})}var ce=undefined&&undefined.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A(function(t){t(e)})}return new(A||(A=Promise))(function(A,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};var le;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(le||(le={}));function exportVariable(e,t){const A=toCommandValue(t);process.env[e]=A;const r=process.env["GITHUB_ENV"]||"";if(r){return issueFileCommand("ENV",prepareKeyValueMessage(e,t))}issueCommand("set-env",{name:e},A)}function core_setSecret(e){issueCommand("add-mask",{},e)}function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){issueFileCommand("PATH",e)}else{issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${path.delimiter}${process.env["PATH"]}`}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()}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())}function getBooleanInput(e,t){const A=["true","True","TRUE"];const r=["false","False","FALSE"];const s=getInput(e,t);if(A.includes(s))return true;if(r.includes(s))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\``)}function setOutput(e,t){const A=process.env["GITHUB_OUTPUT"]||"";if(A){return file_command_issueFileCommand("OUTPUT",file_command_prepareKeyValueMessage(e,t))}process.stdout.write(r.EOL);command_issueCommand("set-output",{name:e},utils_toCommandValue(t))}function setCommandEcho(e){issue("echo",e?"on":"off")}function setFailed(e){process.exitCode=le.Failure;error(e)}function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}function core_debug(e){issueCommand("debug",{},e)}function error(e,t={}){command_issueCommand("error",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function warning(e,t={}){command_issueCommand("warning",utils_toCommandProperties(t),e instanceof Error?e.toString():e)}function notice(e,t={}){issueCommand("notice",toCommandProperties(t),e instanceof Error?e.toString():e)}function info(e){process.stdout.write(e+os.EOL)}function startGroup(e){issue("group",e)}function endGroup(){issue("endgroup")}function group(e,t){return ce(this,void 0,void 0,function*(){startGroup(e);let A;try{A=yield t()}finally{endGroup()}return A})}function saveState(e,t){const A=process.env["GITHUB_STATE"]||"";if(A){return issueFileCommand("STATE",prepareKeyValueMessage(e,t))}issueCommand("save-state",{name:e},toCommandValue(t))}function getState(e){return process.env[`STATE_${e}`]||""}function getIDToken(e){return ce(this,void 0,void 0,function*(){return yield OidcClient.getIDToken(e)})}}};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 r=true;try{__webpack_modules__[e](A,A.exports,__nccwpck_require__);r=false}finally{if(r)delete __webpack_module_cache__[e]}return A.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=decodeURIComponent(new URL(".",import.meta.url).pathname).slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";(()=>{var e=typeof Symbol==="function"?Symbol("webpack queues"):"__webpack_queues__";var t=typeof Symbol==="function"?Symbol("webpack exports"):"__webpack_exports__";var A=typeof Symbol==="function"?Symbol("webpack error"):"__webpack_error__";var resolveQueue=e=>{if(e&&e.d<1){e.d=1;e.forEach(e=>e.r--);e.forEach(e=>e.r--?e.r++:e())}};var wrapDeps=r=>r.map(r=>{if(r!==null&&typeof r==="object"){if(r[e])return r;if(r.then){var s=[];s.d=0;r.then(e=>{n[t]=e;resolveQueue(s)},e=>{n[A]=e;resolveQueue(s)});var n={};n[e]=e=>e(s);return n}}var i={};i[e]=e=>{};i[t]=r;return i});__nccwpck_require__.a=(r,s,n)=>{var i;n&&((i=[]).d=-1);var o=new Set;var a=r.exports;var c;var l;var h;var g=new Promise((e,t)=>{h=t;l=e});g[t]=a;g[e]=e=>(i&&e(i),o.forEach(e),g["catch"](e=>{}));r.exports=g;s(r=>{c=wrapDeps(r);var s;var getResult=()=>c.map(e=>{if(e[A])throw e[A];return e[t]});var n=new Promise(t=>{s=()=>t(getResult);s.r=0;var fnQueue=e=>e!==i&&!o.has(e)&&(o.add(e),e&&!e.d&&(s.r++,e.push(s)));c.map(t=>t[e](fnQueue))});return s.r?n:getResult()},e=>(e?h(g[A]=e):l(a),resolveQueue(i)));i&&i.d<0&&(i.d=0)}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var A in t){if(__nccwpck_require__.o(t,A)&&!__nccwpck_require__.o(e,A)){Object.defineProperty(e,A,{enumerable:true,get:t[A]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();var __webpack_exports__=__nccwpck_require__(6628);__webpack_exports__=await __webpack_exports__; \ No newline at end of file diff --git a/dist/baseline.js b/dist/baseline.js index c43461d..8cc73d3 100644 --- a/dist/baseline.js +++ b/dist/baseline.js @@ -63,7 +63,10 @@ export function createBaseline(kind, current) { }; } function compareBaselineFinding(a, b) { - return a.path.localeCompare(b.path) || a.ruleId.localeCompare(b.ruleId) || a.field.localeCompare(b.field) || a.fingerprint.localeCompare(b.fingerprint); + return compareText(a.path, b.path) || compareText(a.ruleId, b.ruleId) || compareText(a.field, b.field) || compareText(a.fingerprint, b.fingerprint); +} +function compareText(a, b) { + return a < b ? -1 : a > b ? 1 : 0; } export function validateBaseline(value) { if (typeof value !== 'object' || value === null || Array.isArray(value)) diff --git a/src/baseline.ts b/src/baseline.ts index 5e90ec9..9414623 100644 --- a/src/baseline.ts +++ b/src/baseline.ts @@ -90,7 +90,11 @@ export function createBaseline(kind: ComparisonKind, current: CurrentFinding[]): } function compareBaselineFinding(a: BaselineFinding, b: BaselineFinding): number { - return a.path.localeCompare(b.path) || a.ruleId.localeCompare(b.ruleId) || a.field.localeCompare(b.field) || a.fingerprint.localeCompare(b.fingerprint); + return compareText(a.path, b.path) || compareText(a.ruleId, b.ruleId) || compareText(a.field, b.field) || compareText(a.fingerprint, b.fingerprint); +} + +function compareText(a: string, b: string): number { + return a < b ? -1 : a > b ? 1 : 0; } export function validateBaseline(value: unknown): Baseline { diff --git a/tests/baseline.test.mjs b/tests/baseline.test.mjs index 7e4e472..d50962e 100644 --- a/tests/baseline.test.mjs +++ b/tests/baseline.test.mjs @@ -79,6 +79,15 @@ test('duplicate findings retain counts without duplicating baseline entries', () assert.equal(result.resolvedFindings[0].count, 1); }); +test('baseline entries use locale-independent path ordering', () => { + const baseline = createBaseline('git-all', [ + { path: 'a.toml', finding }, + { path: 'Z.toml', finding }, + { path: 'é.toml', finding }, + ]); + assert.deepEqual(baseline.findings.map((item) => item.path), ['Z.toml', 'a.toml', 'é.toml']); +}); + test('baseline version, comparison kind, fields, and fingerprints are validated', () => { const baseline = createBaseline('git-all', [{ path: 'shopify.app.toml', finding }]); assert.equal(validateBaseline(baseline).schemaVersion, 1);