@workflow/web 5.0.0-beta.11 → 5.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/{highlighted-body-B3W2YXNL-ByAVJfTI.js → highlighted-body-B3W2YXNL-DmlmGvFd.js} +1 -1
- package/build/client/assets/{home-D68s49Hb.js → home-BQRPxkXT.js} +2 -2
- package/build/client/assets/{manifest-f3e412ee.js → manifest-b8838010.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-Cg06pRM9.js → mermaid-3ZIDBTTL-CeSti4VQ.js} +32 -3
- package/build/client/assets/{root-CtIBMIdD.js → root-8wYQKqnE.js} +1 -1
- package/build/client/assets/{root-D_G0HW97.css → root-DvB36HGI.css} +1 -1
- package/build/client/assets/{run-detail-B1sCKjMc.js → run-detail-Dn4QeKHW.js} +3 -3
- package/build/client/assets/{server-build-DyZioyz3.css → server-build-B5Dibl7P.css} +1 -1
- package/build/client/assets/{workflow-graph-viewer-D4OsX_TE.js → workflow-graph-viewer-CxZS9r2o.js} +1 -1
- package/build/server/assets/{app-C26OkrrR.js → app-D-W9Jr82.js} +1 -1
- package/build/server/assets/{highlighted-body-B3W2YXNL-2D25w_37.js → highlighted-body-B3W2YXNL-CcRpp5rq.js} +2 -2
- package/build/server/assets/{index-C6jZ_bJo.js → index-BUU6Hdm_.js} +3 -3
- package/build/server/assets/{mermaid-3ZIDBTTL-BDYN9XOo.js → mermaid-3ZIDBTTL-Nh9-IDfL.js} +2 -2
- package/build/server/assets/{server-build-D82EKMvZ.js → server-build-BshzAvNv.js} +1648 -395
- package/build/server/assets/{token-Bjcyh98U.js → token-BaJALexf.js} +2 -2
- package/build/server/assets/{token-util-CdvUIKt6.js → token-util-Bc0jltWL.js} +2 -2
- package/build/server/index.js +1 -1
- package/package.json +6 -6
|
@@ -14,8 +14,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
14
14
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
15
15
|
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
16
16
|
var _a2, _b, _c, _listeners, _onabort, _reader, _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, canAdoptWithSpace_fn, canAdopt_fn, canAdoptType_fn, adoptWithSpace_fn, adopt_fn, canUsurpType_fn, canUsurp_fn, usurp_fn, flatten_fn, partsToRegExp_fn, parseGlob_fn, _Minimatch_instances, matchGlobstar_fn, matchGlobStarBodySections_fn, matchOne_fn, _worldPromise, _Run_instances, lazyWorldPromise_get, _encryptionKeyPromise, _resilientStart, getEncryptionKey_fn, pollReturnValue_fn;
|
|
17
|
-
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-
|
|
18
|
-
import require$$0$
|
|
17
|
+
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-D-W9Jr82.js";
|
|
18
|
+
import require$$0$4, { PassThrough } from "node:stream";
|
|
19
19
|
import require$$0 from "util";
|
|
20
20
|
import require$$1 from "crypto";
|
|
21
21
|
import require$$2 from "async_hooks";
|
|
@@ -23,32 +23,32 @@ import require$$5 from "stream";
|
|
|
23
23
|
import crypto, { createHash, webcrypto } from "node:crypto";
|
|
24
24
|
import minproc from "node:process";
|
|
25
25
|
import path$3, { join as join$1, resolve, dirname, isAbsolute, sep as sep$1 } from "node:path";
|
|
26
|
-
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
26
|
+
import require$$1$2, { fileURLToPath, pathToFileURL } from "node:url";
|
|
27
27
|
import { createRequire } from "module";
|
|
28
28
|
import fs$1, { readdir, readlink, readFile, mkdir, access, constants as constants$6, writeFile, unlink, rm } from "node:fs/promises";
|
|
29
29
|
import require$$3, { types as types$3, promisify, inspect } from "node:util";
|
|
30
|
-
import require$$1$
|
|
30
|
+
import require$$1$3, { AsyncLocalStorage } from "node:async_hooks";
|
|
31
31
|
import { createRequire as createRequire$1 } from "node:module";
|
|
32
32
|
import { promises } from "node:fs";
|
|
33
33
|
import { execFile } from "node:child_process";
|
|
34
34
|
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
35
35
|
import require$$0$1 from "events";
|
|
36
|
-
import require$$0$
|
|
37
|
-
import require$$0$
|
|
36
|
+
import require$$0$3 from "node:assert";
|
|
37
|
+
import require$$0$5 from "node:net";
|
|
38
38
|
import require$$2$1 from "node:http";
|
|
39
39
|
import require$$5$1 from "node:querystring";
|
|
40
|
-
import require$$
|
|
41
|
-
import require$$0$
|
|
40
|
+
import require$$0$2, { EventEmitter } from "node:events";
|
|
41
|
+
import require$$0$6 from "node:diagnostics_channel";
|
|
42
42
|
import require$$4 from "node:tls";
|
|
43
|
-
import require$$0$
|
|
43
|
+
import require$$0$7 from "node:buffer";
|
|
44
44
|
import require$$3$1 from "node:zlib";
|
|
45
45
|
import require$$5$2 from "node:perf_hooks";
|
|
46
46
|
import require$$8 from "node:util/types";
|
|
47
47
|
import require$$1$1 from "node:sqlite";
|
|
48
48
|
import require$$2$2 from "node:worker_threads";
|
|
49
|
-
import require$$1$
|
|
49
|
+
import require$$1$4 from "node:console";
|
|
50
50
|
import require$$2$3 from "node:timers";
|
|
51
|
-
import require$$1$
|
|
51
|
+
import require$$1$5 from "node:dns";
|
|
52
52
|
import * as path$2 from "path";
|
|
53
53
|
import path__default from "path";
|
|
54
54
|
import * as fs from "fs";
|
|
@@ -48941,6 +48941,11 @@ const WorkflowInvokePayloadSchema = object$1({
|
|
|
48941
48941
|
runId: string$3(),
|
|
48942
48942
|
traceCarrier: TraceCarrierSchema.optional(),
|
|
48943
48943
|
requestedAt: date$2().optional(),
|
|
48944
|
+
/** Consecutive replay divergences in this recovery chain and latest position. */
|
|
48945
|
+
replayDivergence: object$1({
|
|
48946
|
+
eventId: string$3(),
|
|
48947
|
+
count: number$3().int().positive()
|
|
48948
|
+
}).optional(),
|
|
48944
48949
|
/** Number of times this message has been re-enqueued due to server errors (5xx) */
|
|
48945
48950
|
serverErrorRetryCount: number$3().int().optional(),
|
|
48946
48951
|
/** Step ID for inline step execution in combined handler. If provided, the flow execution
|
|
@@ -49421,7 +49426,8 @@ function getWebRevivers() {
|
|
|
49421
49426
|
// Error family. The reducer side (see
|
|
49422
49427
|
// `packages/core/src/serialization/reducers/common.ts`) emits a tagged
|
|
49423
49428
|
// entry for each built-in Error subclass plus the workflow-specific
|
|
49424
|
-
// `FatalError` / `RetryableError`
|
|
49429
|
+
// `FatalError` / `RetryableError` / `HookConflictError` /
|
|
49430
|
+
// `RuntimeDecryptionError` and `AggregateError`. Without
|
|
49425
49431
|
// matching revivers here, `devalue.unflatten` throws "Unknown type X"
|
|
49426
49432
|
// — which surfaces in the web o11y UI as "Failed to load resource
|
|
49427
49433
|
// details: Unknown type FatalError".
|
|
@@ -49467,6 +49473,18 @@ function getWebRevivers() {
|
|
|
49467
49473
|
error2.stack = value.stack;
|
|
49468
49474
|
return error2;
|
|
49469
49475
|
},
|
|
49476
|
+
HookConflictError: (value) => {
|
|
49477
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
49478
|
+
const error2 = new Error(value.message, opts);
|
|
49479
|
+
error2.name = "HookConflictError";
|
|
49480
|
+
error2.token = value.token;
|
|
49481
|
+
if (value.conflictingRunId !== void 0) {
|
|
49482
|
+
error2.conflictingRunId = value.conflictingRunId;
|
|
49483
|
+
}
|
|
49484
|
+
if (value.stack !== void 0)
|
|
49485
|
+
error2.stack = value.stack;
|
|
49486
|
+
return error2;
|
|
49487
|
+
},
|
|
49470
49488
|
RetryableError: (value) => {
|
|
49471
49489
|
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
49472
49490
|
const error2 = new Error(value.message, opts);
|
|
@@ -49478,6 +49496,17 @@ function getWebRevivers() {
|
|
|
49478
49496
|
}
|
|
49479
49497
|
return error2;
|
|
49480
49498
|
},
|
|
49499
|
+
RuntimeDecryptionError: (value) => {
|
|
49500
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
49501
|
+
const error2 = new Error(value.message, opts);
|
|
49502
|
+
error2.name = "RuntimeDecryptionError";
|
|
49503
|
+
if (value.context !== void 0) {
|
|
49504
|
+
error2.context = value.context;
|
|
49505
|
+
}
|
|
49506
|
+
if (value.stack !== void 0)
|
|
49507
|
+
error2.stack = value.stack;
|
|
49508
|
+
return error2;
|
|
49509
|
+
},
|
|
49481
49510
|
DOMException: (value) => {
|
|
49482
49511
|
const G2 = globalThis;
|
|
49483
49512
|
if (typeof G2.DOMException === "function") {
|
|
@@ -80627,7 +80656,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
80627
80656
|
var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
|
|
80628
80657
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
80629
80658
|
var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
|
|
80630
|
-
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-
|
|
80659
|
+
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-CcRpp5rq.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
|
|
80631
80660
|
let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
|
|
80632
80661
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
|
|
80633
80662
|
return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
|
|
@@ -80949,7 +80978,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
|
|
|
80949
80978
|
}, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
|
|
80950
80979
|
};
|
|
80951
80980
|
var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
|
|
80952
|
-
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-
|
|
80981
|
+
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Nh9-IDfL.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
|
|
80953
80982
|
function ke(e, t) {
|
|
80954
80983
|
if (!(e != null && e.position || t != null && t.position)) return true;
|
|
80955
80984
|
if (!(e != null && e.position && (t != null && t.position))) return false;
|
|
@@ -84869,7 +84898,7 @@ function NewTraceViewerContent({ trace: trace2, onLoadMore, hasMore, isLoadingMo
|
|
|
84869
84898
|
prevSpanIdRef.current = prevSpanId;
|
|
84870
84899
|
nextSpanIdRef.current = nextSpanId;
|
|
84871
84900
|
handleSelectSpanRef.current = handleSelectSpan;
|
|
84872
|
-
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,
|
|
84901
|
+
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,360px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { scrollContainerRef, startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
|
|
84873
84902
|
if (e.key === "Escape" && searchQuery) {
|
|
84874
84903
|
e.preventDefault();
|
|
84875
84904
|
e.stopPropagation();
|
|
@@ -88861,7 +88890,7 @@ const encryption = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
|
|
|
88861
88890
|
encrypt: encrypt$1,
|
|
88862
88891
|
importKey
|
|
88863
88892
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
88864
|
-
const version$1 = "5.0.0-beta.
|
|
88893
|
+
const version$1 = "5.0.0-beta.12";
|
|
88865
88894
|
const WorldCacheKey = Symbol.for("@workflow/world//cache");
|
|
88866
88895
|
const WorldCachePromiseKey = Symbol.for("@workflow/world//cachePromise");
|
|
88867
88896
|
const GetWorldFnKey$1 = Symbol.for("@workflow/world//getWorldFn");
|
|
@@ -93251,7 +93280,8 @@ function requireSymbols() {
|
|
|
93251
93280
|
kPingInterval: Symbol("ping interval"),
|
|
93252
93281
|
kNoProxyAgent: Symbol("no proxy agent"),
|
|
93253
93282
|
kHttpProxyAgent: Symbol("http proxy agent"),
|
|
93254
|
-
kHttpsProxyAgent: Symbol("https proxy agent")
|
|
93283
|
+
kHttpsProxyAgent: Symbol("https proxy agent"),
|
|
93284
|
+
kSocks5ProxyAgent: Symbol("socks5 proxy agent")
|
|
93255
93285
|
};
|
|
93256
93286
|
return symbols;
|
|
93257
93287
|
}
|
|
@@ -93843,6 +93873,29 @@ function requireErrors() {
|
|
|
93843
93873
|
return true;
|
|
93844
93874
|
}
|
|
93845
93875
|
}
|
|
93876
|
+
class Socks5ProxyError extends UndiciError {
|
|
93877
|
+
constructor(message2, code2) {
|
|
93878
|
+
super(message2);
|
|
93879
|
+
this.name = "Socks5ProxyError";
|
|
93880
|
+
this.message = message2 || "SOCKS5 proxy error";
|
|
93881
|
+
this.code = code2 || "UND_ERR_SOCKS5";
|
|
93882
|
+
}
|
|
93883
|
+
}
|
|
93884
|
+
const kMessageSizeExceededError = Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");
|
|
93885
|
+
class MessageSizeExceededError extends UndiciError {
|
|
93886
|
+
constructor(message2) {
|
|
93887
|
+
super(message2);
|
|
93888
|
+
this.name = "MessageSizeExceededError";
|
|
93889
|
+
this.message = message2 || "Max decompressed message size exceeded";
|
|
93890
|
+
this.code = "UND_ERR_WS_MESSAGE_SIZE_EXCEEDED";
|
|
93891
|
+
}
|
|
93892
|
+
static [Symbol.hasInstance](instance) {
|
|
93893
|
+
return instance && instance[kMessageSizeExceededError] === true;
|
|
93894
|
+
}
|
|
93895
|
+
get [kMessageSizeExceededError]() {
|
|
93896
|
+
return true;
|
|
93897
|
+
}
|
|
93898
|
+
}
|
|
93846
93899
|
errors = {
|
|
93847
93900
|
AbortError,
|
|
93848
93901
|
HTTPParserError,
|
|
@@ -93866,7 +93919,9 @@ function requireErrors() {
|
|
|
93866
93919
|
RequestRetryError,
|
|
93867
93920
|
ResponseError,
|
|
93868
93921
|
SecureProxyConnectionError,
|
|
93869
|
-
MaxOriginsReachedError
|
|
93922
|
+
MaxOriginsReachedError,
|
|
93923
|
+
Socks5ProxyError,
|
|
93924
|
+
MessageSizeExceededError
|
|
93870
93925
|
};
|
|
93871
93926
|
return errors;
|
|
93872
93927
|
}
|
|
@@ -94148,13 +94203,13 @@ var hasRequiredUtil$5;
|
|
|
94148
94203
|
function requireUtil$5() {
|
|
94149
94204
|
if (hasRequiredUtil$5) return util$5;
|
|
94150
94205
|
hasRequiredUtil$5 = 1;
|
|
94151
|
-
const assert2 = require$$0$
|
|
94206
|
+
const assert2 = require$$0$3;
|
|
94152
94207
|
const { kDestroyed, kBodyUsed, kListeners, kBody } = requireSymbols();
|
|
94153
94208
|
const { IncomingMessage } = require$$2$1;
|
|
94154
|
-
const stream = require$$0$
|
|
94155
|
-
const net2 = require$$0$
|
|
94209
|
+
const stream = require$$0$4;
|
|
94210
|
+
const net2 = require$$0$5;
|
|
94156
94211
|
const { stringify: stringify2 } = require$$5$1;
|
|
94157
|
-
const { EventEmitter: EE } = require$$
|
|
94212
|
+
const { EventEmitter: EE } = require$$0$2;
|
|
94158
94213
|
const timers2 = requireTimers();
|
|
94159
94214
|
const { InvalidArgumentError, ConnectTimeoutError } = requireErrors();
|
|
94160
94215
|
const { headerNameLowerCasedRecord } = requireConstants$5();
|
|
@@ -94315,6 +94370,11 @@ function requireUtil$5() {
|
|
|
94315
94370
|
function isIterable(obj) {
|
|
94316
94371
|
return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function"));
|
|
94317
94372
|
}
|
|
94373
|
+
function hasSafeIterator(obj) {
|
|
94374
|
+
const prototype = Object.getPrototypeOf(obj);
|
|
94375
|
+
const ownIterator = Object.prototype.hasOwnProperty.call(obj, Symbol.iterator);
|
|
94376
|
+
return ownIterator || prototype != null && prototype !== Object.prototype && typeof obj[Symbol.iterator] === "function";
|
|
94377
|
+
}
|
|
94318
94378
|
function bodyLength(body2) {
|
|
94319
94379
|
if (body2 == null) {
|
|
94320
94380
|
return 0;
|
|
@@ -94366,19 +94426,29 @@ function requireUtil$5() {
|
|
|
94366
94426
|
for (let i = 0; i < headers2.length; i += 2) {
|
|
94367
94427
|
const key = headerNameToString(headers2[i]);
|
|
94368
94428
|
let val = obj[key];
|
|
94369
|
-
if (val) {
|
|
94370
|
-
if (
|
|
94371
|
-
|
|
94372
|
-
|
|
94373
|
-
|
|
94374
|
-
|
|
94375
|
-
|
|
94376
|
-
|
|
94377
|
-
|
|
94378
|
-
|
|
94429
|
+
if (val !== void 0) {
|
|
94430
|
+
if (!Object.hasOwn(obj, key)) {
|
|
94431
|
+
const headersValue = typeof headers2[i + 1] === "string" ? headers2[i + 1] : Array.isArray(headers2[i + 1]) ? headers2[i + 1].map((x2) => x2.toString("latin1")) : headers2[i + 1].toString("latin1");
|
|
94432
|
+
if (key === "__proto__") {
|
|
94433
|
+
Object.defineProperty(obj, key, {
|
|
94434
|
+
value: headersValue,
|
|
94435
|
+
enumerable: true,
|
|
94436
|
+
configurable: true,
|
|
94437
|
+
writable: true
|
|
94438
|
+
});
|
|
94439
|
+
} else {
|
|
94440
|
+
obj[key] = headersValue;
|
|
94441
|
+
}
|
|
94379
94442
|
} else {
|
|
94380
|
-
|
|
94443
|
+
if (typeof val === "string") {
|
|
94444
|
+
val = [val];
|
|
94445
|
+
obj[key] = val;
|
|
94446
|
+
}
|
|
94447
|
+
val.push(headers2[i + 1].toString("latin1"));
|
|
94381
94448
|
}
|
|
94449
|
+
} else {
|
|
94450
|
+
const headersValue = typeof headers2[i + 1] === "string" ? headers2[i + 1] : Array.isArray(headers2[i + 1]) ? headers2[i + 1].map((x2) => x2.toString("latin1")) : headers2[i + 1].toString("latin1");
|
|
94451
|
+
obj[key] = headersValue;
|
|
94382
94452
|
}
|
|
94383
94453
|
}
|
|
94384
94454
|
return obj;
|
|
@@ -94911,6 +94981,7 @@ function requireUtil$5() {
|
|
|
94911
94981
|
getServerName,
|
|
94912
94982
|
isStream,
|
|
94913
94983
|
isIterable,
|
|
94984
|
+
hasSafeIterator,
|
|
94914
94985
|
isAsyncIterable,
|
|
94915
94986
|
isDestroyed,
|
|
94916
94987
|
headerNameToString,
|
|
@@ -94989,7 +95060,7 @@ var hasRequiredDiagnostics;
|
|
|
94989
95060
|
function requireDiagnostics() {
|
|
94990
95061
|
if (hasRequiredDiagnostics) return diagnostics;
|
|
94991
95062
|
hasRequiredDiagnostics = 1;
|
|
94992
|
-
const diagnosticsChannel = require$$0$
|
|
95063
|
+
const diagnosticsChannel = require$$0$6;
|
|
94993
95064
|
const util2 = require$$3;
|
|
94994
95065
|
const undiciDebugLog = util2.debuglog("undici");
|
|
94995
95066
|
const fetchDebuglog = util2.debuglog("fetch");
|
|
@@ -95149,10 +95220,12 @@ function requireDiagnostics() {
|
|
|
95149
95220
|
diagnosticsChannel.subscribe(
|
|
95150
95221
|
"undici:websocket:open",
|
|
95151
95222
|
(evt) => {
|
|
95152
|
-
|
|
95153
|
-
|
|
95154
|
-
|
|
95155
|
-
|
|
95223
|
+
if (evt.address != null) {
|
|
95224
|
+
const { address, port } = evt.address;
|
|
95225
|
+
debugLog("connection opened %s%s", address, port ? `:${port}` : "");
|
|
95226
|
+
} else {
|
|
95227
|
+
debugLog("connection opened");
|
|
95228
|
+
}
|
|
95156
95229
|
}
|
|
95157
95230
|
);
|
|
95158
95231
|
diagnosticsChannel.subscribe(
|
|
@@ -95208,7 +95281,7 @@ function requireRequest$1() {
|
|
|
95208
95281
|
InvalidArgumentError,
|
|
95209
95282
|
NotSupportedError
|
|
95210
95283
|
} = requireErrors();
|
|
95211
|
-
const assert2 = require$$0$
|
|
95284
|
+
const assert2 = require$$0$3;
|
|
95212
95285
|
const {
|
|
95213
95286
|
isValidHTTPToken,
|
|
95214
95287
|
isValidHeaderValue,
|
|
@@ -95217,6 +95290,7 @@ function requireRequest$1() {
|
|
|
95217
95290
|
isBuffer,
|
|
95218
95291
|
isFormDataLike,
|
|
95219
95292
|
isIterable,
|
|
95293
|
+
hasSafeIterator,
|
|
95220
95294
|
isBlobLike,
|
|
95221
95295
|
serializePathWithQuery,
|
|
95222
95296
|
assertRequestHandler,
|
|
@@ -95227,6 +95301,18 @@ function requireRequest$1() {
|
|
|
95227
95301
|
const { channels } = requireDiagnostics();
|
|
95228
95302
|
const { headerNameLowerCasedRecord } = requireConstants$5();
|
|
95229
95303
|
const invalidPathRegex = /[^\u0021-\u00ff]/;
|
|
95304
|
+
function isValidContentLengthHeaderValue(val) {
|
|
95305
|
+
if (typeof val !== "string" || val.length === 0) {
|
|
95306
|
+
return false;
|
|
95307
|
+
}
|
|
95308
|
+
for (let i = 0; i < val.length; i++) {
|
|
95309
|
+
const charCode = val.charCodeAt(i);
|
|
95310
|
+
if (charCode < 48 || charCode > 57) {
|
|
95311
|
+
return false;
|
|
95312
|
+
}
|
|
95313
|
+
}
|
|
95314
|
+
return true;
|
|
95315
|
+
}
|
|
95230
95316
|
const kHandler = Symbol("handler");
|
|
95231
95317
|
class Request2 {
|
|
95232
95318
|
constructor(origin, {
|
|
@@ -95244,7 +95330,8 @@ function requireRequest$1() {
|
|
|
95244
95330
|
expectContinue,
|
|
95245
95331
|
servername,
|
|
95246
95332
|
throwOnError,
|
|
95247
|
-
maxRedirections
|
|
95333
|
+
maxRedirections,
|
|
95334
|
+
typeOfService
|
|
95248
95335
|
}, handler) {
|
|
95249
95336
|
if (typeof path2 !== "string") {
|
|
95250
95337
|
throw new InvalidArgumentError("path must be a string");
|
|
@@ -95261,6 +95348,9 @@ function requireRequest$1() {
|
|
|
95261
95348
|
if (upgrade && typeof upgrade !== "string") {
|
|
95262
95349
|
throw new InvalidArgumentError("upgrade must be a string");
|
|
95263
95350
|
}
|
|
95351
|
+
if (upgrade && !isValidHeaderValue(upgrade)) {
|
|
95352
|
+
throw new InvalidArgumentError("invalid upgrade header");
|
|
95353
|
+
}
|
|
95264
95354
|
if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
|
|
95265
95355
|
throw new InvalidArgumentError("invalid headersTimeout");
|
|
95266
95356
|
}
|
|
@@ -95279,9 +95369,13 @@ function requireRequest$1() {
|
|
|
95279
95369
|
if (maxRedirections != null && maxRedirections !== 0) {
|
|
95280
95370
|
throw new InvalidArgumentError("maxRedirections is not supported, use the redirect interceptor");
|
|
95281
95371
|
}
|
|
95372
|
+
if (typeOfService != null && (!Number.isInteger(typeOfService) || typeOfService < 0 || typeOfService > 255)) {
|
|
95373
|
+
throw new InvalidArgumentError("typeOfService must be an integer between 0 and 255");
|
|
95374
|
+
}
|
|
95282
95375
|
this.headersTimeout = headersTimeout;
|
|
95283
95376
|
this.bodyTimeout = bodyTimeout;
|
|
95284
95377
|
this.method = method;
|
|
95378
|
+
this.typeOfService = typeOfService ?? 0;
|
|
95285
95379
|
this.abort = null;
|
|
95286
95380
|
if (body2 == null) {
|
|
95287
95381
|
this.body = null;
|
|
@@ -95337,7 +95431,7 @@ function requireRequest$1() {
|
|
|
95337
95431
|
processHeader(this, headers2[i], headers2[i + 1]);
|
|
95338
95432
|
}
|
|
95339
95433
|
} else if (headers2 && typeof headers2 === "object") {
|
|
95340
|
-
if (headers2
|
|
95434
|
+
if (hasSafeIterator(headers2)) {
|
|
95341
95435
|
for (const header of headers2) {
|
|
95342
95436
|
if (!Array.isArray(header) || header.length !== 2) {
|
|
95343
95437
|
throw new InvalidArgumentError("headers must be in key-value pair format");
|
|
@@ -95507,28 +95601,40 @@ function requireRequest$1() {
|
|
|
95507
95601
|
} else {
|
|
95508
95602
|
val = `${val}`;
|
|
95509
95603
|
}
|
|
95510
|
-
if (
|
|
95604
|
+
if (headerName === "host") {
|
|
95605
|
+
if (request2.host !== null) {
|
|
95606
|
+
throw new InvalidArgumentError("duplicate host header");
|
|
95607
|
+
}
|
|
95511
95608
|
if (typeof val !== "string") {
|
|
95512
95609
|
throw new InvalidArgumentError("invalid host header");
|
|
95513
95610
|
}
|
|
95514
95611
|
request2.host = val;
|
|
95515
|
-
} else if (
|
|
95516
|
-
request2.contentLength
|
|
95517
|
-
|
|
95612
|
+
} else if (headerName === "content-length") {
|
|
95613
|
+
if (request2.contentLength !== null) {
|
|
95614
|
+
throw new InvalidArgumentError("duplicate content-length header");
|
|
95615
|
+
}
|
|
95616
|
+
if (!isValidContentLengthHeaderValue(val)) {
|
|
95518
95617
|
throw new InvalidArgumentError("invalid content-length header");
|
|
95519
95618
|
}
|
|
95619
|
+
request2.contentLength = parseInt(val, 10);
|
|
95520
95620
|
} else if (request2.contentType === null && headerName === "content-type") {
|
|
95521
95621
|
request2.contentType = val;
|
|
95522
95622
|
request2.headers.push(key, val);
|
|
95523
95623
|
} else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") {
|
|
95524
95624
|
throw new InvalidArgumentError(`invalid ${headerName} header`);
|
|
95525
95625
|
} else if (headerName === "connection") {
|
|
95526
|
-
const value = typeof val === "string" ? val
|
|
95527
|
-
if (value
|
|
95626
|
+
const value = typeof val === "string" ? val : null;
|
|
95627
|
+
if (value === null) {
|
|
95528
95628
|
throw new InvalidArgumentError("invalid connection header");
|
|
95529
95629
|
}
|
|
95530
|
-
|
|
95531
|
-
|
|
95630
|
+
for (const token of value.toLowerCase().split(",")) {
|
|
95631
|
+
const trimmed = token.trim();
|
|
95632
|
+
if (!isValidHTTPToken(trimmed)) {
|
|
95633
|
+
throw new InvalidArgumentError("invalid connection header");
|
|
95634
|
+
}
|
|
95635
|
+
if (trimmed === "close") {
|
|
95636
|
+
request2.reset = true;
|
|
95637
|
+
}
|
|
95532
95638
|
}
|
|
95533
95639
|
} else if (headerName === "expect") {
|
|
95534
95640
|
throw new NotSupportedError("expect header not supported");
|
|
@@ -95559,6 +95665,10 @@ function requireWrapHandler() {
|
|
|
95559
95665
|
var _a4, _b2;
|
|
95560
95666
|
return (_b2 = (_a4 = __privateGet(this, _handler)).onConnect) == null ? void 0 : _b2.call(_a4, abort, context);
|
|
95561
95667
|
}
|
|
95668
|
+
onResponseStarted() {
|
|
95669
|
+
var _a4, _b2;
|
|
95670
|
+
return (_b2 = (_a4 = __privateGet(this, _handler)).onResponseStarted) == null ? void 0 : _b2.call(_a4);
|
|
95671
|
+
}
|
|
95562
95672
|
onHeaders(statusCode, rawHeaders, resume, statusMessage) {
|
|
95563
95673
|
var _a4, _b2;
|
|
95564
95674
|
return (_b2 = (_a4 = __privateGet(this, _handler)).onHeaders) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, resume, statusMessage);
|
|
@@ -95591,7 +95701,7 @@ function requireWrapHandler() {
|
|
|
95591
95701
|
var _a4, _b2;
|
|
95592
95702
|
const rawHeaders = [];
|
|
95593
95703
|
for (const [key, val] of Object.entries(headers2)) {
|
|
95594
|
-
rawHeaders.push(Buffer.from(key
|
|
95704
|
+
rawHeaders.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
|
|
95595
95705
|
}
|
|
95596
95706
|
(_b2 = (_a4 = __privateGet(this, _handler)).onUpgrade) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, socket);
|
|
95597
95707
|
}
|
|
@@ -95599,7 +95709,7 @@ function requireWrapHandler() {
|
|
|
95599
95709
|
var _a4, _b2;
|
|
95600
95710
|
const rawHeaders = [];
|
|
95601
95711
|
for (const [key, val] of Object.entries(headers2)) {
|
|
95602
|
-
rawHeaders.push(Buffer.from(key
|
|
95712
|
+
rawHeaders.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
|
|
95603
95713
|
}
|
|
95604
95714
|
if (((_b2 = (_a4 = __privateGet(this, _handler)).onHeaders) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, () => controller.resume(), statusMessage)) === false) {
|
|
95605
95715
|
controller.pause();
|
|
@@ -95615,7 +95725,7 @@ function requireWrapHandler() {
|
|
|
95615
95725
|
var _a4, _b2;
|
|
95616
95726
|
const rawTrailers = [];
|
|
95617
95727
|
for (const [key, val] of Object.entries(trailers)) {
|
|
95618
|
-
rawTrailers.push(Buffer.from(key
|
|
95728
|
+
rawTrailers.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
|
|
95619
95729
|
}
|
|
95620
95730
|
(_b2 = (_a4 = __privateGet(this, _handler)).onComplete) == null ? void 0 : _b2.call(_a4, rawTrailers);
|
|
95621
95731
|
}
|
|
@@ -95627,6 +95737,9 @@ function requireWrapHandler() {
|
|
|
95627
95737
|
(_b2 = (_a4 = __privateGet(this, _handler)).onError) == null ? void 0 : _b2.call(_a4, err);
|
|
95628
95738
|
}
|
|
95629
95739
|
}, _handler = new WeakMap(), _a3);
|
|
95740
|
+
function toRawHeaderValue(value) {
|
|
95741
|
+
return Array.isArray(value) ? value.map((item) => Buffer.from(item, "latin1")) : Buffer.from(value, "latin1");
|
|
95742
|
+
}
|
|
95630
95743
|
return wrapHandler$1;
|
|
95631
95744
|
}
|
|
95632
95745
|
var dispatcher;
|
|
@@ -95634,7 +95747,7 @@ var hasRequiredDispatcher;
|
|
|
95634
95747
|
function requireDispatcher() {
|
|
95635
95748
|
if (hasRequiredDispatcher) return dispatcher;
|
|
95636
95749
|
hasRequiredDispatcher = 1;
|
|
95637
|
-
const EventEmitter2 = require$$
|
|
95750
|
+
const EventEmitter2 = require$$0$2;
|
|
95638
95751
|
const WrapHandler = requireWrapHandler();
|
|
95639
95752
|
const wrapInterceptor = (dispatch2) => (opts, handler) => dispatch2(opts, WrapHandler.wrap(handler));
|
|
95640
95753
|
class Dispatcher extends EventEmitter2 {
|
|
@@ -95735,6 +95848,10 @@ function requireUnwrapHandler() {
|
|
|
95735
95848
|
__privateSet(this, _controller, new UnwrapController(abort));
|
|
95736
95849
|
(_b3 = (_a4 = __privateGet(this, _handler)).onRequestStart) == null ? void 0 : _b3.call(_a4, __privateGet(this, _controller), context);
|
|
95737
95850
|
}
|
|
95851
|
+
onResponseStarted() {
|
|
95852
|
+
var _a4, _b3;
|
|
95853
|
+
return (_b3 = (_a4 = __privateGet(this, _handler)).onResponseStarted) == null ? void 0 : _b3.call(_a4);
|
|
95854
|
+
}
|
|
95738
95855
|
onUpgrade(statusCode, rawHeaders, socket) {
|
|
95739
95856
|
var _a4, _b3;
|
|
95740
95857
|
(_b3 = (_a4 = __privateGet(this, _handler)).onRequestUpgrade) == null ? void 0 : _b3.call(_a4, __privateGet(this, _controller), statusCode, parseHeaders2(rawHeaders), socket);
|
|
@@ -95907,8 +96024,8 @@ var hasRequiredConnect;
|
|
|
95907
96024
|
function requireConnect() {
|
|
95908
96025
|
if (hasRequiredConnect) return connect;
|
|
95909
96026
|
hasRequiredConnect = 1;
|
|
95910
|
-
const net2 = require$$0$
|
|
95911
|
-
const assert2 = require$$0$
|
|
96027
|
+
const net2 = require$$0$5;
|
|
96028
|
+
const assert2 = require$$0$3;
|
|
95912
96029
|
const util2 = requireUtil$5();
|
|
95913
96030
|
const { InvalidArgumentError } = requireErrors();
|
|
95914
96031
|
let tls;
|
|
@@ -95934,6 +96051,20 @@ function requireConnect() {
|
|
|
95934
96051
|
if (this._maxCachedSessions === 0) {
|
|
95935
96052
|
return;
|
|
95936
96053
|
}
|
|
96054
|
+
if (this._sessionCache.has(sessionKey)) {
|
|
96055
|
+
this._sessionCache.delete(sessionKey);
|
|
96056
|
+
} else if (this._sessionCache.size >= this._maxCachedSessions) {
|
|
96057
|
+
for (const [key, ref] of this._sessionCache) {
|
|
96058
|
+
if (ref.deref() === void 0) {
|
|
96059
|
+
this._sessionCache.delete(key);
|
|
96060
|
+
return;
|
|
96061
|
+
}
|
|
96062
|
+
}
|
|
96063
|
+
const oldest = this._sessionCache.keys().next();
|
|
96064
|
+
if (!oldest.done) {
|
|
96065
|
+
this._sessionCache.delete(oldest.value);
|
|
96066
|
+
}
|
|
96067
|
+
}
|
|
95937
96068
|
this._sessionCache.set(sessionKey, new WeakRef(session));
|
|
95938
96069
|
this._sessionRegistry.register(session, sessionKey);
|
|
95939
96070
|
}
|
|
@@ -96662,7 +96793,7 @@ function requireLlhttpWasm() {
|
|
|
96662
96793
|
if (hasRequiredLlhttpWasm) return llhttpWasm.exports;
|
|
96663
96794
|
hasRequiredLlhttpWasm = 1;
|
|
96664
96795
|
(function(module) {
|
|
96665
|
-
const { Buffer: Buffer2 } = require$$0$
|
|
96796
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
96666
96797
|
const wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
|
|
96667
96798
|
let wasmBuffer;
|
|
96668
96799
|
Object.defineProperty(module, "exports", {
|
|
@@ -96680,7 +96811,7 @@ function requireLlhttp_simdWasm() {
|
|
|
96680
96811
|
if (hasRequiredLlhttp_simdWasm) return llhttp_simdWasm.exports;
|
|
96681
96812
|
hasRequiredLlhttp_simdWasm = 1;
|
|
96682
96813
|
(function(module) {
|
|
96683
|
-
const { Buffer: Buffer2 } = require$$0$
|
|
96814
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
96684
96815
|
const wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
|
|
96685
96816
|
let wasmBuffer;
|
|
96686
96817
|
Object.defineProperty(module, "exports", {
|
|
@@ -96977,7 +97108,7 @@ var hasRequiredInfra;
|
|
|
96977
97108
|
function requireInfra() {
|
|
96978
97109
|
if (hasRequiredInfra) return infra;
|
|
96979
97110
|
hasRequiredInfra = 1;
|
|
96980
|
-
const assert2 = require$$0$
|
|
97111
|
+
const assert2 = require$$0$3;
|
|
96981
97112
|
const { utf8DecodeBytes } = requireEncoding();
|
|
96982
97113
|
function collectASequenceOfCodePoints(condition, input, position2) {
|
|
96983
97114
|
let result = "";
|
|
@@ -97090,7 +97221,7 @@ var hasRequiredDataUrl;
|
|
|
97090
97221
|
function requireDataUrl() {
|
|
97091
97222
|
if (hasRequiredDataUrl) return dataUrl;
|
|
97092
97223
|
hasRequiredDataUrl = 1;
|
|
97093
|
-
const assert2 = require$$0$
|
|
97224
|
+
const assert2 = require$$0$3;
|
|
97094
97225
|
const { forgivingBase64, collectASequenceOfCodePoints, collectASequenceOfCodePointsFast, isomorphicDecode, removeASCIIWhitespace, removeChars } = requireInfra();
|
|
97095
97226
|
const encoder2 = new TextEncoder();
|
|
97096
97227
|
const HTTP_TOKEN_CODEPOINTS = /^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u;
|
|
@@ -97477,7 +97608,7 @@ var hasRequiredWebidl;
|
|
|
97477
97608
|
function requireWebidl() {
|
|
97478
97609
|
if (hasRequiredWebidl) return webidl_1;
|
|
97479
97610
|
hasRequiredWebidl = 1;
|
|
97480
|
-
const assert2 = require$$0$
|
|
97611
|
+
const assert2 = require$$0$3;
|
|
97481
97612
|
const { types: types2, inspect: inspect2 } = require$$3;
|
|
97482
97613
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
97483
97614
|
const UNDEFINED2 = 1;
|
|
@@ -97615,7 +97746,7 @@ function requireWebidl() {
|
|
|
97615
97746
|
lowerBound = 0;
|
|
97616
97747
|
upperBound = Math.pow(2, bitLength) - 1;
|
|
97617
97748
|
} else {
|
|
97618
|
-
lowerBound = Math.pow(
|
|
97749
|
+
lowerBound = -Math.pow(2, bitLength - 1);
|
|
97619
97750
|
upperBound = Math.pow(2, bitLength - 1) - 1;
|
|
97620
97751
|
}
|
|
97621
97752
|
let x2 = Number(V2);
|
|
@@ -97652,7 +97783,7 @@ function requireWebidl() {
|
|
|
97652
97783
|
}
|
|
97653
97784
|
x2 = webidl.util.IntegerPart(x2);
|
|
97654
97785
|
x2 = x2 % Math.pow(2, bitLength);
|
|
97655
|
-
if (signedness === "signed" && x2 >= Math.pow(2, bitLength
|
|
97786
|
+
if (signedness === "signed" && x2 >= Math.pow(2, bitLength - 1)) {
|
|
97656
97787
|
return x2 - Math.pow(2, bitLength);
|
|
97657
97788
|
}
|
|
97658
97789
|
return x2;
|
|
@@ -97765,6 +97896,7 @@ function requireWebidl() {
|
|
|
97765
97896
|
};
|
|
97766
97897
|
};
|
|
97767
97898
|
webidl.dictionaryConverter = function(converters) {
|
|
97899
|
+
converters.sort((a2, b2) => (a2.key > b2.key) - (a2.key < b2.key));
|
|
97768
97900
|
return (dictionary, prefix, argument) => {
|
|
97769
97901
|
const dict = {};
|
|
97770
97902
|
if (dictionary != null && webidl.util.Type(dictionary) !== OBJECT2) {
|
|
@@ -98080,14 +98212,14 @@ function requireUtil$4() {
|
|
|
98080
98212
|
var _zlibOptions;
|
|
98081
98213
|
if (hasRequiredUtil$4) return util$4;
|
|
98082
98214
|
hasRequiredUtil$4 = 1;
|
|
98083
|
-
const { Transform: Transform2 } = require$$0$
|
|
98215
|
+
const { Transform: Transform2 } = require$$0$4;
|
|
98084
98216
|
const zlib = require$$3$1;
|
|
98085
98217
|
const { redirectStatusSet, referrerPolicyTokens, badPortsSet } = requireConstants$3();
|
|
98086
98218
|
const { getGlobalOrigin } = requireGlobal$1();
|
|
98087
98219
|
const { collectAnHTTPQuotedString, parseMIMEType } = requireDataUrl();
|
|
98088
98220
|
const { performance: performance2 } = require$$5$2;
|
|
98089
98221
|
const { ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = requireUtil$5();
|
|
98090
|
-
const assert2 = require$$0$
|
|
98222
|
+
const assert2 = require$$0$3;
|
|
98091
98223
|
const { isUint8Array: isUint8Array2 } = require$$8;
|
|
98092
98224
|
const { webidl } = requireWebidl();
|
|
98093
98225
|
const { isomorphicEncode, collectASequenceOfCodePoints, removeChars } = requireInfra();
|
|
@@ -98782,7 +98914,7 @@ function requireUtil$4() {
|
|
|
98782
98914
|
return !!(url2.username || url2.password);
|
|
98783
98915
|
}
|
|
98784
98916
|
function isTraversableNavigable(navigable) {
|
|
98785
|
-
return
|
|
98917
|
+
return navigable != null && navigable !== "client" && navigable !== "no-traversable";
|
|
98786
98918
|
}
|
|
98787
98919
|
class EnvironmentSettingsObjectBase {
|
|
98788
98920
|
constructor() {
|
|
@@ -99027,11 +99159,11 @@ function requireFormdataParser() {
|
|
|
99027
99159
|
const { HTTP_TOKEN_CODEPOINTS } = requireDataUrl();
|
|
99028
99160
|
const { makeEntry } = requireFormdata();
|
|
99029
99161
|
const { webidl } = requireWebidl();
|
|
99030
|
-
const assert2 = require$$0$
|
|
99162
|
+
const assert2 = require$$0$3;
|
|
99031
99163
|
const { isomorphicDecode } = requireInfra();
|
|
99032
|
-
const { utf8DecodeBytes } = requireEncoding();
|
|
99033
99164
|
const dd = Buffer.from("--");
|
|
99034
99165
|
const decoder2 = new TextDecoder();
|
|
99166
|
+
const decoderIgnoreBOM = new TextDecoder("utf-8", { ignoreBOM: true });
|
|
99035
99167
|
function isAsciiString(chars2) {
|
|
99036
99168
|
for (let i = 0; i < chars2.length; ++i) {
|
|
99037
99169
|
if ((chars2.charCodeAt(i) & -128) !== 0) {
|
|
@@ -99108,7 +99240,7 @@ function requireFormdataParser() {
|
|
|
99108
99240
|
}
|
|
99109
99241
|
value = new File([body2], filename, { type: contentType });
|
|
99110
99242
|
} else {
|
|
99111
|
-
value =
|
|
99243
|
+
value = decoderIgnoreBOM.decode(Buffer.from(body2));
|
|
99112
99244
|
}
|
|
99113
99245
|
assert2(webidl.is.USVString(name2));
|
|
99114
99246
|
assert2(typeof value === "string" && webidl.is.USVString(value) || webidl.is.File(value));
|
|
@@ -99185,7 +99317,7 @@ function requireFormdataParser() {
|
|
|
99185
99317
|
);
|
|
99186
99318
|
value = decoder2.decode(tokenValue);
|
|
99187
99319
|
}
|
|
99188
|
-
return { name: attrNameStr, value };
|
|
99320
|
+
return { name: attrNameStr, value, extended: isExtended };
|
|
99189
99321
|
}
|
|
99190
99322
|
function parseMultipartFormDataHeaders(input, position2) {
|
|
99191
99323
|
let name2 = null;
|
|
@@ -99220,6 +99352,7 @@ function requireFormdataParser() {
|
|
|
99220
99352
|
switch (bufferToLowerCasedHeaderName(headerName)) {
|
|
99221
99353
|
case "content-disposition": {
|
|
99222
99354
|
name2 = filename = null;
|
|
99355
|
+
let filenameIsExtended = false;
|
|
99223
99356
|
const dispositionType = collectASequenceOfBytes(
|
|
99224
99357
|
(char) => isToken(char),
|
|
99225
99358
|
input,
|
|
@@ -99228,7 +99361,7 @@ function requireFormdataParser() {
|
|
|
99228
99361
|
if (dispositionType.toString("ascii").toLowerCase() !== "form-data") {
|
|
99229
99362
|
throw parsingError("expected form-data for content-disposition header");
|
|
99230
99363
|
}
|
|
99231
|
-
while (position2.position < input.length && input[position2.position] !== 13
|
|
99364
|
+
while (position2.position < input.length && (input[position2.position] !== 13 || input[position2.position + 1] !== 10)) {
|
|
99232
99365
|
const attribute = parseContentDispositionAttribute(input, position2);
|
|
99233
99366
|
if (!attribute) {
|
|
99234
99367
|
break;
|
|
@@ -99236,7 +99369,12 @@ function requireFormdataParser() {
|
|
|
99236
99369
|
if (attribute.name === "name") {
|
|
99237
99370
|
name2 = attribute.value;
|
|
99238
99371
|
} else if (attribute.name === "filename") {
|
|
99239
|
-
|
|
99372
|
+
if (attribute.extended) {
|
|
99373
|
+
filename = attribute.value;
|
|
99374
|
+
filenameIsExtended = true;
|
|
99375
|
+
} else if (!filenameIsExtended) {
|
|
99376
|
+
filename = attribute.value;
|
|
99377
|
+
}
|
|
99240
99378
|
}
|
|
99241
99379
|
}
|
|
99242
99380
|
if (name2 === null) {
|
|
@@ -99272,7 +99410,7 @@ function requireFormdataParser() {
|
|
|
99272
99410
|
);
|
|
99273
99411
|
}
|
|
99274
99412
|
}
|
|
99275
|
-
if (input[position2.position] !== 13
|
|
99413
|
+
if (input[position2.position] !== 13 || input[position2.position + 1] !== 10) {
|
|
99276
99414
|
throw parsingError("expected CRLF");
|
|
99277
99415
|
} else {
|
|
99278
99416
|
position2.position += 2;
|
|
@@ -99375,8 +99513,8 @@ function requireBody() {
|
|
|
99375
99513
|
} = requireUtil$4();
|
|
99376
99514
|
const { FormData, setFormDataState } = requireFormdata();
|
|
99377
99515
|
const { webidl } = requireWebidl();
|
|
99378
|
-
const assert2 = require$$0$
|
|
99379
|
-
const { isErrored, isDisturbed } = require$$0$
|
|
99516
|
+
const assert2 = require$$0$3;
|
|
99517
|
+
const { isErrored, isDisturbed } = require$$0$4;
|
|
99380
99518
|
const { isUint8Array: isUint8Array2 } = require$$8;
|
|
99381
99519
|
const { serializeAMimeType } = requireDataUrl();
|
|
99382
99520
|
const { multipartFormDataParser } = requireFormdataParser();
|
|
@@ -99650,7 +99788,7 @@ var hasRequiredClientH1;
|
|
|
99650
99788
|
function requireClientH1() {
|
|
99651
99789
|
if (hasRequiredClientH1) return clientH1;
|
|
99652
99790
|
hasRequiredClientH1 = 1;
|
|
99653
|
-
const assert2 = require$$0$
|
|
99791
|
+
const assert2 = require$$0$3;
|
|
99654
99792
|
const util2 = requireUtil$5();
|
|
99655
99793
|
const { channels } = requireDiagnostics();
|
|
99656
99794
|
const timers2 = requireTimers();
|
|
@@ -99710,9 +99848,9 @@ function requireClientH1() {
|
|
|
99710
99848
|
let mod;
|
|
99711
99849
|
let useWasmSIMD = process.arch !== "ppc64";
|
|
99712
99850
|
if (process.env.UNDICI_NO_WASM_SIMD === "1") {
|
|
99713
|
-
useWasmSIMD = true;
|
|
99714
|
-
} else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
|
|
99715
99851
|
useWasmSIMD = false;
|
|
99852
|
+
} else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
|
|
99853
|
+
useWasmSIMD = true;
|
|
99716
99854
|
}
|
|
99717
99855
|
if (useWasmSIMD) {
|
|
99718
99856
|
try {
|
|
@@ -99830,6 +99968,7 @@ function requireClientH1() {
|
|
|
99830
99968
|
this.client = client2;
|
|
99831
99969
|
this.socket = socket;
|
|
99832
99970
|
this.timeout = null;
|
|
99971
|
+
this.timeoutWeakRef = new WeakRef(this);
|
|
99833
99972
|
this.timeoutValue = null;
|
|
99834
99973
|
this.timeoutType = null;
|
|
99835
99974
|
this.statusCode = 0;
|
|
@@ -99856,9 +99995,9 @@ function requireClientH1() {
|
|
|
99856
99995
|
}
|
|
99857
99996
|
if (delay) {
|
|
99858
99997
|
if (type & USE_FAST_TIMER) {
|
|
99859
|
-
this.timeout = timers2.setFastTimeout(onParserTimeout, delay,
|
|
99998
|
+
this.timeout = timers2.setFastTimeout(onParserTimeout, delay, this.timeoutWeakRef);
|
|
99860
99999
|
} else {
|
|
99861
|
-
this.timeout = setTimeout(onParserTimeout, delay,
|
|
100000
|
+
this.timeout = setTimeout(onParserTimeout, delay, this.timeoutWeakRef);
|
|
99862
100001
|
(_a3 = this.timeout) == null ? void 0 : _a3.unref();
|
|
99863
100002
|
}
|
|
99864
100003
|
}
|
|
@@ -99930,19 +100069,47 @@ function requireClientH1() {
|
|
|
99930
100069
|
this.paused = true;
|
|
99931
100070
|
socket.unshift(data);
|
|
99932
100071
|
} else {
|
|
99933
|
-
|
|
99934
|
-
let message2 = "";
|
|
99935
|
-
if (ptr) {
|
|
99936
|
-
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
99937
|
-
message2 = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
99938
|
-
}
|
|
99939
|
-
throw new HTTPParserError(message2, constants2.ERROR[ret], data);
|
|
100072
|
+
throw this.createError(ret, data);
|
|
99940
100073
|
}
|
|
99941
100074
|
}
|
|
99942
100075
|
} catch (err) {
|
|
99943
100076
|
util2.destroy(socket, err);
|
|
99944
100077
|
}
|
|
99945
100078
|
}
|
|
100079
|
+
finish() {
|
|
100080
|
+
assert2(currentParser === null);
|
|
100081
|
+
assert2(this.ptr != null);
|
|
100082
|
+
assert2(!this.paused);
|
|
100083
|
+
const { llhttp } = this;
|
|
100084
|
+
let ret;
|
|
100085
|
+
try {
|
|
100086
|
+
currentParser = this;
|
|
100087
|
+
ret = llhttp.llhttp_finish(this.ptr);
|
|
100088
|
+
} finally {
|
|
100089
|
+
currentParser = null;
|
|
100090
|
+
}
|
|
100091
|
+
if (ret === constants2.ERROR.OK) {
|
|
100092
|
+
return null;
|
|
100093
|
+
}
|
|
100094
|
+
if (ret === constants2.ERROR.PAUSED || ret === constants2.ERROR.PAUSED_UPGRADE) {
|
|
100095
|
+
this.paused = true;
|
|
100096
|
+
return null;
|
|
100097
|
+
}
|
|
100098
|
+
return this.createError(ret, EMPTY_BUF);
|
|
100099
|
+
}
|
|
100100
|
+
createError(ret, data) {
|
|
100101
|
+
const { llhttp, contentLength, bytesRead } = this;
|
|
100102
|
+
if (contentLength && bytesRead !== parseInt(contentLength, 10)) {
|
|
100103
|
+
return new ResponseContentLengthMismatchError();
|
|
100104
|
+
}
|
|
100105
|
+
const ptr = llhttp.llhttp_get_error_reason(this.ptr);
|
|
100106
|
+
let message2 = "";
|
|
100107
|
+
if (ptr) {
|
|
100108
|
+
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
100109
|
+
message2 = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
100110
|
+
}
|
|
100111
|
+
return new HTTPParserError(message2, constants2.ERROR[ret], data);
|
|
100112
|
+
}
|
|
99946
100113
|
destroy() {
|
|
99947
100114
|
assert2(currentParser === null);
|
|
99948
100115
|
assert2(this.ptr != null);
|
|
@@ -100319,7 +100486,11 @@ function requireClientH1() {
|
|
|
100319
100486
|
assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
|
|
100320
100487
|
const parser = this[kParser];
|
|
100321
100488
|
if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
|
|
100322
|
-
parser.
|
|
100489
|
+
const parserErr = parser.finish();
|
|
100490
|
+
if (parserErr) {
|
|
100491
|
+
this[kError] = parserErr;
|
|
100492
|
+
this[kClient][kOnError](parserErr);
|
|
100493
|
+
}
|
|
100323
100494
|
return;
|
|
100324
100495
|
}
|
|
100325
100496
|
this[kError] = err;
|
|
@@ -100332,7 +100503,10 @@ function requireClientH1() {
|
|
|
100332
100503
|
function onHttpSocketEnd() {
|
|
100333
100504
|
const parser = this[kParser];
|
|
100334
100505
|
if (parser.statusCode && !parser.shouldKeepAlive) {
|
|
100335
|
-
parser.
|
|
100506
|
+
const parserErr = parser.finish();
|
|
100507
|
+
if (parserErr) {
|
|
100508
|
+
util2.destroy(this, parserErr);
|
|
100509
|
+
}
|
|
100336
100510
|
return;
|
|
100337
100511
|
}
|
|
100338
100512
|
util2.destroy(this, new SocketError("other side closed", util2.getSocketInfo(this)));
|
|
@@ -100341,7 +100515,7 @@ function requireClientH1() {
|
|
|
100341
100515
|
const parser = this[kParser];
|
|
100342
100516
|
if (parser) {
|
|
100343
100517
|
if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
|
|
100344
|
-
parser.
|
|
100518
|
+
this[kError] = parser.finish() || this[kError];
|
|
100345
100519
|
}
|
|
100346
100520
|
this[kParser].destroy();
|
|
100347
100521
|
this[kParser] = null;
|
|
@@ -100465,6 +100639,9 @@ function requireClientH1() {
|
|
|
100465
100639
|
if (blocking) {
|
|
100466
100640
|
socket[kBlocking] = true;
|
|
100467
100641
|
}
|
|
100642
|
+
if (socket.setTypeOfService) {
|
|
100643
|
+
socket.setTypeOfService(request2.typeOfService);
|
|
100644
|
+
}
|
|
100468
100645
|
let header = `${method} ${path2} HTTP/1.1\r
|
|
100469
100646
|
`;
|
|
100470
100647
|
if (typeof host === "string") {
|
|
@@ -100815,8 +100992,8 @@ var hasRequiredClientH2;
|
|
|
100815
100992
|
function requireClientH2() {
|
|
100816
100993
|
if (hasRequiredClientH2) return clientH2;
|
|
100817
100994
|
hasRequiredClientH2 = 1;
|
|
100818
|
-
const assert2 = require$$0$
|
|
100819
|
-
const { pipeline } = require$$0$
|
|
100995
|
+
const assert2 = require$$0$3;
|
|
100996
|
+
const { pipeline } = require$$0$4;
|
|
100820
100997
|
const util2 = requireUtil$5();
|
|
100821
100998
|
const {
|
|
100822
100999
|
RequestContentLengthMismatchError,
|
|
@@ -101295,11 +101472,14 @@ function requireClientH2() {
|
|
|
101295
101472
|
if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
|
|
101296
101473
|
stream.pause();
|
|
101297
101474
|
}
|
|
101298
|
-
|
|
101299
|
-
|
|
101300
|
-
|
|
101301
|
-
|
|
101302
|
-
|
|
101475
|
+
stream.on("data", (chunk) => {
|
|
101476
|
+
if (request2.aborted || request2.completed) {
|
|
101477
|
+
return;
|
|
101478
|
+
}
|
|
101479
|
+
if (request2.onData(chunk) === false) {
|
|
101480
|
+
stream.pause();
|
|
101481
|
+
}
|
|
101482
|
+
});
|
|
101303
101483
|
});
|
|
101304
101484
|
stream.once("end", () => {
|
|
101305
101485
|
stream.removeAllListeners("data");
|
|
@@ -101347,6 +101527,7 @@ function requireClientH2() {
|
|
|
101347
101527
|
if (request2.aborted || request2.completed) {
|
|
101348
101528
|
return;
|
|
101349
101529
|
}
|
|
101530
|
+
stream.removeAllListeners("data");
|
|
101350
101531
|
request2.onComplete(trailers);
|
|
101351
101532
|
});
|
|
101352
101533
|
return true;
|
|
@@ -101538,8 +101719,8 @@ var hasRequiredClient;
|
|
|
101538
101719
|
function requireClient() {
|
|
101539
101720
|
if (hasRequiredClient) return client;
|
|
101540
101721
|
hasRequiredClient = 1;
|
|
101541
|
-
const assert2 = require$$0$
|
|
101542
|
-
const net2 = require$$0$
|
|
101722
|
+
const assert2 = require$$0$3;
|
|
101723
|
+
const net2 = require$$0$5;
|
|
101543
101724
|
const http = require$$2$1;
|
|
101544
101725
|
const util2 = requireUtil$5();
|
|
101545
101726
|
const { ClientStats } = requireStats();
|
|
@@ -101733,6 +101914,13 @@ function requireClient() {
|
|
|
101733
101914
|
...typeof autoSelectFamily === "boolean" ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
|
|
101734
101915
|
...connect3
|
|
101735
101916
|
});
|
|
101917
|
+
} else {
|
|
101918
|
+
const customConnect = connect3;
|
|
101919
|
+
connect3 = (opts, callback) => customConnect({
|
|
101920
|
+
...opts,
|
|
101921
|
+
...socketPath != null ? { socketPath } : null,
|
|
101922
|
+
...allowH2 != null ? { allowH2 } : null
|
|
101923
|
+
}, callback);
|
|
101736
101924
|
}
|
|
101737
101925
|
this[kUrl] = util2.parseOrigin(url2);
|
|
101738
101926
|
this[kConnector] = connect3;
|
|
@@ -101883,57 +102071,62 @@ function requireClient() {
|
|
|
101883
102071
|
connector: client2[kConnector]
|
|
101884
102072
|
});
|
|
101885
102073
|
}
|
|
101886
|
-
|
|
101887
|
-
|
|
101888
|
-
|
|
101889
|
-
|
|
101890
|
-
|
|
101891
|
-
|
|
101892
|
-
|
|
101893
|
-
|
|
101894
|
-
|
|
101895
|
-
|
|
101896
|
-
|
|
101897
|
-
|
|
101898
|
-
|
|
101899
|
-
|
|
101900
|
-
|
|
101901
|
-
|
|
101902
|
-
|
|
101903
|
-
|
|
101904
|
-
|
|
101905
|
-
|
|
101906
|
-
|
|
101907
|
-
|
|
101908
|
-
|
|
101909
|
-
|
|
101910
|
-
|
|
102074
|
+
try {
|
|
102075
|
+
client2[kConnector]({
|
|
102076
|
+
host,
|
|
102077
|
+
hostname: hostname2,
|
|
102078
|
+
protocol,
|
|
102079
|
+
port,
|
|
102080
|
+
servername: client2[kServerName],
|
|
102081
|
+
localAddress: client2[kLocalAddress]
|
|
102082
|
+
}, (err, socket) => {
|
|
102083
|
+
var _a4;
|
|
102084
|
+
if (err) {
|
|
102085
|
+
handleConnectError(client2, err, { host, hostname: hostname2, protocol, port });
|
|
102086
|
+
client2[kResume]();
|
|
102087
|
+
return;
|
|
102088
|
+
}
|
|
102089
|
+
if (client2.destroyed) {
|
|
102090
|
+
util2.destroy(socket.on("error", noop3), new ClientDestroyedError());
|
|
102091
|
+
client2[kResume]();
|
|
102092
|
+
return;
|
|
102093
|
+
}
|
|
102094
|
+
assert2(socket);
|
|
102095
|
+
try {
|
|
102096
|
+
client2[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client2, socket) : connectH1(client2, socket);
|
|
102097
|
+
} catch (err2) {
|
|
102098
|
+
socket.destroy().on("error", noop3);
|
|
102099
|
+
handleConnectError(client2, err2, { host, hostname: hostname2, protocol, port });
|
|
102100
|
+
client2[kResume]();
|
|
102101
|
+
return;
|
|
102102
|
+
}
|
|
102103
|
+
client2[kConnecting] = false;
|
|
102104
|
+
socket[kCounter] = 0;
|
|
102105
|
+
socket[kMaxRequests] = client2[kMaxRequests];
|
|
102106
|
+
socket[kClient] = client2;
|
|
102107
|
+
socket[kError] = null;
|
|
102108
|
+
if (channels.connected.hasSubscribers) {
|
|
102109
|
+
channels.connected.publish({
|
|
102110
|
+
connectParams: {
|
|
102111
|
+
host,
|
|
102112
|
+
hostname: hostname2,
|
|
102113
|
+
protocol,
|
|
102114
|
+
port,
|
|
102115
|
+
version: (_a4 = client2[kHTTPContext]) == null ? void 0 : _a4.version,
|
|
102116
|
+
servername: client2[kServerName],
|
|
102117
|
+
localAddress: client2[kLocalAddress]
|
|
102118
|
+
},
|
|
102119
|
+
connector: client2[kConnector],
|
|
102120
|
+
socket
|
|
102121
|
+
});
|
|
102122
|
+
}
|
|
102123
|
+
client2.emit("connect", client2[kUrl], [client2]);
|
|
101911
102124
|
client2[kResume]();
|
|
101912
|
-
|
|
101913
|
-
|
|
101914
|
-
client2
|
|
101915
|
-
socket[kCounter] = 0;
|
|
101916
|
-
socket[kMaxRequests] = client2[kMaxRequests];
|
|
101917
|
-
socket[kClient] = client2;
|
|
101918
|
-
socket[kError] = null;
|
|
101919
|
-
if (channels.connected.hasSubscribers) {
|
|
101920
|
-
channels.connected.publish({
|
|
101921
|
-
connectParams: {
|
|
101922
|
-
host,
|
|
101923
|
-
hostname: hostname2,
|
|
101924
|
-
protocol,
|
|
101925
|
-
port,
|
|
101926
|
-
version: (_a4 = client2[kHTTPContext]) == null ? void 0 : _a4.version,
|
|
101927
|
-
servername: client2[kServerName],
|
|
101928
|
-
localAddress: client2[kLocalAddress]
|
|
101929
|
-
},
|
|
101930
|
-
connector: client2[kConnector],
|
|
101931
|
-
socket
|
|
101932
|
-
});
|
|
101933
|
-
}
|
|
101934
|
-
client2.emit("connect", client2[kUrl], [client2]);
|
|
102125
|
+
});
|
|
102126
|
+
} catch (err) {
|
|
102127
|
+
handleConnectError(client2, err, { host, hostname: hostname2, protocol, port });
|
|
101935
102128
|
client2[kResume]();
|
|
101936
|
-
}
|
|
102129
|
+
}
|
|
101937
102130
|
}
|
|
101938
102131
|
function handleConnectError(client2, err, { host, hostname: hostname2, protocol, port }) {
|
|
101939
102132
|
var _a3;
|
|
@@ -102017,6 +102210,9 @@ function requireClient() {
|
|
|
102017
102210
|
return;
|
|
102018
102211
|
}
|
|
102019
102212
|
const request2 = client2[kQueue][client2[kPendingIdx]];
|
|
102213
|
+
if (request2 === null) {
|
|
102214
|
+
return;
|
|
102215
|
+
}
|
|
102020
102216
|
if (client2[kUrl].protocol === "https:" && client2[kServerName] !== request2.servername) {
|
|
102021
102217
|
if (client2[kRunning] > 0) {
|
|
102022
102218
|
return;
|
|
@@ -102367,7 +102563,7 @@ function requirePool() {
|
|
|
102367
102563
|
super();
|
|
102368
102564
|
this[kConnections] = connections || null;
|
|
102369
102565
|
this[kUrl] = util2.parseOrigin(origin);
|
|
102370
|
-
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl };
|
|
102566
|
+
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl, socketPath };
|
|
102371
102567
|
this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
|
|
102372
102568
|
this[kFactory] = factory;
|
|
102373
102569
|
this.on("connect", (origin2, targets) => {
|
|
@@ -102424,7 +102620,7 @@ function requireBalancedPool() {
|
|
|
102424
102620
|
} = requirePoolBase();
|
|
102425
102621
|
const Pool = requirePool();
|
|
102426
102622
|
const { kUrl } = requireSymbols();
|
|
102427
|
-
const
|
|
102623
|
+
const util2 = requireUtil$5();
|
|
102428
102624
|
const kFactory = Symbol("factory");
|
|
102429
102625
|
const kOptions = Symbol("options");
|
|
102430
102626
|
const kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor");
|
|
@@ -102451,7 +102647,8 @@ function requireBalancedPool() {
|
|
|
102451
102647
|
throw new InvalidArgumentError("factory must be a function.");
|
|
102452
102648
|
}
|
|
102453
102649
|
super();
|
|
102454
|
-
this[kOptions] = opts;
|
|
102650
|
+
this[kOptions] = { ...util2.deepClone(opts) };
|
|
102651
|
+
this[kOptions].interceptors = opts.interceptors ? { ...opts.interceptors } : void 0;
|
|
102455
102652
|
this[kIndex] = -1;
|
|
102456
102653
|
this[kCurrentWeight] = 0;
|
|
102457
102654
|
this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100;
|
|
@@ -102466,11 +102663,11 @@ function requireBalancedPool() {
|
|
|
102466
102663
|
this._updateBalancedPoolStats();
|
|
102467
102664
|
}
|
|
102468
102665
|
addUpstream(upstream) {
|
|
102469
|
-
const upstreamOrigin = parseOrigin(upstream).origin;
|
|
102666
|
+
const upstreamOrigin = util2.parseOrigin(upstream).origin;
|
|
102470
102667
|
if (this[kClients].find((pool3) => pool3[kUrl].origin === upstreamOrigin && pool3.closed !== true && pool3.destroyed !== true)) {
|
|
102471
102668
|
return this;
|
|
102472
102669
|
}
|
|
102473
|
-
const pool2 = this[kFactory](upstreamOrigin,
|
|
102670
|
+
const pool2 = this[kFactory](upstreamOrigin, this[kOptions]);
|
|
102474
102671
|
this[kAddClient](pool2);
|
|
102475
102672
|
pool2.on("connect", () => {
|
|
102476
102673
|
pool2[kWeight] = Math.min(this[kMaxWeightPerServer], pool2[kWeight] + this[kErrorPenalty]);
|
|
@@ -102500,7 +102697,7 @@ function requireBalancedPool() {
|
|
|
102500
102697
|
this[kGreatestCommonDivisor] = result;
|
|
102501
102698
|
}
|
|
102502
102699
|
removeUpstream(upstream) {
|
|
102503
|
-
const upstreamOrigin = parseOrigin(upstream).origin;
|
|
102700
|
+
const upstreamOrigin = util2.parseOrigin(upstream).origin;
|
|
102504
102701
|
const pool2 = this[kClients].find((pool3) => pool3[kUrl].origin === upstreamOrigin && pool3.closed !== true && pool3.destroyed !== true);
|
|
102505
102702
|
if (pool2) {
|
|
102506
102703
|
this[kRemoveClient](pool2);
|
|
@@ -102508,7 +102705,7 @@ function requireBalancedPool() {
|
|
|
102508
102705
|
return this;
|
|
102509
102706
|
}
|
|
102510
102707
|
getUpstream(upstream) {
|
|
102511
|
-
const upstreamOrigin = parseOrigin(upstream).origin;
|
|
102708
|
+
const upstreamOrigin = util2.parseOrigin(upstream).origin;
|
|
102512
102709
|
return this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true);
|
|
102513
102710
|
}
|
|
102514
102711
|
get upstreams() {
|
|
@@ -102617,7 +102814,7 @@ function requireRoundRobinPool() {
|
|
|
102617
102814
|
super();
|
|
102618
102815
|
this[kConnections] = connections || null;
|
|
102619
102816
|
this[kUrl] = util2.parseOrigin(origin);
|
|
102620
|
-
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl };
|
|
102817
|
+
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl, socketPath };
|
|
102621
102818
|
this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
|
|
102622
102819
|
this[kFactory] = factory;
|
|
102623
102820
|
this[kIndex] = -1;
|
|
@@ -102802,6 +102999,671 @@ function requireAgent() {
|
|
|
102802
102999
|
agent = Agent;
|
|
102803
103000
|
return agent;
|
|
102804
103001
|
}
|
|
103002
|
+
var socks5Utils;
|
|
103003
|
+
var hasRequiredSocks5Utils;
|
|
103004
|
+
function requireSocks5Utils() {
|
|
103005
|
+
if (hasRequiredSocks5Utils) return socks5Utils;
|
|
103006
|
+
hasRequiredSocks5Utils = 1;
|
|
103007
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
103008
|
+
const net2 = require$$0$5;
|
|
103009
|
+
const { InvalidArgumentError } = requireErrors();
|
|
103010
|
+
function parseAddress(address) {
|
|
103011
|
+
if (net2.isIPv4(address)) {
|
|
103012
|
+
const parts = address.split(".").map(Number);
|
|
103013
|
+
return {
|
|
103014
|
+
type: 1,
|
|
103015
|
+
// IPv4
|
|
103016
|
+
buffer: Buffer2.from(parts)
|
|
103017
|
+
};
|
|
103018
|
+
}
|
|
103019
|
+
if (net2.isIPv6(address)) {
|
|
103020
|
+
return {
|
|
103021
|
+
type: 4,
|
|
103022
|
+
// IPv6
|
|
103023
|
+
buffer: parseIPv6(address)
|
|
103024
|
+
};
|
|
103025
|
+
}
|
|
103026
|
+
const domainBuffer = Buffer2.from(address, "utf8");
|
|
103027
|
+
if (domainBuffer.length > 255) {
|
|
103028
|
+
throw new InvalidArgumentError("Domain name too long (max 255 bytes)");
|
|
103029
|
+
}
|
|
103030
|
+
return {
|
|
103031
|
+
type: 3,
|
|
103032
|
+
// Domain
|
|
103033
|
+
buffer: Buffer2.concat([Buffer2.from([domainBuffer.length]), domainBuffer])
|
|
103034
|
+
};
|
|
103035
|
+
}
|
|
103036
|
+
function parseIPv6(address) {
|
|
103037
|
+
const buffer = Buffer2.alloc(16);
|
|
103038
|
+
const doubleColonIndex = address.indexOf("::");
|
|
103039
|
+
if (doubleColonIndex !== -1) {
|
|
103040
|
+
const before = address.slice(0, doubleColonIndex);
|
|
103041
|
+
const after = address.slice(doubleColonIndex + 2);
|
|
103042
|
+
const beforeParts = before === "" ? [] : before.split(":");
|
|
103043
|
+
const afterParts = after === "" ? [] : after.split(":");
|
|
103044
|
+
let bufferIndex = 0;
|
|
103045
|
+
for (const part of beforeParts) {
|
|
103046
|
+
buffer.writeUInt16BE(parseInt(part, 16), bufferIndex);
|
|
103047
|
+
bufferIndex += 2;
|
|
103048
|
+
}
|
|
103049
|
+
bufferIndex = 16 - afterParts.length * 2;
|
|
103050
|
+
for (const part of afterParts) {
|
|
103051
|
+
buffer.writeUInt16BE(parseInt(part, 16), bufferIndex);
|
|
103052
|
+
bufferIndex += 2;
|
|
103053
|
+
}
|
|
103054
|
+
} else {
|
|
103055
|
+
const parts = address.split(":");
|
|
103056
|
+
for (let i = 0; i < parts.length; i++) {
|
|
103057
|
+
buffer.writeUInt16BE(parseInt(parts[i], 16), i * 2);
|
|
103058
|
+
}
|
|
103059
|
+
}
|
|
103060
|
+
return buffer;
|
|
103061
|
+
}
|
|
103062
|
+
function buildAddressBuffer(type, addressBuffer, port) {
|
|
103063
|
+
const portBuffer = Buffer2.allocUnsafe(2);
|
|
103064
|
+
portBuffer.writeUInt16BE(port, 0);
|
|
103065
|
+
return Buffer2.concat([
|
|
103066
|
+
Buffer2.from([type]),
|
|
103067
|
+
addressBuffer,
|
|
103068
|
+
portBuffer
|
|
103069
|
+
]);
|
|
103070
|
+
}
|
|
103071
|
+
function parseResponseAddress(buffer, offset2 = 0) {
|
|
103072
|
+
if (buffer.length < offset2 + 1) {
|
|
103073
|
+
throw new InvalidArgumentError("Buffer too small to contain address type");
|
|
103074
|
+
}
|
|
103075
|
+
const addressType = buffer[offset2];
|
|
103076
|
+
let address;
|
|
103077
|
+
let currentOffset = offset2 + 1;
|
|
103078
|
+
switch (addressType) {
|
|
103079
|
+
case 1: {
|
|
103080
|
+
if (buffer.length < currentOffset + 6) {
|
|
103081
|
+
throw new InvalidArgumentError("Buffer too small for IPv4 address");
|
|
103082
|
+
}
|
|
103083
|
+
address = Array.from(buffer.subarray(currentOffset, currentOffset + 4)).join(".");
|
|
103084
|
+
currentOffset += 4;
|
|
103085
|
+
break;
|
|
103086
|
+
}
|
|
103087
|
+
case 3: {
|
|
103088
|
+
if (buffer.length < currentOffset + 1) {
|
|
103089
|
+
throw new InvalidArgumentError("Buffer too small for domain length");
|
|
103090
|
+
}
|
|
103091
|
+
const domainLength = buffer[currentOffset];
|
|
103092
|
+
currentOffset += 1;
|
|
103093
|
+
if (buffer.length < currentOffset + domainLength + 2) {
|
|
103094
|
+
throw new InvalidArgumentError("Buffer too small for domain address");
|
|
103095
|
+
}
|
|
103096
|
+
address = buffer.subarray(currentOffset, currentOffset + domainLength).toString("utf8");
|
|
103097
|
+
currentOffset += domainLength;
|
|
103098
|
+
break;
|
|
103099
|
+
}
|
|
103100
|
+
case 4: {
|
|
103101
|
+
if (buffer.length < currentOffset + 18) {
|
|
103102
|
+
throw new InvalidArgumentError("Buffer too small for IPv6 address");
|
|
103103
|
+
}
|
|
103104
|
+
const parts = [];
|
|
103105
|
+
for (let i = 0; i < 8; i++) {
|
|
103106
|
+
const value = buffer.readUInt16BE(currentOffset + i * 2);
|
|
103107
|
+
parts.push(value.toString(16));
|
|
103108
|
+
}
|
|
103109
|
+
address = parts.join(":");
|
|
103110
|
+
currentOffset += 16;
|
|
103111
|
+
break;
|
|
103112
|
+
}
|
|
103113
|
+
default:
|
|
103114
|
+
throw new InvalidArgumentError(`Invalid address type: ${addressType}`);
|
|
103115
|
+
}
|
|
103116
|
+
if (buffer.length < currentOffset + 2) {
|
|
103117
|
+
throw new InvalidArgumentError("Buffer too small for port");
|
|
103118
|
+
}
|
|
103119
|
+
const port = buffer.readUInt16BE(currentOffset);
|
|
103120
|
+
currentOffset += 2;
|
|
103121
|
+
return {
|
|
103122
|
+
address,
|
|
103123
|
+
port,
|
|
103124
|
+
bytesRead: currentOffset - offset2
|
|
103125
|
+
};
|
|
103126
|
+
}
|
|
103127
|
+
function createReplyError(replyCode) {
|
|
103128
|
+
const messages = {
|
|
103129
|
+
1: "General SOCKS server failure",
|
|
103130
|
+
2: "Connection not allowed by ruleset",
|
|
103131
|
+
3: "Network unreachable",
|
|
103132
|
+
4: "Host unreachable",
|
|
103133
|
+
5: "Connection refused",
|
|
103134
|
+
6: "TTL expired",
|
|
103135
|
+
7: "Command not supported",
|
|
103136
|
+
8: "Address type not supported"
|
|
103137
|
+
};
|
|
103138
|
+
const message2 = messages[replyCode] || `Unknown SOCKS5 error code: ${replyCode}`;
|
|
103139
|
+
const error2 = new Error(message2);
|
|
103140
|
+
error2.code = `SOCKS5_${replyCode}`;
|
|
103141
|
+
return error2;
|
|
103142
|
+
}
|
|
103143
|
+
socks5Utils = {
|
|
103144
|
+
parseAddress,
|
|
103145
|
+
parseIPv6,
|
|
103146
|
+
buildAddressBuffer,
|
|
103147
|
+
parseResponseAddress,
|
|
103148
|
+
createReplyError
|
|
103149
|
+
};
|
|
103150
|
+
return socks5Utils;
|
|
103151
|
+
}
|
|
103152
|
+
var socks5Client;
|
|
103153
|
+
var hasRequiredSocks5Client;
|
|
103154
|
+
function requireSocks5Client() {
|
|
103155
|
+
if (hasRequiredSocks5Client) return socks5Client;
|
|
103156
|
+
hasRequiredSocks5Client = 1;
|
|
103157
|
+
const { EventEmitter: EventEmitter2 } = require$$0$2;
|
|
103158
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
103159
|
+
const { InvalidArgumentError, Socks5ProxyError } = requireErrors();
|
|
103160
|
+
const { debuglog } = require$$3;
|
|
103161
|
+
const { parseAddress } = requireSocks5Utils();
|
|
103162
|
+
const debug = debuglog("undici:socks5");
|
|
103163
|
+
const EMPTY_BUFFER = Buffer2.alloc(0);
|
|
103164
|
+
const SOCKS_VERSION = 5;
|
|
103165
|
+
const AUTH_METHODS = {
|
|
103166
|
+
NO_AUTH: 0,
|
|
103167
|
+
GSSAPI: 1,
|
|
103168
|
+
USERNAME_PASSWORD: 2,
|
|
103169
|
+
NO_ACCEPTABLE: 255
|
|
103170
|
+
};
|
|
103171
|
+
const COMMANDS = {
|
|
103172
|
+
CONNECT: 1,
|
|
103173
|
+
BIND: 2,
|
|
103174
|
+
UDP_ASSOCIATE: 3
|
|
103175
|
+
};
|
|
103176
|
+
const ADDRESS_TYPES = {
|
|
103177
|
+
IPV4: 1,
|
|
103178
|
+
DOMAIN: 3,
|
|
103179
|
+
IPV6: 4
|
|
103180
|
+
};
|
|
103181
|
+
const REPLY_CODES = {
|
|
103182
|
+
SUCCEEDED: 0,
|
|
103183
|
+
GENERAL_FAILURE: 1,
|
|
103184
|
+
CONNECTION_NOT_ALLOWED: 2,
|
|
103185
|
+
NETWORK_UNREACHABLE: 3,
|
|
103186
|
+
HOST_UNREACHABLE: 4,
|
|
103187
|
+
CONNECTION_REFUSED: 5,
|
|
103188
|
+
TTL_EXPIRED: 6,
|
|
103189
|
+
COMMAND_NOT_SUPPORTED: 7,
|
|
103190
|
+
ADDRESS_TYPE_NOT_SUPPORTED: 8
|
|
103191
|
+
};
|
|
103192
|
+
const STATES = {
|
|
103193
|
+
INITIAL: "initial",
|
|
103194
|
+
HANDSHAKING: "handshaking",
|
|
103195
|
+
AUTHENTICATING: "authenticating",
|
|
103196
|
+
CONNECTING: "connecting",
|
|
103197
|
+
CONNECTED: "connected",
|
|
103198
|
+
ERROR: "error",
|
|
103199
|
+
CLOSED: "closed"
|
|
103200
|
+
};
|
|
103201
|
+
class Socks5Client extends EventEmitter2 {
|
|
103202
|
+
constructor(socket, options = {}) {
|
|
103203
|
+
super();
|
|
103204
|
+
if (!socket) {
|
|
103205
|
+
throw new InvalidArgumentError("socket is required");
|
|
103206
|
+
}
|
|
103207
|
+
this.socket = socket;
|
|
103208
|
+
this.options = options;
|
|
103209
|
+
this.state = STATES.INITIAL;
|
|
103210
|
+
this.buffer = EMPTY_BUFFER;
|
|
103211
|
+
this.onSocketData = this.onData.bind(this);
|
|
103212
|
+
this.onSocketError = this.onError.bind(this);
|
|
103213
|
+
this.onSocketClose = this.onClose.bind(this);
|
|
103214
|
+
this.authMethods = [];
|
|
103215
|
+
if (options.username && options.password) {
|
|
103216
|
+
this.authMethods.push(AUTH_METHODS.USERNAME_PASSWORD);
|
|
103217
|
+
}
|
|
103218
|
+
this.authMethods.push(AUTH_METHODS.NO_AUTH);
|
|
103219
|
+
this.socket.on("data", this.onSocketData);
|
|
103220
|
+
this.socket.on("error", this.onSocketError);
|
|
103221
|
+
this.socket.on("close", this.onSocketClose);
|
|
103222
|
+
}
|
|
103223
|
+
/**
|
|
103224
|
+
* Handle incoming data from the socket
|
|
103225
|
+
*/
|
|
103226
|
+
onData(data) {
|
|
103227
|
+
debug("received data", data.length, "bytes in state", this.state);
|
|
103228
|
+
this.buffer = Buffer2.concat([this.buffer, data]);
|
|
103229
|
+
try {
|
|
103230
|
+
switch (this.state) {
|
|
103231
|
+
case STATES.HANDSHAKING:
|
|
103232
|
+
this.handleHandshakeResponse();
|
|
103233
|
+
break;
|
|
103234
|
+
case STATES.AUTHENTICATING:
|
|
103235
|
+
this.handleAuthResponse();
|
|
103236
|
+
break;
|
|
103237
|
+
case STATES.CONNECTING:
|
|
103238
|
+
this.handleConnectResponse();
|
|
103239
|
+
break;
|
|
103240
|
+
}
|
|
103241
|
+
} catch (err) {
|
|
103242
|
+
this.onError(err);
|
|
103243
|
+
}
|
|
103244
|
+
}
|
|
103245
|
+
/**
|
|
103246
|
+
* Handle socket errors
|
|
103247
|
+
*/
|
|
103248
|
+
onError(err) {
|
|
103249
|
+
debug("socket error", err);
|
|
103250
|
+
this.state = STATES.ERROR;
|
|
103251
|
+
this.emit("error", err);
|
|
103252
|
+
this.destroy();
|
|
103253
|
+
}
|
|
103254
|
+
/**
|
|
103255
|
+
* Handle socket close
|
|
103256
|
+
*/
|
|
103257
|
+
onClose() {
|
|
103258
|
+
debug("socket closed");
|
|
103259
|
+
this.state = STATES.CLOSED;
|
|
103260
|
+
this.emit("close");
|
|
103261
|
+
}
|
|
103262
|
+
/**
|
|
103263
|
+
* Destroy the client and underlying socket
|
|
103264
|
+
*/
|
|
103265
|
+
destroy() {
|
|
103266
|
+
if (this.socket && !this.socket.destroyed) {
|
|
103267
|
+
this.socket.destroy();
|
|
103268
|
+
}
|
|
103269
|
+
}
|
|
103270
|
+
/**
|
|
103271
|
+
* Start the SOCKS5 handshake
|
|
103272
|
+
*/
|
|
103273
|
+
handshake() {
|
|
103274
|
+
if (this.state !== STATES.INITIAL) {
|
|
103275
|
+
throw new InvalidArgumentError("Handshake already started");
|
|
103276
|
+
}
|
|
103277
|
+
debug("starting handshake with", this.authMethods.length, "auth methods");
|
|
103278
|
+
this.state = STATES.HANDSHAKING;
|
|
103279
|
+
const request2 = Buffer2.alloc(2 + this.authMethods.length);
|
|
103280
|
+
request2[0] = SOCKS_VERSION;
|
|
103281
|
+
request2[1] = this.authMethods.length;
|
|
103282
|
+
this.authMethods.forEach((method, i) => {
|
|
103283
|
+
request2[2 + i] = method;
|
|
103284
|
+
});
|
|
103285
|
+
this.socket.write(request2);
|
|
103286
|
+
}
|
|
103287
|
+
/**
|
|
103288
|
+
* Handle handshake response from server
|
|
103289
|
+
*/
|
|
103290
|
+
handleHandshakeResponse() {
|
|
103291
|
+
if (this.buffer.length < 2) {
|
|
103292
|
+
return;
|
|
103293
|
+
}
|
|
103294
|
+
const version2 = this.buffer[0];
|
|
103295
|
+
const method = this.buffer[1];
|
|
103296
|
+
if (version2 !== SOCKS_VERSION) {
|
|
103297
|
+
throw new Socks5ProxyError(`Invalid SOCKS version: ${version2}`, "UND_ERR_SOCKS5_VERSION");
|
|
103298
|
+
}
|
|
103299
|
+
if (method === AUTH_METHODS.NO_ACCEPTABLE) {
|
|
103300
|
+
throw new Socks5ProxyError("No acceptable authentication method", "UND_ERR_SOCKS5_AUTH_REJECTED");
|
|
103301
|
+
}
|
|
103302
|
+
this.buffer = this.buffer.subarray(2);
|
|
103303
|
+
debug("server selected auth method", method);
|
|
103304
|
+
if (method === AUTH_METHODS.NO_AUTH) {
|
|
103305
|
+
this.emit("authenticated");
|
|
103306
|
+
} else if (method === AUTH_METHODS.USERNAME_PASSWORD) {
|
|
103307
|
+
this.state = STATES.AUTHENTICATING;
|
|
103308
|
+
this.sendAuthRequest();
|
|
103309
|
+
} else {
|
|
103310
|
+
throw new Socks5ProxyError(`Unsupported authentication method: ${method}`, "UND_ERR_SOCKS5_AUTH_METHOD");
|
|
103311
|
+
}
|
|
103312
|
+
}
|
|
103313
|
+
/**
|
|
103314
|
+
* Send username/password authentication request
|
|
103315
|
+
*/
|
|
103316
|
+
sendAuthRequest() {
|
|
103317
|
+
const { username, password } = this.options;
|
|
103318
|
+
if (!username || !password) {
|
|
103319
|
+
throw new InvalidArgumentError("Username and password required for authentication");
|
|
103320
|
+
}
|
|
103321
|
+
debug("sending username/password auth");
|
|
103322
|
+
const usernameBuffer = Buffer2.from(username);
|
|
103323
|
+
const passwordBuffer = Buffer2.from(password);
|
|
103324
|
+
if (usernameBuffer.length > 255 || passwordBuffer.length > 255) {
|
|
103325
|
+
throw new InvalidArgumentError("Username or password too long");
|
|
103326
|
+
}
|
|
103327
|
+
const request2 = Buffer2.alloc(3 + usernameBuffer.length + passwordBuffer.length);
|
|
103328
|
+
request2[0] = 1;
|
|
103329
|
+
request2[1] = usernameBuffer.length;
|
|
103330
|
+
usernameBuffer.copy(request2, 2);
|
|
103331
|
+
request2[2 + usernameBuffer.length] = passwordBuffer.length;
|
|
103332
|
+
passwordBuffer.copy(request2, 3 + usernameBuffer.length);
|
|
103333
|
+
this.socket.write(request2);
|
|
103334
|
+
}
|
|
103335
|
+
/**
|
|
103336
|
+
* Handle authentication response
|
|
103337
|
+
*/
|
|
103338
|
+
handleAuthResponse() {
|
|
103339
|
+
if (this.buffer.length < 2) {
|
|
103340
|
+
return;
|
|
103341
|
+
}
|
|
103342
|
+
const version2 = this.buffer[0];
|
|
103343
|
+
const status = this.buffer[1];
|
|
103344
|
+
if (version2 !== 1) {
|
|
103345
|
+
throw new Socks5ProxyError(`Invalid auth sub-negotiation version: ${version2}`, "UND_ERR_SOCKS5_AUTH_VERSION");
|
|
103346
|
+
}
|
|
103347
|
+
if (status !== 0) {
|
|
103348
|
+
throw new Socks5ProxyError("Authentication failed", "UND_ERR_SOCKS5_AUTH_FAILED");
|
|
103349
|
+
}
|
|
103350
|
+
this.buffer = this.buffer.subarray(2);
|
|
103351
|
+
debug("authentication successful");
|
|
103352
|
+
this.emit("authenticated");
|
|
103353
|
+
}
|
|
103354
|
+
/**
|
|
103355
|
+
* Send CONNECT command
|
|
103356
|
+
* @param {string} address - Target address (IP or domain)
|
|
103357
|
+
* @param {number} port - Target port
|
|
103358
|
+
*/
|
|
103359
|
+
connect(address, port) {
|
|
103360
|
+
if (this.state === STATES.CONNECTED) {
|
|
103361
|
+
throw new InvalidArgumentError("Already connected");
|
|
103362
|
+
}
|
|
103363
|
+
debug("connecting to", address, port);
|
|
103364
|
+
this.state = STATES.CONNECTING;
|
|
103365
|
+
const request2 = this.buildConnectRequest(COMMANDS.CONNECT, address, port);
|
|
103366
|
+
this.socket.write(request2);
|
|
103367
|
+
}
|
|
103368
|
+
/**
|
|
103369
|
+
* Build a SOCKS5 request
|
|
103370
|
+
*/
|
|
103371
|
+
buildConnectRequest(command, address, port) {
|
|
103372
|
+
const { type: addressType, buffer: addressBuffer } = parseAddress(address);
|
|
103373
|
+
const request2 = Buffer2.alloc(4 + addressBuffer.length + 2);
|
|
103374
|
+
request2[0] = SOCKS_VERSION;
|
|
103375
|
+
request2[1] = command;
|
|
103376
|
+
request2[2] = 0;
|
|
103377
|
+
request2[3] = addressType;
|
|
103378
|
+
addressBuffer.copy(request2, 4);
|
|
103379
|
+
request2.writeUInt16BE(port, 4 + addressBuffer.length);
|
|
103380
|
+
return request2;
|
|
103381
|
+
}
|
|
103382
|
+
/**
|
|
103383
|
+
* Handle CONNECT response
|
|
103384
|
+
*/
|
|
103385
|
+
handleConnectResponse() {
|
|
103386
|
+
if (this.buffer.length < 4) {
|
|
103387
|
+
return;
|
|
103388
|
+
}
|
|
103389
|
+
const version2 = this.buffer[0];
|
|
103390
|
+
const reply = this.buffer[1];
|
|
103391
|
+
const addressType = this.buffer[3];
|
|
103392
|
+
if (version2 !== SOCKS_VERSION) {
|
|
103393
|
+
throw new Socks5ProxyError(`Invalid SOCKS version in reply: ${version2}`, "UND_ERR_SOCKS5_REPLY_VERSION");
|
|
103394
|
+
}
|
|
103395
|
+
let responseLength = 4;
|
|
103396
|
+
if (addressType === ADDRESS_TYPES.IPV4) {
|
|
103397
|
+
responseLength += 4 + 2;
|
|
103398
|
+
} else if (addressType === ADDRESS_TYPES.DOMAIN) {
|
|
103399
|
+
if (this.buffer.length < 5) {
|
|
103400
|
+
return;
|
|
103401
|
+
}
|
|
103402
|
+
responseLength += 1 + this.buffer[4] + 2;
|
|
103403
|
+
} else if (addressType === ADDRESS_TYPES.IPV6) {
|
|
103404
|
+
responseLength += 16 + 2;
|
|
103405
|
+
} else {
|
|
103406
|
+
throw new Socks5ProxyError(`Invalid address type in reply: ${addressType}`, "UND_ERR_SOCKS5_ADDR_TYPE");
|
|
103407
|
+
}
|
|
103408
|
+
if (this.buffer.length < responseLength) {
|
|
103409
|
+
return;
|
|
103410
|
+
}
|
|
103411
|
+
if (reply !== REPLY_CODES.SUCCEEDED) {
|
|
103412
|
+
const errorMessage = this.getReplyErrorMessage(reply);
|
|
103413
|
+
throw new Socks5ProxyError(`SOCKS5 connection failed: ${errorMessage}`, `UND_ERR_SOCKS5_REPLY_${reply}`);
|
|
103414
|
+
}
|
|
103415
|
+
let boundAddress;
|
|
103416
|
+
let offset2 = 4;
|
|
103417
|
+
if (addressType === ADDRESS_TYPES.IPV4) {
|
|
103418
|
+
boundAddress = Array.from(this.buffer.subarray(offset2, offset2 + 4)).join(".");
|
|
103419
|
+
offset2 += 4;
|
|
103420
|
+
} else if (addressType === ADDRESS_TYPES.DOMAIN) {
|
|
103421
|
+
const domainLength = this.buffer[offset2];
|
|
103422
|
+
offset2 += 1;
|
|
103423
|
+
boundAddress = this.buffer.subarray(offset2, offset2 + domainLength).toString();
|
|
103424
|
+
offset2 += domainLength;
|
|
103425
|
+
} else if (addressType === ADDRESS_TYPES.IPV6) {
|
|
103426
|
+
const parts = [];
|
|
103427
|
+
for (let i = 0; i < 8; i++) {
|
|
103428
|
+
const value = this.buffer.readUInt16BE(offset2 + i * 2);
|
|
103429
|
+
parts.push(value.toString(16));
|
|
103430
|
+
}
|
|
103431
|
+
boundAddress = parts.join(":");
|
|
103432
|
+
offset2 += 16;
|
|
103433
|
+
}
|
|
103434
|
+
const boundPort = this.buffer.readUInt16BE(offset2);
|
|
103435
|
+
this.buffer = EMPTY_BUFFER;
|
|
103436
|
+
this.state = STATES.CONNECTED;
|
|
103437
|
+
this.socket.removeListener("data", this.onSocketData);
|
|
103438
|
+
debug("connected, bound address:", boundAddress, "port:", boundPort);
|
|
103439
|
+
this.emit("connected", { address: boundAddress, port: boundPort });
|
|
103440
|
+
}
|
|
103441
|
+
/**
|
|
103442
|
+
* Get human-readable error message for reply code
|
|
103443
|
+
*/
|
|
103444
|
+
getReplyErrorMessage(reply) {
|
|
103445
|
+
switch (reply) {
|
|
103446
|
+
case REPLY_CODES.GENERAL_FAILURE:
|
|
103447
|
+
return "General SOCKS server failure";
|
|
103448
|
+
case REPLY_CODES.CONNECTION_NOT_ALLOWED:
|
|
103449
|
+
return "Connection not allowed by ruleset";
|
|
103450
|
+
case REPLY_CODES.NETWORK_UNREACHABLE:
|
|
103451
|
+
return "Network unreachable";
|
|
103452
|
+
case REPLY_CODES.HOST_UNREACHABLE:
|
|
103453
|
+
return "Host unreachable";
|
|
103454
|
+
case REPLY_CODES.CONNECTION_REFUSED:
|
|
103455
|
+
return "Connection refused";
|
|
103456
|
+
case REPLY_CODES.TTL_EXPIRED:
|
|
103457
|
+
return "TTL expired";
|
|
103458
|
+
case REPLY_CODES.COMMAND_NOT_SUPPORTED:
|
|
103459
|
+
return "Command not supported";
|
|
103460
|
+
case REPLY_CODES.ADDRESS_TYPE_NOT_SUPPORTED:
|
|
103461
|
+
return "Address type not supported";
|
|
103462
|
+
default:
|
|
103463
|
+
return `Unknown error code: ${reply}`;
|
|
103464
|
+
}
|
|
103465
|
+
}
|
|
103466
|
+
}
|
|
103467
|
+
socks5Client = {
|
|
103468
|
+
Socks5Client,
|
|
103469
|
+
AUTH_METHODS,
|
|
103470
|
+
COMMANDS,
|
|
103471
|
+
ADDRESS_TYPES,
|
|
103472
|
+
REPLY_CODES,
|
|
103473
|
+
STATES
|
|
103474
|
+
};
|
|
103475
|
+
return socks5Client;
|
|
103476
|
+
}
|
|
103477
|
+
var socks5ProxyAgent;
|
|
103478
|
+
var hasRequiredSocks5ProxyAgent;
|
|
103479
|
+
function requireSocks5ProxyAgent() {
|
|
103480
|
+
if (hasRequiredSocks5ProxyAgent) return socks5ProxyAgent;
|
|
103481
|
+
hasRequiredSocks5ProxyAgent = 1;
|
|
103482
|
+
const net2 = require$$0$5;
|
|
103483
|
+
const { URL: URL2 } = require$$1$2;
|
|
103484
|
+
let tls;
|
|
103485
|
+
const DispatcherBase = requireDispatcherBase();
|
|
103486
|
+
const { InvalidArgumentError } = requireErrors();
|
|
103487
|
+
const { Socks5Client } = requireSocks5Client();
|
|
103488
|
+
const { kDispatch, kClose, kDestroy } = requireSymbols();
|
|
103489
|
+
const Pool = requirePool();
|
|
103490
|
+
const buildConnector = requireConnect();
|
|
103491
|
+
const { debuglog } = require$$3;
|
|
103492
|
+
const debug = debuglog("undici:socks5-proxy");
|
|
103493
|
+
const kProxyUrl = Symbol("proxy url");
|
|
103494
|
+
const kProxyHeaders = Symbol("proxy headers");
|
|
103495
|
+
const kProxyAuth = Symbol("proxy auth");
|
|
103496
|
+
const kPool = Symbol("pool");
|
|
103497
|
+
const kConnector = Symbol("connector");
|
|
103498
|
+
let experimentalWarningEmitted = false;
|
|
103499
|
+
class Socks5ProxyAgent extends DispatcherBase {
|
|
103500
|
+
constructor(proxyUrl, options = {}) {
|
|
103501
|
+
var _a3;
|
|
103502
|
+
super();
|
|
103503
|
+
if (!experimentalWarningEmitted) {
|
|
103504
|
+
process.emitWarning(
|
|
103505
|
+
"SOCKS5 proxy support is experimental and subject to change",
|
|
103506
|
+
"ExperimentalWarning"
|
|
103507
|
+
);
|
|
103508
|
+
experimentalWarningEmitted = true;
|
|
103509
|
+
}
|
|
103510
|
+
if (!proxyUrl) {
|
|
103511
|
+
throw new InvalidArgumentError("Proxy URL is mandatory");
|
|
103512
|
+
}
|
|
103513
|
+
const url2 = typeof proxyUrl === "string" ? new URL2(proxyUrl) : proxyUrl;
|
|
103514
|
+
if (url2.protocol !== "socks5:" && url2.protocol !== "socks:") {
|
|
103515
|
+
throw new InvalidArgumentError("Proxy URL must use socks5:// or socks:// protocol");
|
|
103516
|
+
}
|
|
103517
|
+
this[kProxyUrl] = url2;
|
|
103518
|
+
this[kProxyHeaders] = options.headers || {};
|
|
103519
|
+
this[kProxyAuth] = {
|
|
103520
|
+
username: options.username || (url2.username ? decodeURIComponent(url2.username) : null),
|
|
103521
|
+
password: options.password || (url2.password ? decodeURIComponent(url2.password) : null)
|
|
103522
|
+
};
|
|
103523
|
+
this[kConnector] = options.connect || buildConnector({
|
|
103524
|
+
...options.proxyTls,
|
|
103525
|
+
servername: ((_a3 = options.proxyTls) == null ? void 0 : _a3.servername) || url2.hostname
|
|
103526
|
+
});
|
|
103527
|
+
this[kPool] = null;
|
|
103528
|
+
}
|
|
103529
|
+
/**
|
|
103530
|
+
* Create a SOCKS5 connection to the proxy
|
|
103531
|
+
*/
|
|
103532
|
+
async createSocks5Connection(targetHost, targetPort) {
|
|
103533
|
+
const proxyHost = this[kProxyUrl].hostname;
|
|
103534
|
+
const proxyPort = parseInt(this[kProxyUrl].port) || 1080;
|
|
103535
|
+
debug("creating SOCKS5 connection to", proxyHost, proxyPort);
|
|
103536
|
+
const socket = await new Promise((resolve2, reject) => {
|
|
103537
|
+
const onConnect = () => {
|
|
103538
|
+
socket2.removeListener("error", onError);
|
|
103539
|
+
resolve2(socket2);
|
|
103540
|
+
};
|
|
103541
|
+
const onError = (err) => {
|
|
103542
|
+
socket2.removeListener("connect", onConnect);
|
|
103543
|
+
reject(err);
|
|
103544
|
+
};
|
|
103545
|
+
const socket2 = net2.connect({
|
|
103546
|
+
host: proxyHost,
|
|
103547
|
+
port: proxyPort
|
|
103548
|
+
});
|
|
103549
|
+
socket2.once("connect", onConnect);
|
|
103550
|
+
socket2.once("error", onError);
|
|
103551
|
+
});
|
|
103552
|
+
const socks5Client2 = new Socks5Client(socket, this[kProxyAuth]);
|
|
103553
|
+
socks5Client2.on("error", (err) => {
|
|
103554
|
+
debug("SOCKS5 error:", err);
|
|
103555
|
+
socket.destroy();
|
|
103556
|
+
});
|
|
103557
|
+
await socks5Client2.handshake();
|
|
103558
|
+
await new Promise((resolve2, reject) => {
|
|
103559
|
+
const timeout2 = setTimeout(() => {
|
|
103560
|
+
reject(new Error("SOCKS5 authentication timeout"));
|
|
103561
|
+
}, 5e3);
|
|
103562
|
+
const onAuthenticated = () => {
|
|
103563
|
+
clearTimeout(timeout2);
|
|
103564
|
+
socks5Client2.removeListener("error", onError);
|
|
103565
|
+
resolve2();
|
|
103566
|
+
};
|
|
103567
|
+
const onError = (err) => {
|
|
103568
|
+
clearTimeout(timeout2);
|
|
103569
|
+
socks5Client2.removeListener("authenticated", onAuthenticated);
|
|
103570
|
+
reject(err);
|
|
103571
|
+
};
|
|
103572
|
+
if (socks5Client2.state === "authenticated") {
|
|
103573
|
+
clearTimeout(timeout2);
|
|
103574
|
+
resolve2();
|
|
103575
|
+
} else {
|
|
103576
|
+
socks5Client2.once("authenticated", onAuthenticated);
|
|
103577
|
+
socks5Client2.once("error", onError);
|
|
103578
|
+
}
|
|
103579
|
+
});
|
|
103580
|
+
await socks5Client2.connect(targetHost, targetPort);
|
|
103581
|
+
await new Promise((resolve2, reject) => {
|
|
103582
|
+
const timeout2 = setTimeout(() => {
|
|
103583
|
+
reject(new Error("SOCKS5 connection timeout"));
|
|
103584
|
+
}, 5e3);
|
|
103585
|
+
const onConnected = (info) => {
|
|
103586
|
+
debug("SOCKS5 tunnel established to", targetHost, targetPort, "via", info);
|
|
103587
|
+
clearTimeout(timeout2);
|
|
103588
|
+
socks5Client2.removeListener("error", onError);
|
|
103589
|
+
resolve2();
|
|
103590
|
+
};
|
|
103591
|
+
const onError = (err) => {
|
|
103592
|
+
clearTimeout(timeout2);
|
|
103593
|
+
socks5Client2.removeListener("connected", onConnected);
|
|
103594
|
+
reject(err);
|
|
103595
|
+
};
|
|
103596
|
+
socks5Client2.once("connected", onConnected);
|
|
103597
|
+
socks5Client2.once("error", onError);
|
|
103598
|
+
});
|
|
103599
|
+
return socket;
|
|
103600
|
+
}
|
|
103601
|
+
/**
|
|
103602
|
+
* Dispatch a request through the SOCKS5 proxy
|
|
103603
|
+
*/
|
|
103604
|
+
async [kDispatch](opts, handler) {
|
|
103605
|
+
const { origin } = opts;
|
|
103606
|
+
debug("dispatching request to", origin, "via SOCKS5");
|
|
103607
|
+
try {
|
|
103608
|
+
if (!this[kPool] || this[kPool].destroyed || this[kPool].closed) {
|
|
103609
|
+
this[kPool] = new Pool(origin, {
|
|
103610
|
+
pipelining: opts.pipelining,
|
|
103611
|
+
connections: opts.connections,
|
|
103612
|
+
connect: async (connectOpts, callback) => {
|
|
103613
|
+
try {
|
|
103614
|
+
const url2 = new URL2(origin);
|
|
103615
|
+
const targetHost = url2.hostname;
|
|
103616
|
+
const targetPort = parseInt(url2.port) || (url2.protocol === "https:" ? 443 : 80);
|
|
103617
|
+
debug("establishing SOCKS5 connection to", targetHost, targetPort);
|
|
103618
|
+
const socket = await this.createSocks5Connection(targetHost, targetPort);
|
|
103619
|
+
let finalSocket = socket;
|
|
103620
|
+
if (url2.protocol === "https:") {
|
|
103621
|
+
if (!tls) {
|
|
103622
|
+
tls = require("node:tls");
|
|
103623
|
+
}
|
|
103624
|
+
debug("upgrading to TLS");
|
|
103625
|
+
finalSocket = tls.connect({
|
|
103626
|
+
socket,
|
|
103627
|
+
servername: targetHost,
|
|
103628
|
+
...connectOpts.tls || {}
|
|
103629
|
+
});
|
|
103630
|
+
await new Promise((resolve2, reject) => {
|
|
103631
|
+
finalSocket.once("secureConnect", resolve2);
|
|
103632
|
+
finalSocket.once("error", reject);
|
|
103633
|
+
});
|
|
103634
|
+
}
|
|
103635
|
+
callback(null, finalSocket);
|
|
103636
|
+
} catch (err) {
|
|
103637
|
+
debug("SOCKS5 connection error:", err);
|
|
103638
|
+
callback(err);
|
|
103639
|
+
}
|
|
103640
|
+
}
|
|
103641
|
+
});
|
|
103642
|
+
}
|
|
103643
|
+
return this[kPool][kDispatch](opts, handler);
|
|
103644
|
+
} catch (err) {
|
|
103645
|
+
debug("dispatch error:", err);
|
|
103646
|
+
if (typeof handler.onError === "function") {
|
|
103647
|
+
handler.onError(err);
|
|
103648
|
+
} else {
|
|
103649
|
+
throw err;
|
|
103650
|
+
}
|
|
103651
|
+
}
|
|
103652
|
+
}
|
|
103653
|
+
async [kClose]() {
|
|
103654
|
+
if (this[kPool]) {
|
|
103655
|
+
await this[kPool].close();
|
|
103656
|
+
}
|
|
103657
|
+
}
|
|
103658
|
+
async [kDestroy](err) {
|
|
103659
|
+
if (this[kPool]) {
|
|
103660
|
+
await this[kPool].destroy(err);
|
|
103661
|
+
}
|
|
103662
|
+
}
|
|
103663
|
+
}
|
|
103664
|
+
socks5ProxyAgent = Socks5ProxyAgent;
|
|
103665
|
+
return socks5ProxyAgent;
|
|
103666
|
+
}
|
|
102805
103667
|
var proxyAgent;
|
|
102806
103668
|
var hasRequiredProxyAgent;
|
|
102807
103669
|
function requireProxyAgent() {
|
|
@@ -102816,6 +103678,7 @@ function requireProxyAgent() {
|
|
|
102816
103678
|
const buildConnector = requireConnect();
|
|
102817
103679
|
const Client = requireClient();
|
|
102818
103680
|
const { channels } = requireDiagnostics();
|
|
103681
|
+
const Socks5ProxyAgent = requireSocks5ProxyAgent();
|
|
102819
103682
|
const kAgent = Symbol("proxy agent");
|
|
102820
103683
|
const kClient = Symbol("proxy client");
|
|
102821
103684
|
const kProxyHeaders = Symbol("proxy headers");
|
|
@@ -102916,6 +103779,16 @@ function requireProxyAgent() {
|
|
|
102916
103779
|
const agentFactory = opts.factory || defaultAgentFactory;
|
|
102917
103780
|
const factory = (origin2, options) => {
|
|
102918
103781
|
const { protocol: protocol2 } = new URL(origin2);
|
|
103782
|
+
if (this[kProxy].protocol === "socks5:" || this[kProxy].protocol === "socks:") {
|
|
103783
|
+
return new Socks5ProxyAgent(this[kProxy].uri, {
|
|
103784
|
+
headers: this[kProxyHeaders],
|
|
103785
|
+
connect: connect2,
|
|
103786
|
+
factory: agentFactory,
|
|
103787
|
+
username: opts.username || username,
|
|
103788
|
+
password: opts.password || password,
|
|
103789
|
+
proxyTls: opts.proxyTls
|
|
103790
|
+
});
|
|
103791
|
+
}
|
|
102919
103792
|
if (!this[kTunnelProxy] && protocol2 === "http:" && this[kProxy].protocol === "http:") {
|
|
102920
103793
|
return new Http1ProxyWrapper(this[kProxy].uri, {
|
|
102921
103794
|
headers: this[kProxyHeaders],
|
|
@@ -102925,12 +103798,20 @@ function requireProxyAgent() {
|
|
|
102925
103798
|
}
|
|
102926
103799
|
return agentFactory(origin2, options);
|
|
102927
103800
|
};
|
|
102928
|
-
|
|
103801
|
+
if (protocol === "socks5:" || protocol === "socks:") {
|
|
103802
|
+
this[kClient] = null;
|
|
103803
|
+
} else {
|
|
103804
|
+
this[kClient] = clientFactory(url2, { connect: connect2 });
|
|
103805
|
+
}
|
|
102929
103806
|
this[kAgent] = new Agent({
|
|
102930
103807
|
...opts,
|
|
102931
103808
|
factory,
|
|
102932
103809
|
connect: async (opts2, callback) => {
|
|
102933
103810
|
var _a3;
|
|
103811
|
+
if (!this[kClient]) {
|
|
103812
|
+
callback(new InvalidArgumentError("Cannot establish tunnel connection without a proxy client"));
|
|
103813
|
+
return;
|
|
103814
|
+
}
|
|
102934
103815
|
let requestedPath = opts2.host;
|
|
102935
103816
|
if (!opts2.port) {
|
|
102936
103817
|
requestedPath += `:${defaultProtocolPort(opts2.protocol)}`;
|
|
@@ -102997,16 +103878,18 @@ function requireProxyAgent() {
|
|
|
102997
103878
|
);
|
|
102998
103879
|
}
|
|
102999
103880
|
[kClose]() {
|
|
103000
|
-
|
|
103001
|
-
|
|
103002
|
-
this[kClient].close()
|
|
103003
|
-
|
|
103881
|
+
const promises2 = [this[kAgent].close()];
|
|
103882
|
+
if (this[kClient]) {
|
|
103883
|
+
promises2.push(this[kClient].close());
|
|
103884
|
+
}
|
|
103885
|
+
return Promise.all(promises2);
|
|
103004
103886
|
}
|
|
103005
103887
|
[kDestroy]() {
|
|
103006
|
-
|
|
103007
|
-
|
|
103008
|
-
this[kClient].destroy()
|
|
103009
|
-
|
|
103888
|
+
const promises2 = [this[kAgent].destroy()];
|
|
103889
|
+
if (this[kClient]) {
|
|
103890
|
+
promises2.push(this[kClient].destroy());
|
|
103891
|
+
}
|
|
103892
|
+
return Promise.all(promises2);
|
|
103010
103893
|
}
|
|
103011
103894
|
}
|
|
103012
103895
|
_ProxyAgent_instances = new WeakSet();
|
|
@@ -103176,7 +104059,7 @@ var hasRequiredRetryHandler;
|
|
|
103176
104059
|
function requireRetryHandler() {
|
|
103177
104060
|
if (hasRequiredRetryHandler) return retryHandler;
|
|
103178
104061
|
hasRequiredRetryHandler = 1;
|
|
103179
|
-
const assert2 = require$$0$
|
|
104062
|
+
const assert2 = require$$0$3;
|
|
103180
104063
|
const { kRetryHandlerDefaultRetry } = requireSymbols();
|
|
103181
104064
|
const { RequestRetryError } = requireErrors();
|
|
103182
104065
|
const WrapHandler = requireWrapHandler();
|
|
@@ -103547,7 +104430,7 @@ function requireH2cClient() {
|
|
|
103547
104430
|
"h2c-client: Only h2c protocol is supported"
|
|
103548
104431
|
);
|
|
103549
104432
|
}
|
|
103550
|
-
const {
|
|
104433
|
+
const { maxConcurrentStreams, pipelining, ...opts } = clientOpts ?? {};
|
|
103551
104434
|
let defaultMaxConcurrentStreams = 100;
|
|
103552
104435
|
let defaultPipelining = 100;
|
|
103553
104436
|
if (maxConcurrentStreams != null && Number.isInteger(maxConcurrentStreams) && maxConcurrentStreams > 0) {
|
|
@@ -103580,8 +104463,8 @@ var hasRequiredReadable;
|
|
|
103580
104463
|
function requireReadable() {
|
|
103581
104464
|
if (hasRequiredReadable) return readable;
|
|
103582
104465
|
hasRequiredReadable = 1;
|
|
103583
|
-
const assert2 = require$$0$
|
|
103584
|
-
const { Readable } = require$$0$
|
|
104466
|
+
const assert2 = require$$0$3;
|
|
104467
|
+
const { Readable } = require$$0$4;
|
|
103585
104468
|
const { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = requireErrors();
|
|
103586
104469
|
const util2 = requireUtil$5();
|
|
103587
104470
|
const { ReadableStreamFrom } = requireUtil$5();
|
|
@@ -103982,8 +104865,8 @@ var hasRequiredApiRequest;
|
|
|
103982
104865
|
function requireApiRequest() {
|
|
103983
104866
|
if (hasRequiredApiRequest) return apiRequest.exports;
|
|
103984
104867
|
hasRequiredApiRequest = 1;
|
|
103985
|
-
const assert2 = require$$0$
|
|
103986
|
-
const { AsyncResource } = require$$1$
|
|
104868
|
+
const assert2 = require$$0$3;
|
|
104869
|
+
const { AsyncResource } = require$$1$3;
|
|
103987
104870
|
const { Readable } = requireReadable();
|
|
103988
104871
|
const { InvalidArgumentError, RequestAbortedError } = requireErrors();
|
|
103989
104872
|
const util2 = requireUtil$5();
|
|
@@ -103999,7 +104882,7 @@ function requireApiRequest() {
|
|
|
103999
104882
|
if (typeof callback !== "function") {
|
|
104000
104883
|
throw new InvalidArgumentError("invalid callback");
|
|
104001
104884
|
}
|
|
104002
|
-
if (highWaterMark && (
|
|
104885
|
+
if (highWaterMark != null && (!Number.isFinite(highWaterMark) || highWaterMark < 0)) {
|
|
104003
104886
|
throw new InvalidArgumentError("invalid highWaterMark");
|
|
104004
104887
|
}
|
|
104005
104888
|
if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
|
|
@@ -104213,9 +105096,9 @@ var hasRequiredApiStream;
|
|
|
104213
105096
|
function requireApiStream() {
|
|
104214
105097
|
if (hasRequiredApiStream) return apiStream;
|
|
104215
105098
|
hasRequiredApiStream = 1;
|
|
104216
|
-
const assert2 = require$$0$
|
|
104217
|
-
const { finished } = require$$0$
|
|
104218
|
-
const { AsyncResource } = require$$1$
|
|
105099
|
+
const assert2 = require$$0$3;
|
|
105100
|
+
const { finished } = require$$0$4;
|
|
105101
|
+
const { AsyncResource } = require$$1$3;
|
|
104219
105102
|
const { InvalidArgumentError, InvalidReturnValueError } = requireErrors();
|
|
104220
105103
|
const util2 = requireUtil$5();
|
|
104221
105104
|
const { addSignal, removeSignal } = requireAbortSignal();
|
|
@@ -104379,9 +105262,9 @@ function requireApiPipeline() {
|
|
|
104379
105262
|
Readable,
|
|
104380
105263
|
Duplex,
|
|
104381
105264
|
PassThrough: PassThrough2
|
|
104382
|
-
} = require$$0$
|
|
104383
|
-
const assert2 = require$$0$
|
|
104384
|
-
const { AsyncResource } = require$$1$
|
|
105265
|
+
} = require$$0$4;
|
|
105266
|
+
const assert2 = require$$0$3;
|
|
105267
|
+
const { AsyncResource } = require$$1$3;
|
|
104385
105268
|
const {
|
|
104386
105269
|
InvalidArgumentError,
|
|
104387
105270
|
InvalidReturnValueError,
|
|
@@ -104577,8 +105460,8 @@ function requireApiUpgrade() {
|
|
|
104577
105460
|
if (hasRequiredApiUpgrade) return apiUpgrade;
|
|
104578
105461
|
hasRequiredApiUpgrade = 1;
|
|
104579
105462
|
const { InvalidArgumentError, SocketError } = requireErrors();
|
|
104580
|
-
const { AsyncResource } = require$$1$
|
|
104581
|
-
const assert2 = require$$0$
|
|
105463
|
+
const { AsyncResource } = require$$1$3;
|
|
105464
|
+
const assert2 = require$$0$3;
|
|
104582
105465
|
const util2 = requireUtil$5();
|
|
104583
105466
|
const { kHTTP2Stream } = requireSymbols();
|
|
104584
105467
|
const { addSignal, removeSignal } = requireAbortSignal();
|
|
@@ -104670,8 +105553,8 @@ var hasRequiredApiConnect;
|
|
|
104670
105553
|
function requireApiConnect() {
|
|
104671
105554
|
if (hasRequiredApiConnect) return apiConnect;
|
|
104672
105555
|
hasRequiredApiConnect = 1;
|
|
104673
|
-
const assert2 = require$$0$
|
|
104674
|
-
const { AsyncResource } = require$$1$
|
|
105556
|
+
const assert2 = require$$0$3;
|
|
105557
|
+
const { AsyncResource } = require$$1$3;
|
|
104675
105558
|
const { InvalidArgumentError, SocketError } = requireErrors();
|
|
104676
105559
|
const util2 = requireUtil$5();
|
|
104677
105560
|
const { addSignal, removeSignal } = requireAbortSignal();
|
|
@@ -104825,7 +105708,8 @@ function requireMockSymbols() {
|
|
|
104825
105708
|
kMockAgentAddCallHistoryLog: Symbol("mock agent add call history log"),
|
|
104826
105709
|
kMockAgentIsCallHistoryEnabled: Symbol("mock agent is call history enabled"),
|
|
104827
105710
|
kMockAgentAcceptsNonStandardSearchParameters: Symbol("mock agent accepts non standard search parameters"),
|
|
104828
|
-
kMockCallHistoryAddLog: Symbol("mock call history add log")
|
|
105711
|
+
kMockCallHistoryAddLog: Symbol("mock call history add log"),
|
|
105712
|
+
kTotalDispatchCount: Symbol("total dispatch count")
|
|
104829
105713
|
};
|
|
104830
105714
|
return mockSymbols;
|
|
104831
105715
|
}
|
|
@@ -104840,7 +105724,8 @@ function requireMockUtils() {
|
|
|
104840
105724
|
kMockAgent,
|
|
104841
105725
|
kOriginalDispatch,
|
|
104842
105726
|
kOrigin,
|
|
104843
|
-
kGetNetConnect
|
|
105727
|
+
kGetNetConnect,
|
|
105728
|
+
kTotalDispatchCount
|
|
104844
105729
|
} = requireMockSymbols();
|
|
104845
105730
|
const { serializePathWithQuery } = requireUtil$5();
|
|
104846
105731
|
const { STATUS_CODES } = require$$2$1;
|
|
@@ -105000,6 +105885,7 @@ function requireMockUtils() {
|
|
|
105000
105885
|
const replyData = typeof data === "function" ? { callback: data } : { ...data };
|
|
105001
105886
|
const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } };
|
|
105002
105887
|
mockDispatches.push(newMockDispatch);
|
|
105888
|
+
mockDispatches[kTotalDispatchCount] = (mockDispatches[kTotalDispatchCount] || 0) + 1;
|
|
105003
105889
|
return newMockDispatch;
|
|
105004
105890
|
}
|
|
105005
105891
|
function deleteMockDispatch(mockDispatches, key) {
|
|
@@ -105134,13 +106020,16 @@ function requireMockUtils() {
|
|
|
105134
106020
|
} catch (error2) {
|
|
105135
106021
|
if (error2.code === "UND_MOCK_ERR_MOCK_NOT_MATCHED") {
|
|
105136
106022
|
const netConnect = agent2[kGetNetConnect]();
|
|
106023
|
+
const totalInterceptsCount = this[kDispatches][kTotalDispatchCount] || this[kDispatches].length;
|
|
106024
|
+
const pendingInterceptsCount = this[kDispatches].filter(({ consumed }) => !consumed).length;
|
|
106025
|
+
const interceptsMessage = `, ${pendingInterceptsCount} interceptor(s) remaining out of ${totalInterceptsCount} defined`;
|
|
105137
106026
|
if (netConnect === false) {
|
|
105138
|
-
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`);
|
|
106027
|
+
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)${interceptsMessage}`);
|
|
105139
106028
|
}
|
|
105140
106029
|
if (checkNetConnect(netConnect, origin)) {
|
|
105141
106030
|
originalDispatch.call(this, opts, handler);
|
|
105142
106031
|
} else {
|
|
105143
|
-
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`);
|
|
106032
|
+
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)${interceptsMessage}`);
|
|
105144
106033
|
}
|
|
105145
106034
|
} else {
|
|
105146
106035
|
throw error2;
|
|
@@ -105435,13 +106324,13 @@ function requireMockCallHistory() {
|
|
|
105435
106324
|
hasRequiredMockCallHistory = 1;
|
|
105436
106325
|
const { kMockCallHistoryAddLog } = requireMockSymbols();
|
|
105437
106326
|
const { InvalidArgumentError } = requireErrors();
|
|
105438
|
-
function handleFilterCallsWithOptions(criteria, options, handler, store) {
|
|
106327
|
+
function handleFilterCallsWithOptions(criteria, options, handler, store, allLogs) {
|
|
105439
106328
|
switch (options.operator) {
|
|
105440
106329
|
case "OR":
|
|
105441
|
-
store.push(...handler(criteria));
|
|
106330
|
+
store.push(...handler(criteria, allLogs));
|
|
105442
106331
|
return store;
|
|
105443
106332
|
case "AND":
|
|
105444
|
-
return handler
|
|
106333
|
+
return handler(criteria, store);
|
|
105445
106334
|
default:
|
|
105446
106335
|
throw new InvalidArgumentError("options.operator must to be a case insensitive string equal to 'OR' or 'AND'");
|
|
105447
106336
|
}
|
|
@@ -105460,14 +106349,14 @@ function requireMockCallHistory() {
|
|
|
105460
106349
|
return finalOptions;
|
|
105461
106350
|
}
|
|
105462
106351
|
function makeFilterCalls(parameterName) {
|
|
105463
|
-
return (parameterValue) => {
|
|
106352
|
+
return (parameterValue, logs) => {
|
|
105464
106353
|
if (typeof parameterValue === "string" || parameterValue == null) {
|
|
105465
|
-
return
|
|
106354
|
+
return logs.filter((log) => {
|
|
105466
106355
|
return log[parameterName] === parameterValue;
|
|
105467
106356
|
});
|
|
105468
106357
|
}
|
|
105469
106358
|
if (parameterValue instanceof RegExp) {
|
|
105470
|
-
return
|
|
106359
|
+
return logs.filter((log) => {
|
|
105471
106360
|
return parameterValue.test(log[parameterName]);
|
|
105472
106361
|
});
|
|
105473
106362
|
}
|
|
@@ -105582,30 +106471,30 @@ function requireMockCallHistory() {
|
|
|
105582
106471
|
return this.logs;
|
|
105583
106472
|
}
|
|
105584
106473
|
const finalOptions = { operator: "OR", ...buildAndValidateFilterCallsOptions(options) };
|
|
105585
|
-
let maybeDuplicatedLogsFiltered = [];
|
|
106474
|
+
let maybeDuplicatedLogsFiltered = finalOptions.operator === "AND" ? this.logs : [];
|
|
105586
106475
|
if ("protocol" in criteria) {
|
|
105587
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.protocol, finalOptions, this.filterCallsByProtocol, maybeDuplicatedLogsFiltered);
|
|
106476
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.protocol, finalOptions, this.filterCallsByProtocol, maybeDuplicatedLogsFiltered, this.logs);
|
|
105588
106477
|
}
|
|
105589
106478
|
if ("host" in criteria) {
|
|
105590
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.host, finalOptions, this.filterCallsByHost, maybeDuplicatedLogsFiltered);
|
|
106479
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.host, finalOptions, this.filterCallsByHost, maybeDuplicatedLogsFiltered, this.logs);
|
|
105591
106480
|
}
|
|
105592
106481
|
if ("port" in criteria) {
|
|
105593
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.port, finalOptions, this.filterCallsByPort, maybeDuplicatedLogsFiltered);
|
|
106482
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.port, finalOptions, this.filterCallsByPort, maybeDuplicatedLogsFiltered, this.logs);
|
|
105594
106483
|
}
|
|
105595
106484
|
if ("origin" in criteria) {
|
|
105596
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.origin, finalOptions, this.filterCallsByOrigin, maybeDuplicatedLogsFiltered);
|
|
106485
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.origin, finalOptions, this.filterCallsByOrigin, maybeDuplicatedLogsFiltered, this.logs);
|
|
105597
106486
|
}
|
|
105598
106487
|
if ("path" in criteria) {
|
|
105599
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.path, finalOptions, this.filterCallsByPath, maybeDuplicatedLogsFiltered);
|
|
106488
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.path, finalOptions, this.filterCallsByPath, maybeDuplicatedLogsFiltered, this.logs);
|
|
105600
106489
|
}
|
|
105601
106490
|
if ("hash" in criteria) {
|
|
105602
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.hash, finalOptions, this.filterCallsByHash, maybeDuplicatedLogsFiltered);
|
|
106491
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.hash, finalOptions, this.filterCallsByHash, maybeDuplicatedLogsFiltered, this.logs);
|
|
105603
106492
|
}
|
|
105604
106493
|
if ("fullUrl" in criteria) {
|
|
105605
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.fullUrl, finalOptions, this.filterCallsByFullUrl, maybeDuplicatedLogsFiltered);
|
|
106494
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.fullUrl, finalOptions, this.filterCallsByFullUrl, maybeDuplicatedLogsFiltered, this.logs);
|
|
105606
106495
|
}
|
|
105607
106496
|
if ("method" in criteria) {
|
|
105608
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.method, finalOptions, this.filterCallsByMethod, maybeDuplicatedLogsFiltered);
|
|
106497
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.method, finalOptions, this.filterCallsByMethod, maybeDuplicatedLogsFiltered, this.logs);
|
|
105609
106498
|
}
|
|
105610
106499
|
const uniqLogsFiltered = [...new Set(maybeDuplicatedLogsFiltered)];
|
|
105611
106500
|
return uniqLogsFiltered;
|
|
@@ -105696,8 +106585,8 @@ var hasRequiredPendingInterceptorsFormatter;
|
|
|
105696
106585
|
function requirePendingInterceptorsFormatter() {
|
|
105697
106586
|
if (hasRequiredPendingInterceptorsFormatter) return pendingInterceptorsFormatter;
|
|
105698
106587
|
hasRequiredPendingInterceptorsFormatter = 1;
|
|
105699
|
-
const { Transform: Transform2 } = require$$0$
|
|
105700
|
-
const { Console } = require$$1$
|
|
106588
|
+
const { Transform: Transform2 } = require$$0$4;
|
|
106589
|
+
const { Console } = require$$1$4;
|
|
105701
106590
|
const PERSISTENT = process.versions.icu ? "✅" : "Y ";
|
|
105702
106591
|
const NOT_PERSISTENT = process.versions.icu ? "❌" : "N ";
|
|
105703
106592
|
pendingInterceptorsFormatter = class PendingInterceptorsFormatter {
|
|
@@ -106731,7 +107620,7 @@ function requireDecoratorHandler() {
|
|
|
106731
107620
|
var _handler, _onCompleteCalled, _onErrorCalled, _onResponseStartCalled, _a3;
|
|
106732
107621
|
if (hasRequiredDecoratorHandler) return decoratorHandler;
|
|
106733
107622
|
hasRequiredDecoratorHandler = 1;
|
|
106734
|
-
const assert2 = require$$0$
|
|
107623
|
+
const assert2 = require$$0$3;
|
|
106735
107624
|
const WrapHandler = requireWrapHandler();
|
|
106736
107625
|
decoratorHandler = (_a3 = class {
|
|
106737
107626
|
constructor(handler) {
|
|
@@ -106795,9 +107684,9 @@ function requireRedirectHandler() {
|
|
|
106795
107684
|
hasRequiredRedirectHandler = 1;
|
|
106796
107685
|
const util2 = requireUtil$5();
|
|
106797
107686
|
const { kBodyUsed } = requireSymbols();
|
|
106798
|
-
const assert2 = require$$0$
|
|
107687
|
+
const assert2 = require$$0$3;
|
|
106799
107688
|
const { InvalidArgumentError } = requireErrors();
|
|
106800
|
-
const EE = require$$
|
|
107689
|
+
const EE = require$$0$2;
|
|
106801
107690
|
const redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
|
|
106802
107691
|
const kBody = Symbol("body");
|
|
106803
107692
|
const noop3 = () => {
|
|
@@ -106939,7 +107828,7 @@ function requireRedirectHandler() {
|
|
|
106939
107828
|
}
|
|
106940
107829
|
}
|
|
106941
107830
|
} else if (headers2 && typeof headers2 === "object") {
|
|
106942
|
-
const entries =
|
|
107831
|
+
const entries = util2.hasSafeIterator(headers2) ? headers2 : Object.entries(headers2);
|
|
106943
107832
|
for (const [key, value] of entries) {
|
|
106944
107833
|
if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {
|
|
106945
107834
|
ret.push(key, value);
|
|
@@ -107191,11 +108080,90 @@ function requireDns() {
|
|
|
107191
108080
|
var _maxItems, _records, _maxTTL, _maxItems2, _DNSInstance_instances, defaultLookup_fn, defaultPick_fn, _state, _opts, _dispatch, _origin, _controller, _newOrigin, _firstTry;
|
|
107192
108081
|
if (hasRequiredDns) return dns;
|
|
107193
108082
|
hasRequiredDns = 1;
|
|
107194
|
-
const { isIP } = require$$0$
|
|
107195
|
-
const { lookup } = require$$1$
|
|
108083
|
+
const { isIP } = require$$0$5;
|
|
108084
|
+
const { lookup } = require$$1$5;
|
|
107196
108085
|
const DecoratorHandler = requireDecoratorHandler();
|
|
107197
108086
|
const { InvalidArgumentError, InformationalError } = requireErrors();
|
|
107198
108087
|
const maxInt = Math.pow(2, 31) - 1;
|
|
108088
|
+
function hasSafeIterator(headers2) {
|
|
108089
|
+
const prototype = Object.getPrototypeOf(headers2);
|
|
108090
|
+
const ownIterator = Object.prototype.hasOwnProperty.call(headers2, Symbol.iterator);
|
|
108091
|
+
return ownIterator || prototype != null && prototype !== Object.prototype && typeof headers2[Symbol.iterator] === "function";
|
|
108092
|
+
}
|
|
108093
|
+
function isHostHeader(key) {
|
|
108094
|
+
return typeof key === "string" && key.toLowerCase() === "host";
|
|
108095
|
+
}
|
|
108096
|
+
function normalizeHeaders(headers2) {
|
|
108097
|
+
if (headers2 == null) {
|
|
108098
|
+
return null;
|
|
108099
|
+
}
|
|
108100
|
+
if (Array.isArray(headers2)) {
|
|
108101
|
+
if (headers2.length === 0 || !Array.isArray(headers2[0])) {
|
|
108102
|
+
return headers2;
|
|
108103
|
+
}
|
|
108104
|
+
const normalized = [];
|
|
108105
|
+
for (const header of headers2) {
|
|
108106
|
+
if (Array.isArray(header) && header.length === 2) {
|
|
108107
|
+
normalized.push(header[0], header[1]);
|
|
108108
|
+
} else {
|
|
108109
|
+
normalized.push(header);
|
|
108110
|
+
}
|
|
108111
|
+
}
|
|
108112
|
+
return normalized;
|
|
108113
|
+
}
|
|
108114
|
+
if (typeof headers2 === "object" && hasSafeIterator(headers2)) {
|
|
108115
|
+
const normalized = [];
|
|
108116
|
+
for (const header of headers2) {
|
|
108117
|
+
if (Array.isArray(header) && header.length === 2) {
|
|
108118
|
+
normalized.push(header[0], header[1]);
|
|
108119
|
+
} else {
|
|
108120
|
+
normalized.push(header);
|
|
108121
|
+
}
|
|
108122
|
+
}
|
|
108123
|
+
return normalized;
|
|
108124
|
+
}
|
|
108125
|
+
return headers2;
|
|
108126
|
+
}
|
|
108127
|
+
function hasHostHeader(headers2) {
|
|
108128
|
+
if (headers2 == null) {
|
|
108129
|
+
return false;
|
|
108130
|
+
}
|
|
108131
|
+
if (Array.isArray(headers2)) {
|
|
108132
|
+
if (headers2.length === 0) {
|
|
108133
|
+
return false;
|
|
108134
|
+
}
|
|
108135
|
+
for (let i = 0; i < headers2.length; i += 2) {
|
|
108136
|
+
if (isHostHeader(headers2[i])) {
|
|
108137
|
+
return true;
|
|
108138
|
+
}
|
|
108139
|
+
}
|
|
108140
|
+
return false;
|
|
108141
|
+
}
|
|
108142
|
+
if (typeof headers2 === "object") {
|
|
108143
|
+
for (const key in headers2) {
|
|
108144
|
+
if (isHostHeader(key)) {
|
|
108145
|
+
return true;
|
|
108146
|
+
}
|
|
108147
|
+
}
|
|
108148
|
+
}
|
|
108149
|
+
return false;
|
|
108150
|
+
}
|
|
108151
|
+
function withHostHeader(host, headers2) {
|
|
108152
|
+
const normalizedHeaders = normalizeHeaders(headers2);
|
|
108153
|
+
if (hasHostHeader(normalizedHeaders)) {
|
|
108154
|
+
return normalizedHeaders;
|
|
108155
|
+
}
|
|
108156
|
+
if (Array.isArray(normalizedHeaders)) {
|
|
108157
|
+
return ["host", host, ...normalizedHeaders];
|
|
108158
|
+
}
|
|
108159
|
+
if (normalizedHeaders && typeof normalizedHeaders === "object") {
|
|
108160
|
+
return {
|
|
108161
|
+
host,
|
|
108162
|
+
...normalizedHeaders
|
|
108163
|
+
};
|
|
108164
|
+
}
|
|
108165
|
+
return { host };
|
|
108166
|
+
}
|
|
107199
108167
|
class DNSStorage {
|
|
107200
108168
|
constructor(opts) {
|
|
107201
108169
|
__privateAdd(this, _maxItems, 0);
|
|
@@ -107461,7 +108429,8 @@ function requireDns() {
|
|
|
107461
108429
|
}
|
|
107462
108430
|
const dispatchOpts = {
|
|
107463
108431
|
...__privateGet(this, _opts),
|
|
107464
|
-
origin: `${__privateGet(this, _origin).protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}
|
|
108432
|
+
origin: `${__privateGet(this, _origin).protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`,
|
|
108433
|
+
headers: withHostHeader(__privateGet(this, _origin).host, __privateGet(this, _opts).headers)
|
|
107465
108434
|
};
|
|
107466
108435
|
__privateGet(this, _dispatch).call(this, dispatchOpts, this);
|
|
107467
108436
|
return;
|
|
@@ -107544,10 +108513,7 @@ function requireDns() {
|
|
|
107544
108513
|
servername: origin.hostname,
|
|
107545
108514
|
// For SNI on TLS
|
|
107546
108515
|
origin: newOrigin.origin,
|
|
107547
|
-
headers:
|
|
107548
|
-
host: origin.host,
|
|
107549
|
-
...origDispatchOpts.headers
|
|
107550
|
-
}
|
|
108516
|
+
headers: withHostHeader(origin.host, origDispatchOpts.headers)
|
|
107551
108517
|
};
|
|
107552
108518
|
dispatch2(
|
|
107553
108519
|
dispatchOpts,
|
|
@@ -107570,7 +108536,8 @@ function requireCache$2() {
|
|
|
107570
108536
|
hasRequiredCache$2 = 1;
|
|
107571
108537
|
const {
|
|
107572
108538
|
safeHTTPMethods,
|
|
107573
|
-
pathHasQueryOrFragment
|
|
108539
|
+
pathHasQueryOrFragment,
|
|
108540
|
+
hasSafeIterator
|
|
107574
108541
|
} = requireUtil$5();
|
|
107575
108542
|
const { serializePathWithQuery } = requireUtil$5();
|
|
107576
108543
|
function makeCacheKey(opts) {
|
|
@@ -107578,7 +108545,7 @@ function requireCache$2() {
|
|
|
107578
108545
|
throw new Error("opts.origin is undefined");
|
|
107579
108546
|
}
|
|
107580
108547
|
let fullPath = opts.path || "/";
|
|
107581
|
-
if (opts.query && !pathHasQueryOrFragment(
|
|
108548
|
+
if (opts.query && !pathHasQueryOrFragment(fullPath)) {
|
|
107582
108549
|
fullPath = serializePathWithQuery(fullPath, opts.query);
|
|
107583
108550
|
}
|
|
107584
108551
|
return {
|
|
@@ -107592,22 +108559,23 @@ function requireCache$2() {
|
|
|
107592
108559
|
let headers2;
|
|
107593
108560
|
if (opts.headers == null) {
|
|
107594
108561
|
headers2 = {};
|
|
107595
|
-
} else if (typeof opts.headers
|
|
108562
|
+
} else if (typeof opts.headers === "object") {
|
|
107596
108563
|
headers2 = {};
|
|
107597
|
-
|
|
107598
|
-
|
|
107599
|
-
|
|
108564
|
+
if (hasSafeIterator(opts.headers)) {
|
|
108565
|
+
for (const x2 of opts.headers) {
|
|
108566
|
+
if (!Array.isArray(x2)) {
|
|
108567
|
+
throw new Error("opts.headers is not a valid header map");
|
|
108568
|
+
}
|
|
108569
|
+
const [key, val] = x2;
|
|
108570
|
+
if (typeof key !== "string" || typeof val !== "string") {
|
|
108571
|
+
throw new Error("opts.headers is not a valid header map");
|
|
108572
|
+
}
|
|
108573
|
+
headers2[key.toLowerCase()] = val;
|
|
107600
108574
|
}
|
|
107601
|
-
|
|
107602
|
-
|
|
107603
|
-
|
|
108575
|
+
} else {
|
|
108576
|
+
for (const key of Object.keys(opts.headers)) {
|
|
108577
|
+
headers2[key.toLowerCase()] = opts.headers[key];
|
|
107604
108578
|
}
|
|
107605
|
-
headers2[key.toLowerCase()] = val;
|
|
107606
|
-
}
|
|
107607
|
-
} else if (typeof opts.headers === "object") {
|
|
107608
|
-
headers2 = {};
|
|
107609
|
-
for (const key of Object.keys(opts.headers)) {
|
|
107610
|
-
headers2[key.toLowerCase()] = opts.headers[key];
|
|
107611
108579
|
}
|
|
107612
108580
|
} else {
|
|
107613
108581
|
throw new Error("opts.headers is not an object");
|
|
@@ -107804,18 +108772,17 @@ function requireCache$2() {
|
|
|
107804
108772
|
}
|
|
107805
108773
|
}
|
|
107806
108774
|
function makeDeduplicationKey(cacheKey, excludeHeaders) {
|
|
107807
|
-
|
|
108775
|
+
const headers2 = {};
|
|
107808
108776
|
if (cacheKey.headers) {
|
|
107809
108777
|
const sortedHeaders = Object.keys(cacheKey.headers).sort();
|
|
107810
108778
|
for (const header of sortedHeaders) {
|
|
107811
108779
|
if (excludeHeaders == null ? void 0 : excludeHeaders.has(header.toLowerCase())) {
|
|
107812
108780
|
continue;
|
|
107813
108781
|
}
|
|
107814
|
-
|
|
107815
|
-
key += `:${header}=${Array.isArray(value) ? value.join(",") : value}`;
|
|
108782
|
+
headers2[header] = cacheKey.headers[header];
|
|
107816
108783
|
}
|
|
107817
108784
|
}
|
|
107818
|
-
return
|
|
108785
|
+
return JSON.stringify([cacheKey.origin, cacheKey.method, cacheKey.path, headers2]);
|
|
107819
108786
|
}
|
|
107820
108787
|
cache$2 = {
|
|
107821
108788
|
makeCacheKey,
|
|
@@ -108439,7 +109406,7 @@ function requireCacheHandler() {
|
|
|
108439
109406
|
return downstreamOnHeaders();
|
|
108440
109407
|
}
|
|
108441
109408
|
const cacheControlDirectives = cacheControlHeader ? parseCacheControlHeader(cacheControlHeader) : {};
|
|
108442
|
-
if (!canCacheResponse(__privateGet(this, _cacheType), statusCode, resHeaders, cacheControlDirectives)) {
|
|
109409
|
+
if (!canCacheResponse(__privateGet(this, _cacheType), statusCode, resHeaders, cacheControlDirectives, __privateGet(this, _cacheKey).headers)) {
|
|
108443
109410
|
return downstreamOnHeaders();
|
|
108444
109411
|
}
|
|
108445
109412
|
const now2 = Date.now();
|
|
@@ -108585,7 +109552,7 @@ function requireCacheHandler() {
|
|
|
108585
109552
|
_store = new WeakMap();
|
|
108586
109553
|
_handler = new WeakMap();
|
|
108587
109554
|
_writeStream = new WeakMap();
|
|
108588
|
-
function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives) {
|
|
109555
|
+
function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives, reqHeaders) {
|
|
108589
109556
|
var _a3;
|
|
108590
109557
|
if (statusCode < 200 || NOT_UNDERSTOOD_STATUS_CODES.includes(statusCode)) {
|
|
108591
109558
|
return false;
|
|
@@ -108603,8 +109570,11 @@ function requireCacheHandler() {
|
|
|
108603
109570
|
if ((_a3 = resHeaders.vary) == null ? void 0 : _a3.includes("*")) {
|
|
108604
109571
|
return false;
|
|
108605
109572
|
}
|
|
108606
|
-
if (
|
|
108607
|
-
if (!cacheControlDirectives.public
|
|
109573
|
+
if (reqHeaders == null ? void 0 : reqHeaders.authorization) {
|
|
109574
|
+
if (!cacheControlDirectives.public && !cacheControlDirectives["s-maxage"] && !cacheControlDirectives["must-revalidate"]) {
|
|
109575
|
+
return false;
|
|
109576
|
+
}
|
|
109577
|
+
if (typeof reqHeaders.authorization !== "string") {
|
|
108608
109578
|
return false;
|
|
108609
109579
|
}
|
|
108610
109580
|
if (Array.isArray(cacheControlDirectives["no-cache"]) && cacheControlDirectives["no-cache"].includes("authorization")) {
|
|
@@ -108673,9 +109643,13 @@ function requireCacheHandler() {
|
|
|
108673
109643
|
if (cacheControlDirectives["stale-if-error"]) {
|
|
108674
109644
|
staleIfError = staleAt + cacheControlDirectives["stale-if-error"] * 1e3;
|
|
108675
109645
|
}
|
|
108676
|
-
if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity) {
|
|
109646
|
+
if (cacheControlDirectives.immutable && staleWhileRevalidate === -Infinity && staleIfError === -Infinity) {
|
|
108677
109647
|
immutable = now2 + 31536e6;
|
|
108678
109648
|
}
|
|
109649
|
+
if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity && immutable === -Infinity) {
|
|
109650
|
+
const freshnessLifetime = staleAt - now2;
|
|
109651
|
+
return staleAt + freshnessLifetime;
|
|
109652
|
+
}
|
|
108679
109653
|
return Math.max(staleAt, staleWhileRevalidate, staleIfError, immutable);
|
|
108680
109654
|
}
|
|
108681
109655
|
function stripNecessaryHeaders(resHeaders, cacheControlDirectives) {
|
|
@@ -108725,8 +109699,8 @@ function requireMemoryCacheStore() {
|
|
|
108725
109699
|
var _maxCount, _maxSize2, _maxEntrySize, _size2, _count, _entries, _hasEmittedMaxSizeEvent;
|
|
108726
109700
|
if (hasRequiredMemoryCacheStore) return memoryCacheStore;
|
|
108727
109701
|
hasRequiredMemoryCacheStore = 1;
|
|
108728
|
-
const { Writable } = require$$0$
|
|
108729
|
-
const { EventEmitter: EventEmitter2 } = require$$
|
|
109702
|
+
const { Writable } = require$$0$4;
|
|
109703
|
+
const { EventEmitter: EventEmitter2 } = require$$0$2;
|
|
108730
109704
|
const { assertCacheKey, assertCacheValue } = requireCache$2();
|
|
108731
109705
|
class MemoryCacheStore extends EventEmitter2 {
|
|
108732
109706
|
/**
|
|
@@ -108910,7 +109884,7 @@ function requireCacheRevalidationHandler() {
|
|
|
108910
109884
|
var _successful, _callback, _handler, _context, _allowErrorStatusCodes;
|
|
108911
109885
|
if (hasRequiredCacheRevalidationHandler) return cacheRevalidationHandler;
|
|
108912
109886
|
hasRequiredCacheRevalidationHandler = 1;
|
|
108913
|
-
const assert2 = require$$0$
|
|
109887
|
+
const assert2 = require$$0$3;
|
|
108914
109888
|
class CacheRevalidationHandler {
|
|
108915
109889
|
/**
|
|
108916
109890
|
* @param {(boolean) => void} callback Function to call if the cached value is valid
|
|
@@ -109007,8 +109981,8 @@ var hasRequiredCache$1;
|
|
|
109007
109981
|
function requireCache$1() {
|
|
109008
109982
|
if (hasRequiredCache$1) return cache$1;
|
|
109009
109983
|
hasRequiredCache$1 = 1;
|
|
109010
|
-
const assert2 = require$$0$
|
|
109011
|
-
const { Readable } = require$$0$
|
|
109984
|
+
const assert2 = require$$0$3;
|
|
109985
|
+
const { Readable } = require$$0$4;
|
|
109012
109986
|
const util2 = requireUtil$5();
|
|
109013
109987
|
const CacheHandler = requireCacheHandler();
|
|
109014
109988
|
const MemoryCacheStore = requireMemoryCacheStore();
|
|
@@ -109351,7 +110325,7 @@ function requireDecompress() {
|
|
|
109351
110325
|
if (hasRequiredDecompress) return decompress;
|
|
109352
110326
|
hasRequiredDecompress = 1;
|
|
109353
110327
|
const { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require$$3$1;
|
|
109354
|
-
const { pipeline } = require$$0$
|
|
110328
|
+
const { pipeline } = require$$0$4;
|
|
109355
110329
|
const DecoratorHandler = requireDecoratorHandler();
|
|
109356
110330
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
109357
110331
|
const supportedEncodings = {
|
|
@@ -109568,28 +110542,31 @@ function requireDecompress() {
|
|
|
109568
110542
|
var deduplicationHandler;
|
|
109569
110543
|
var hasRequiredDeduplicationHandler;
|
|
109570
110544
|
function requireDeduplicationHandler() {
|
|
109571
|
-
var _primaryHandler, _waitingHandlers,
|
|
110545
|
+
var _primaryHandler, _waitingHandlers, _maxBufferSize, _statusCode, _headers, _statusMessage, _aborted, _responseStarted, _responseDataStarted, _completed, _controller, _onComplete, _DeduplicationHandler_instances, createWaitingHandler_fn, bufferWaitingChunk_fn, flushWaitingHandler_fn, errorWaitingHandler_fn, pruneDoneWaitingHandlers_fn;
|
|
109572
110546
|
if (hasRequiredDeduplicationHandler) return deduplicationHandler;
|
|
109573
110547
|
hasRequiredDeduplicationHandler = 1;
|
|
110548
|
+
const { RequestAbortedError } = requireErrors();
|
|
110549
|
+
const DEFAULT_MAX_BUFFER_SIZE = 5 * 1024 * 1024;
|
|
109574
110550
|
class DeduplicationHandler {
|
|
109575
110551
|
/**
|
|
109576
110552
|
* @param {DispatchHandler} primaryHandler The primary handler
|
|
109577
110553
|
* @param {() => void} onComplete Callback when request completes
|
|
110554
|
+
* @param {number} [maxBufferSize] Maximum paused buffer size per waiting handler
|
|
109578
110555
|
*/
|
|
109579
|
-
constructor(primaryHandler, onComplete) {
|
|
110556
|
+
constructor(primaryHandler, onComplete, maxBufferSize = DEFAULT_MAX_BUFFER_SIZE) {
|
|
109580
110557
|
__privateAdd(this, _DeduplicationHandler_instances);
|
|
109581
110558
|
/**
|
|
109582
110559
|
* @type {DispatchHandler}
|
|
109583
110560
|
*/
|
|
109584
110561
|
__privateAdd(this, _primaryHandler);
|
|
109585
110562
|
/**
|
|
109586
|
-
* @type {
|
|
110563
|
+
* @type {WaitingHandler[]}
|
|
109587
110564
|
*/
|
|
109588
110565
|
__privateAdd(this, _waitingHandlers, []);
|
|
109589
110566
|
/**
|
|
109590
|
-
* @type {
|
|
110567
|
+
* @type {number}
|
|
109591
110568
|
*/
|
|
109592
|
-
__privateAdd(this,
|
|
110569
|
+
__privateAdd(this, _maxBufferSize, DEFAULT_MAX_BUFFER_SIZE);
|
|
109593
110570
|
/**
|
|
109594
110571
|
* @type {number}
|
|
109595
110572
|
*/
|
|
@@ -109606,6 +110583,18 @@ function requireDeduplicationHandler() {
|
|
|
109606
110583
|
* @type {boolean}
|
|
109607
110584
|
*/
|
|
109608
110585
|
__privateAdd(this, _aborted, false);
|
|
110586
|
+
/**
|
|
110587
|
+
* @type {boolean}
|
|
110588
|
+
*/
|
|
110589
|
+
__privateAdd(this, _responseStarted, false);
|
|
110590
|
+
/**
|
|
110591
|
+
* @type {boolean}
|
|
110592
|
+
*/
|
|
110593
|
+
__privateAdd(this, _responseDataStarted, false);
|
|
110594
|
+
/**
|
|
110595
|
+
* @type {boolean}
|
|
110596
|
+
*/
|
|
110597
|
+
__privateAdd(this, _completed, false);
|
|
109609
110598
|
/**
|
|
109610
110599
|
* @type {import('../../types/dispatcher.d.ts').default.DispatchController | null}
|
|
109611
110600
|
*/
|
|
@@ -109616,16 +110605,48 @@ function requireDeduplicationHandler() {
|
|
|
109616
110605
|
__privateAdd(this, _onComplete, null);
|
|
109617
110606
|
__privateSet(this, _primaryHandler, primaryHandler);
|
|
109618
110607
|
__privateSet(this, _onComplete, onComplete);
|
|
110608
|
+
__privateSet(this, _maxBufferSize, maxBufferSize);
|
|
109619
110609
|
}
|
|
109620
110610
|
/**
|
|
109621
|
-
* Add a waiting handler that will receive
|
|
110611
|
+
* Add a waiting handler that will receive response events.
|
|
110612
|
+
* Returns false if deduplication can no longer safely attach this handler.
|
|
110613
|
+
*
|
|
109622
110614
|
* @param {DispatchHandler} handler
|
|
110615
|
+
* @returns {boolean}
|
|
109623
110616
|
*/
|
|
109624
110617
|
addWaitingHandler(handler) {
|
|
109625
|
-
|
|
110618
|
+
var _a3, _b2;
|
|
110619
|
+
if (__privateGet(this, _completed) || __privateGet(this, _responseDataStarted)) {
|
|
110620
|
+
return false;
|
|
110621
|
+
}
|
|
110622
|
+
const waitingHandler = __privateMethod(this, _DeduplicationHandler_instances, createWaitingHandler_fn).call(this, handler);
|
|
110623
|
+
const waitingController = waitingHandler.controller;
|
|
110624
|
+
try {
|
|
110625
|
+
(_a3 = handler.onRequestStart) == null ? void 0 : _a3.call(handler, waitingController, null);
|
|
110626
|
+
if (waitingController.aborted) {
|
|
110627
|
+
waitingHandler.done = true;
|
|
110628
|
+
return true;
|
|
110629
|
+
}
|
|
110630
|
+
if (__privateGet(this, _responseStarted)) {
|
|
110631
|
+
(_b2 = handler.onResponseStart) == null ? void 0 : _b2.call(
|
|
110632
|
+
handler,
|
|
110633
|
+
waitingController,
|
|
110634
|
+
__privateGet(this, _statusCode),
|
|
110635
|
+
__privateGet(this, _headers),
|
|
110636
|
+
__privateGet(this, _statusMessage)
|
|
110637
|
+
);
|
|
110638
|
+
}
|
|
110639
|
+
} catch {
|
|
110640
|
+
waitingHandler.done = true;
|
|
110641
|
+
return true;
|
|
110642
|
+
}
|
|
110643
|
+
if (!waitingController.aborted) {
|
|
110644
|
+
__privateGet(this, _waitingHandlers).push(waitingHandler);
|
|
110645
|
+
}
|
|
110646
|
+
return true;
|
|
109626
110647
|
}
|
|
109627
110648
|
/**
|
|
109628
|
-
* @param {()
|
|
110649
|
+
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
109629
110650
|
* @param {any} context
|
|
109630
110651
|
*/
|
|
109631
110652
|
onRequestStart(controller, context) {
|
|
@@ -109650,30 +110671,100 @@ function requireDeduplicationHandler() {
|
|
|
109650
110671
|
* @param {string} statusMessage
|
|
109651
110672
|
*/
|
|
109652
110673
|
onResponseStart(controller, statusCode, headers2, statusMessage) {
|
|
109653
|
-
var _a3, _b2;
|
|
110674
|
+
var _a3, _b2, _c2;
|
|
110675
|
+
__privateSet(this, _responseStarted, true);
|
|
109654
110676
|
__privateSet(this, _statusCode, statusCode);
|
|
109655
110677
|
__privateSet(this, _headers, headers2);
|
|
109656
110678
|
__privateSet(this, _statusMessage, statusMessage);
|
|
109657
110679
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseStart) == null ? void 0 : _b2.call(_a3, controller, statusCode, headers2, statusMessage);
|
|
110680
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110681
|
+
const { handler, controller: waitingController } = waitingHandler;
|
|
110682
|
+
if (waitingHandler.done || waitingController.aborted) {
|
|
110683
|
+
waitingHandler.done = true;
|
|
110684
|
+
continue;
|
|
110685
|
+
}
|
|
110686
|
+
try {
|
|
110687
|
+
(_c2 = handler.onResponseStart) == null ? void 0 : _c2.call(
|
|
110688
|
+
handler,
|
|
110689
|
+
waitingController,
|
|
110690
|
+
statusCode,
|
|
110691
|
+
headers2,
|
|
110692
|
+
statusMessage
|
|
110693
|
+
);
|
|
110694
|
+
} catch {
|
|
110695
|
+
}
|
|
110696
|
+
if (waitingController.aborted) {
|
|
110697
|
+
waitingHandler.done = true;
|
|
110698
|
+
}
|
|
110699
|
+
}
|
|
110700
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
109658
110701
|
}
|
|
109659
110702
|
/**
|
|
109660
110703
|
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
109661
110704
|
* @param {Buffer} chunk
|
|
109662
110705
|
*/
|
|
109663
110706
|
onResponseData(controller, chunk) {
|
|
109664
|
-
var _a3, _b2;
|
|
109665
|
-
__privateGet(this,
|
|
110707
|
+
var _a3, _b2, _c2;
|
|
110708
|
+
if (__privateGet(this, _aborted) || __privateGet(this, _completed)) {
|
|
110709
|
+
return;
|
|
110710
|
+
}
|
|
110711
|
+
__privateSet(this, _responseDataStarted, true);
|
|
109666
110712
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseData) == null ? void 0 : _b2.call(_a3, controller, chunk);
|
|
110713
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110714
|
+
const { handler, controller: waitingController } = waitingHandler;
|
|
110715
|
+
if (waitingHandler.done || waitingController.aborted) {
|
|
110716
|
+
waitingHandler.done = true;
|
|
110717
|
+
continue;
|
|
110718
|
+
}
|
|
110719
|
+
if (waitingController.paused) {
|
|
110720
|
+
__privateMethod(this, _DeduplicationHandler_instances, bufferWaitingChunk_fn).call(this, waitingHandler, chunk);
|
|
110721
|
+
continue;
|
|
110722
|
+
}
|
|
110723
|
+
try {
|
|
110724
|
+
(_c2 = handler.onResponseData) == null ? void 0 : _c2.call(handler, waitingController, chunk);
|
|
110725
|
+
} catch {
|
|
110726
|
+
}
|
|
110727
|
+
if (waitingController.aborted) {
|
|
110728
|
+
waitingHandler.done = true;
|
|
110729
|
+
waitingHandler.bufferedChunks = [];
|
|
110730
|
+
waitingHandler.bufferedBytes = 0;
|
|
110731
|
+
}
|
|
110732
|
+
}
|
|
110733
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
109667
110734
|
}
|
|
109668
110735
|
/**
|
|
109669
110736
|
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
109670
110737
|
* @param {object} trailers
|
|
109671
110738
|
*/
|
|
109672
110739
|
onResponseEnd(controller, trailers) {
|
|
109673
|
-
var _a3, _b2, _c2;
|
|
110740
|
+
var _a3, _b2, _c2, _d, _e2;
|
|
110741
|
+
if (__privateGet(this, _aborted) || __privateGet(this, _completed)) {
|
|
110742
|
+
return;
|
|
110743
|
+
}
|
|
110744
|
+
__privateSet(this, _completed, true);
|
|
109674
110745
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseEnd) == null ? void 0 : _b2.call(_a3, controller, trailers);
|
|
109675
|
-
|
|
109676
|
-
|
|
110746
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110747
|
+
if (waitingHandler.done || waitingHandler.controller.aborted) {
|
|
110748
|
+
waitingHandler.done = true;
|
|
110749
|
+
continue;
|
|
110750
|
+
}
|
|
110751
|
+
__privateMethod(this, _DeduplicationHandler_instances, flushWaitingHandler_fn).call(this, waitingHandler);
|
|
110752
|
+
if (waitingHandler.done || waitingHandler.controller.aborted) {
|
|
110753
|
+
waitingHandler.done = true;
|
|
110754
|
+
continue;
|
|
110755
|
+
}
|
|
110756
|
+
if (waitingHandler.controller.paused && waitingHandler.bufferedChunks.length > 0) {
|
|
110757
|
+
waitingHandler.pendingTrailers = trailers;
|
|
110758
|
+
continue;
|
|
110759
|
+
}
|
|
110760
|
+
try {
|
|
110761
|
+
(_d = (_c2 = waitingHandler.handler).onResponseEnd) == null ? void 0 : _d.call(_c2, waitingHandler.controller, trailers);
|
|
110762
|
+
} catch {
|
|
110763
|
+
}
|
|
110764
|
+
waitingHandler.done = true;
|
|
110765
|
+
}
|
|
110766
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
110767
|
+
(_e2 = __privateGet(this, _onComplete)) == null ? void 0 : _e2.call(this);
|
|
109677
110768
|
}
|
|
109678
110769
|
/**
|
|
109679
110770
|
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
@@ -109681,103 +110772,155 @@ function requireDeduplicationHandler() {
|
|
|
109681
110772
|
*/
|
|
109682
110773
|
onResponseError(controller, err) {
|
|
109683
110774
|
var _a3, _b2, _c2;
|
|
110775
|
+
if (__privateGet(this, _completed)) {
|
|
110776
|
+
return;
|
|
110777
|
+
}
|
|
109684
110778
|
__privateSet(this, _aborted, true);
|
|
110779
|
+
__privateSet(this, _completed, true);
|
|
109685
110780
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseError) == null ? void 0 : _b2.call(_a3, controller, err);
|
|
109686
|
-
|
|
110781
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110782
|
+
__privateMethod(this, _DeduplicationHandler_instances, errorWaitingHandler_fn).call(this, waitingHandler, err);
|
|
110783
|
+
}
|
|
110784
|
+
__privateSet(this, _waitingHandlers, []);
|
|
109687
110785
|
(_c2 = __privateGet(this, _onComplete)) == null ? void 0 : _c2.call(this);
|
|
109688
110786
|
}
|
|
109689
110787
|
}
|
|
109690
110788
|
_primaryHandler = new WeakMap();
|
|
109691
110789
|
_waitingHandlers = new WeakMap();
|
|
109692
|
-
|
|
110790
|
+
_maxBufferSize = new WeakMap();
|
|
109693
110791
|
_statusCode = new WeakMap();
|
|
109694
110792
|
_headers = new WeakMap();
|
|
109695
110793
|
_statusMessage = new WeakMap();
|
|
109696
110794
|
_aborted = new WeakMap();
|
|
110795
|
+
_responseStarted = new WeakMap();
|
|
110796
|
+
_responseDataStarted = new WeakMap();
|
|
110797
|
+
_completed = new WeakMap();
|
|
109697
110798
|
_controller = new WeakMap();
|
|
109698
110799
|
_onComplete = new WeakMap();
|
|
109699
110800
|
_DeduplicationHandler_instances = new WeakSet();
|
|
109700
110801
|
/**
|
|
109701
|
-
*
|
|
110802
|
+
* @param {DispatchHandler} handler
|
|
110803
|
+
* @returns {WaitingHandler}
|
|
109702
110804
|
*/
|
|
109703
|
-
|
|
109704
|
-
|
|
109705
|
-
|
|
109706
|
-
|
|
109707
|
-
|
|
109708
|
-
|
|
109709
|
-
|
|
109710
|
-
|
|
109711
|
-
|
|
109712
|
-
|
|
109713
|
-
|
|
109714
|
-
|
|
109715
|
-
|
|
109716
|
-
|
|
109717
|
-
|
|
109718
|
-
|
|
109719
|
-
|
|
109720
|
-
|
|
109721
|
-
|
|
109722
|
-
}
|
|
109723
|
-
};
|
|
109724
|
-
try {
|
|
109725
|
-
(_a3 = handler.onRequestStart) == null ? void 0 : _a3.call(handler, waitingController, null);
|
|
109726
|
-
if (waitingController.aborted) {
|
|
109727
|
-
continue;
|
|
110805
|
+
createWaitingHandler_fn = function(handler) {
|
|
110806
|
+
const waitingHandler = {
|
|
110807
|
+
handler,
|
|
110808
|
+
controller: null,
|
|
110809
|
+
bufferedChunks: [],
|
|
110810
|
+
bufferedBytes: 0,
|
|
110811
|
+
pendingTrailers: null,
|
|
110812
|
+
done: false
|
|
110813
|
+
};
|
|
110814
|
+
const state = {
|
|
110815
|
+
aborted: false,
|
|
110816
|
+
paused: false,
|
|
110817
|
+
reason: null
|
|
110818
|
+
};
|
|
110819
|
+
waitingHandler.controller = {
|
|
110820
|
+
resume: () => {
|
|
110821
|
+
var _a3, _b2;
|
|
110822
|
+
if (state.aborted) {
|
|
110823
|
+
return;
|
|
109728
110824
|
}
|
|
109729
|
-
|
|
109730
|
-
|
|
109731
|
-
|
|
109732
|
-
|
|
109733
|
-
|
|
109734
|
-
|
|
109735
|
-
|
|
109736
|
-
|
|
109737
|
-
|
|
110825
|
+
state.paused = false;
|
|
110826
|
+
__privateMethod(this, _DeduplicationHandler_instances, flushWaitingHandler_fn).call(this, waitingHandler);
|
|
110827
|
+
if (__privateGet(this, _completed) && waitingHandler.pendingTrailers && waitingHandler.bufferedChunks.length === 0 && !state.paused && !state.aborted) {
|
|
110828
|
+
try {
|
|
110829
|
+
(_b2 = (_a3 = waitingHandler.handler).onResponseEnd) == null ? void 0 : _b2.call(_a3, waitingHandler.controller, waitingHandler.pendingTrailers);
|
|
110830
|
+
} catch {
|
|
110831
|
+
}
|
|
110832
|
+
waitingHandler.pendingTrailers = null;
|
|
110833
|
+
waitingHandler.done = true;
|
|
109738
110834
|
}
|
|
109739
|
-
|
|
109740
|
-
|
|
110835
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
110836
|
+
},
|
|
110837
|
+
pause: () => {
|
|
110838
|
+
if (!state.aborted) {
|
|
110839
|
+
state.paused = true;
|
|
109741
110840
|
}
|
|
109742
|
-
|
|
109743
|
-
|
|
110841
|
+
},
|
|
110842
|
+
get paused() {
|
|
110843
|
+
return state.paused;
|
|
110844
|
+
},
|
|
110845
|
+
get aborted() {
|
|
110846
|
+
return state.aborted;
|
|
110847
|
+
},
|
|
110848
|
+
get reason() {
|
|
110849
|
+
return state.reason;
|
|
110850
|
+
},
|
|
110851
|
+
abort: (reason) => {
|
|
110852
|
+
state.aborted = true;
|
|
110853
|
+
state.reason = reason ?? null;
|
|
110854
|
+
waitingHandler.done = true;
|
|
110855
|
+
waitingHandler.pendingTrailers = null;
|
|
110856
|
+
waitingHandler.bufferedChunks = [];
|
|
110857
|
+
waitingHandler.bufferedBytes = 0;
|
|
109744
110858
|
}
|
|
110859
|
+
};
|
|
110860
|
+
return waitingHandler;
|
|
110861
|
+
};
|
|
110862
|
+
/**
|
|
110863
|
+
* @param {WaitingHandler} waitingHandler
|
|
110864
|
+
* @param {Buffer} chunk
|
|
110865
|
+
*/
|
|
110866
|
+
bufferWaitingChunk_fn = function(waitingHandler, chunk) {
|
|
110867
|
+
if (waitingHandler.done || waitingHandler.controller.aborted) {
|
|
110868
|
+
waitingHandler.done = true;
|
|
110869
|
+
waitingHandler.bufferedChunks = [];
|
|
110870
|
+
waitingHandler.bufferedBytes = 0;
|
|
110871
|
+
return;
|
|
110872
|
+
}
|
|
110873
|
+
const bufferedChunk = Buffer.from(chunk);
|
|
110874
|
+
waitingHandler.bufferedChunks.push(bufferedChunk);
|
|
110875
|
+
waitingHandler.bufferedBytes += bufferedChunk.length;
|
|
110876
|
+
if (waitingHandler.bufferedBytes > __privateGet(this, _maxBufferSize)) {
|
|
110877
|
+
const err = new RequestAbortedError(`Deduplicated waiting handler exceeded maxBufferSize (${__privateGet(this, _maxBufferSize)} bytes) while paused`);
|
|
110878
|
+
__privateMethod(this, _DeduplicationHandler_instances, errorWaitingHandler_fn).call(this, waitingHandler, err);
|
|
109745
110879
|
}
|
|
109746
|
-
__privateSet(this, _waitingHandlers, []);
|
|
109747
|
-
__privateSet(this, _chunks, []);
|
|
109748
110880
|
};
|
|
109749
110881
|
/**
|
|
109750
|
-
*
|
|
109751
|
-
* @param {Error} err
|
|
110882
|
+
* @param {WaitingHandler} waitingHandler
|
|
109752
110883
|
*/
|
|
109753
|
-
|
|
109754
|
-
var _a3
|
|
109755
|
-
|
|
109756
|
-
|
|
109757
|
-
|
|
109758
|
-
|
|
109759
|
-
pause() {
|
|
109760
|
-
},
|
|
109761
|
-
get paused() {
|
|
109762
|
-
return false;
|
|
109763
|
-
},
|
|
109764
|
-
get aborted() {
|
|
109765
|
-
return true;
|
|
109766
|
-
},
|
|
109767
|
-
get reason() {
|
|
109768
|
-
return err;
|
|
109769
|
-
},
|
|
109770
|
-
abort() {
|
|
109771
|
-
}
|
|
109772
|
-
};
|
|
110884
|
+
flushWaitingHandler_fn = function(waitingHandler) {
|
|
110885
|
+
var _a3;
|
|
110886
|
+
const { handler, controller } = waitingHandler;
|
|
110887
|
+
while (!waitingHandler.done && !controller.aborted && !controller.paused && waitingHandler.bufferedChunks.length > 0) {
|
|
110888
|
+
const bufferedChunk = waitingHandler.bufferedChunks.shift();
|
|
110889
|
+
waitingHandler.bufferedBytes -= bufferedChunk.length;
|
|
109773
110890
|
try {
|
|
109774
|
-
(_a3 = handler.
|
|
109775
|
-
(_b2 = handler.onResponseError) == null ? void 0 : _b2.call(handler, waitingController, err);
|
|
110891
|
+
(_a3 = handler.onResponseData) == null ? void 0 : _a3.call(handler, controller, bufferedChunk);
|
|
109776
110892
|
} catch {
|
|
109777
110893
|
}
|
|
110894
|
+
if (controller.aborted) {
|
|
110895
|
+
waitingHandler.done = true;
|
|
110896
|
+
waitingHandler.pendingTrailers = null;
|
|
110897
|
+
waitingHandler.bufferedChunks = [];
|
|
110898
|
+
waitingHandler.bufferedBytes = 0;
|
|
110899
|
+
break;
|
|
110900
|
+
}
|
|
109778
110901
|
}
|
|
109779
|
-
|
|
109780
|
-
|
|
110902
|
+
};
|
|
110903
|
+
/**
|
|
110904
|
+
* @param {WaitingHandler} waitingHandler
|
|
110905
|
+
* @param {Error} err
|
|
110906
|
+
*/
|
|
110907
|
+
errorWaitingHandler_fn = function(waitingHandler, err) {
|
|
110908
|
+
var _a3, _b2;
|
|
110909
|
+
if (waitingHandler.done) {
|
|
110910
|
+
return;
|
|
110911
|
+
}
|
|
110912
|
+
waitingHandler.done = true;
|
|
110913
|
+
waitingHandler.pendingTrailers = null;
|
|
110914
|
+
waitingHandler.bufferedChunks = [];
|
|
110915
|
+
waitingHandler.bufferedBytes = 0;
|
|
110916
|
+
try {
|
|
110917
|
+
waitingHandler.controller.abort(err);
|
|
110918
|
+
(_b2 = (_a3 = waitingHandler.handler).onResponseError) == null ? void 0 : _b2.call(_a3, waitingHandler.controller, err);
|
|
110919
|
+
} catch {
|
|
110920
|
+
}
|
|
110921
|
+
};
|
|
110922
|
+
pruneDoneWaitingHandlers_fn = function() {
|
|
110923
|
+
__privateSet(this, _waitingHandlers, __privateGet(this, _waitingHandlers).filter((waitingHandler) => waitingHandler.done === false));
|
|
109781
110924
|
};
|
|
109782
110925
|
deduplicationHandler = DeduplicationHandler;
|
|
109783
110926
|
return deduplicationHandler;
|
|
@@ -109787,7 +110930,7 @@ var hasRequiredDeduplicate;
|
|
|
109787
110930
|
function requireDeduplicate() {
|
|
109788
110931
|
if (hasRequiredDeduplicate) return deduplicate;
|
|
109789
110932
|
hasRequiredDeduplicate = 1;
|
|
109790
|
-
const diagnosticsChannel = require$$0$
|
|
110933
|
+
const diagnosticsChannel = require$$0$6;
|
|
109791
110934
|
const util2 = requireUtil$5();
|
|
109792
110935
|
const DeduplicationHandler = requireDeduplicationHandler();
|
|
109793
110936
|
const { normalizeHeaders, makeCacheKey, makeDeduplicationKey } = requireCache$2();
|
|
@@ -109796,7 +110939,8 @@ function requireDeduplicate() {
|
|
|
109796
110939
|
const {
|
|
109797
110940
|
methods = ["GET"],
|
|
109798
110941
|
skipHeaderNames = [],
|
|
109799
|
-
excludeHeaderNames = []
|
|
110942
|
+
excludeHeaderNames = [],
|
|
110943
|
+
maxBufferSize = 5 * 1024 * 1024
|
|
109800
110944
|
} = opts;
|
|
109801
110945
|
if (typeof opts !== "object" || opts === null) {
|
|
109802
110946
|
throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? "null" : typeof opts}`);
|
|
@@ -109815,6 +110959,9 @@ function requireDeduplicate() {
|
|
|
109815
110959
|
if (!Array.isArray(excludeHeaderNames)) {
|
|
109816
110960
|
throw new TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof excludeHeaderNames}`);
|
|
109817
110961
|
}
|
|
110962
|
+
if (!Number.isFinite(maxBufferSize) || maxBufferSize <= 0) {
|
|
110963
|
+
throw new TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${maxBufferSize}`);
|
|
110964
|
+
}
|
|
109818
110965
|
const skipHeaderNamesSet = new Set(skipHeaderNames.map((name2) => name2.toLowerCase()));
|
|
109819
110966
|
const excludeHeaderNamesSet = new Set(excludeHeaderNames.map((name2) => name2.toLowerCase()));
|
|
109820
110967
|
const pendingRequests = /* @__PURE__ */ new Map();
|
|
@@ -109838,8 +110985,10 @@ function requireDeduplicate() {
|
|
|
109838
110985
|
const dedupeKey = makeDeduplicationKey(cacheKey, excludeHeaderNamesSet);
|
|
109839
110986
|
const pendingHandler = pendingRequests.get(dedupeKey);
|
|
109840
110987
|
if (pendingHandler) {
|
|
109841
|
-
pendingHandler.addWaitingHandler(handler)
|
|
109842
|
-
|
|
110988
|
+
if (pendingHandler.addWaitingHandler(handler)) {
|
|
110989
|
+
return true;
|
|
110990
|
+
}
|
|
110991
|
+
return dispatch2(opts2, handler);
|
|
109843
110992
|
}
|
|
109844
110993
|
const deduplicationHandler2 = new DeduplicationHandler(
|
|
109845
110994
|
handler,
|
|
@@ -109848,7 +110997,8 @@ function requireDeduplicate() {
|
|
|
109848
110997
|
if (pendingRequestsChannel.hasSubscribers) {
|
|
109849
110998
|
pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: "removed" });
|
|
109850
110999
|
}
|
|
109851
|
-
}
|
|
111000
|
+
},
|
|
111001
|
+
maxBufferSize
|
|
109852
111002
|
);
|
|
109853
111003
|
pendingRequests.set(dedupeKey, deduplicationHandler2);
|
|
109854
111004
|
if (pendingRequestsChannel.hasSubscribers) {
|
|
@@ -109866,7 +111016,7 @@ function requireSqliteCacheStore() {
|
|
|
109866
111016
|
var _maxEntrySize, _maxCount, _db, _getValuesQuery, _updateValueQuery, _insertValueQuery, _deleteExpiredValuesQuery, _deleteByUrlQuery, _countEntriesQuery, _deleteOldValuesQuery, _SqliteCacheStore_instances, prune_fn, makeValueUrl_fn, findValue_fn, _a3;
|
|
109867
111017
|
if (hasRequiredSqliteCacheStore) return sqliteCacheStore;
|
|
109868
111018
|
hasRequiredSqliteCacheStore = 1;
|
|
109869
|
-
const { Writable } = require$$0$
|
|
111019
|
+
const { Writable } = require$$0$4;
|
|
109870
111020
|
const { assertCacheKey, assertCacheValue } = requireCache$2();
|
|
109871
111021
|
let DatabaseSync;
|
|
109872
111022
|
const VERSION = 3;
|
|
@@ -110028,7 +111178,7 @@ function requireSqliteCacheStore() {
|
|
|
110028
111178
|
SELECT
|
|
110029
111179
|
id
|
|
110030
111180
|
FROM cacheInterceptorV${VERSION}
|
|
110031
|
-
ORDER BY cachedAt
|
|
111181
|
+
ORDER BY cachedAt ASC
|
|
110032
111182
|
LIMIT ?
|
|
110033
111183
|
)
|
|
110034
111184
|
`));
|
|
@@ -110083,7 +111233,6 @@ function requireSqliteCacheStore() {
|
|
|
110083
111233
|
existingValue.id
|
|
110084
111234
|
);
|
|
110085
111235
|
} else {
|
|
110086
|
-
__privateMethod(this, _SqliteCacheStore_instances, prune_fn).call(this);
|
|
110087
111236
|
__privateGet(this, _insertValueQuery).run(
|
|
110088
111237
|
url2,
|
|
110089
111238
|
key.method,
|
|
@@ -110098,6 +111247,7 @@ function requireSqliteCacheStore() {
|
|
|
110098
111247
|
value.cachedAt,
|
|
110099
111248
|
value.staleAt
|
|
110100
111249
|
);
|
|
111250
|
+
__privateMethod(this, _SqliteCacheStore_instances, prune_fn).call(this);
|
|
110101
111251
|
}
|
|
110102
111252
|
}
|
|
110103
111253
|
/**
|
|
@@ -110184,7 +111334,7 @@ function requireSqliteCacheStore() {
|
|
|
110184
111334
|
const now2 = Date.now();
|
|
110185
111335
|
for (const value of values) {
|
|
110186
111336
|
if (now2 >= value.deleteAt && !canBeExpired) {
|
|
110187
|
-
|
|
111337
|
+
continue;
|
|
110188
111338
|
}
|
|
110189
111339
|
let matches = true;
|
|
110190
111340
|
if (value.vary) {
|
|
@@ -110233,7 +111383,7 @@ function requireHeaders() {
|
|
|
110233
111383
|
isValidHeaderValue
|
|
110234
111384
|
} = requireUtil$4();
|
|
110235
111385
|
const { webidl } = requireWebidl();
|
|
110236
|
-
const assert2 = require$$0$
|
|
111386
|
+
const assert2 = require$$0$3;
|
|
110237
111387
|
const util2 = require$$3;
|
|
110238
111388
|
function isHTTPWhiteSpaceCharCode(code2) {
|
|
110239
111389
|
return code2 === 10 || code2 === 13 || code2 === 9 || code2 === 32;
|
|
@@ -110710,7 +111860,7 @@ function requireResponse() {
|
|
|
110710
111860
|
const { webidl } = requireWebidl();
|
|
110711
111861
|
const { URLSerializer } = requireDataUrl();
|
|
110712
111862
|
const { kConstruct } = requireSymbols();
|
|
110713
|
-
const assert2 = require$$0$
|
|
111863
|
+
const assert2 = require$$0$3;
|
|
110714
111864
|
const { isomorphicEncode, serializeJavascriptValueToJSONString } = requireInfra();
|
|
110715
111865
|
const textEncoder2 = new TextEncoder("utf-8");
|
|
110716
111866
|
const _Response = class _Response {
|
|
@@ -111142,8 +112292,8 @@ function requireRequest() {
|
|
|
111142
112292
|
const { webidl } = requireWebidl();
|
|
111143
112293
|
const { URLSerializer } = requireDataUrl();
|
|
111144
112294
|
const { kConstruct } = requireSymbols();
|
|
111145
|
-
const assert2 = require$$0$
|
|
111146
|
-
const { getMaxListeners, setMaxListeners, defaultMaxListeners } = require$$
|
|
112295
|
+
const assert2 = require$$0$3;
|
|
112296
|
+
const { getMaxListeners, setMaxListeners, defaultMaxListeners } = require$$0$2;
|
|
111147
112297
|
const kAbortController = Symbol("abortController");
|
|
111148
112298
|
const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
|
|
111149
112299
|
signal.removeEventListener("abort", abort);
|
|
@@ -111881,7 +113031,7 @@ var hasRequiredSubresourceIntegrity;
|
|
|
111881
113031
|
function requireSubresourceIntegrity() {
|
|
111882
113032
|
if (hasRequiredSubresourceIntegrity) return subresourceIntegrity;
|
|
111883
113033
|
hasRequiredSubresourceIntegrity = 1;
|
|
111884
|
-
const assert2 = require$$0$
|
|
113034
|
+
const assert2 = require$$0$3;
|
|
111885
113035
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
111886
113036
|
const validSRIHashAlgorithmTokenSet = /* @__PURE__ */ new Map([["sha256", 0], ["sha384", 1], ["sha512", 2]]);
|
|
111887
113037
|
let crypto$1;
|
|
@@ -112065,7 +113215,7 @@ function requireFetch() {
|
|
|
112065
113215
|
includesCredentials,
|
|
112066
113216
|
isTraversableNavigable
|
|
112067
113217
|
} = requireUtil$4();
|
|
112068
|
-
const assert2 = require$$0$
|
|
113218
|
+
const assert2 = require$$0$3;
|
|
112069
113219
|
const { safelyExtractBody, extractBody } = requireBody();
|
|
112070
113220
|
const {
|
|
112071
113221
|
redirectStatusSet,
|
|
@@ -112074,8 +113224,8 @@ function requireFetch() {
|
|
|
112074
113224
|
requestBodyHeader,
|
|
112075
113225
|
subresourceSet
|
|
112076
113226
|
} = requireConstants$3();
|
|
112077
|
-
const EE = require$$
|
|
112078
|
-
const { Readable, pipeline, finished, isErrored, isReadable } = require$$0$
|
|
113227
|
+
const EE = require$$0$2;
|
|
113228
|
+
const { Readable, pipeline, finished, isErrored, isReadable } = require$$0$4;
|
|
112079
113229
|
const { addAbortListener, bufferToLowerCasedHeaderName } = requireUtil$5();
|
|
112080
113230
|
const { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = requireDataUrl();
|
|
112081
113231
|
const { getGlobalDispatcher } = requireGlobal();
|
|
@@ -112177,8 +113327,11 @@ function requireFetch() {
|
|
|
112177
113327
|
request: request2,
|
|
112178
113328
|
processResponseEndOfBody: handleFetchDone,
|
|
112179
113329
|
processResponse,
|
|
112180
|
-
dispatcher: getRequestDispatcher(requestObject)
|
|
113330
|
+
dispatcher: getRequestDispatcher(requestObject),
|
|
112181
113331
|
// undici
|
|
113332
|
+
// Keep requestObject alive to prevent its AbortController from being GC'd
|
|
113333
|
+
// See https://github.com/nodejs/undici/issues/4627
|
|
113334
|
+
requestObject
|
|
112182
113335
|
});
|
|
112183
113336
|
return p2.promise;
|
|
112184
113337
|
}
|
|
@@ -112248,8 +113401,10 @@ function requireFetch() {
|
|
|
112248
113401
|
processResponseEndOfBody,
|
|
112249
113402
|
processResponseConsumeBody,
|
|
112250
113403
|
useParallelQueue = false,
|
|
112251
|
-
dispatcher: dispatcher2 = getGlobalDispatcher()
|
|
113404
|
+
dispatcher: dispatcher2 = getGlobalDispatcher(),
|
|
112252
113405
|
// undici
|
|
113406
|
+
requestObject = null
|
|
113407
|
+
// Keep alive to prevent AbortController GC, see #4627
|
|
112253
113408
|
}) {
|
|
112254
113409
|
var _a3, _b2, _c2;
|
|
112255
113410
|
assert2(dispatcher2);
|
|
@@ -112273,7 +113428,9 @@ function requireFetch() {
|
|
|
112273
113428
|
processResponseConsumeBody,
|
|
112274
113429
|
processResponseEndOfBody,
|
|
112275
113430
|
taskDestination,
|
|
112276
|
-
crossOriginIsolatedCapability
|
|
113431
|
+
crossOriginIsolatedCapability,
|
|
113432
|
+
// Keep requestObject alive to prevent its AbortController from being GC'd
|
|
113433
|
+
requestObject
|
|
112277
113434
|
};
|
|
112278
113435
|
assert2(!request2.body || request2.body.stream);
|
|
112279
113436
|
if (request2.window === "client") {
|
|
@@ -112413,7 +113570,7 @@ function requireFetch() {
|
|
|
112413
113570
|
}
|
|
112414
113571
|
case "blob:": {
|
|
112415
113572
|
if (!resolveObjectURL) {
|
|
112416
|
-
resolveObjectURL = require$$0$
|
|
113573
|
+
resolveObjectURL = require$$0$7.resolveObjectURL;
|
|
112417
113574
|
}
|
|
112418
113575
|
const blobURLEntry = requestCurrentURL(request2);
|
|
112419
113576
|
if (blobURLEntry.search.length !== 0) {
|
|
@@ -112517,7 +113674,7 @@ function requireFetch() {
|
|
|
112517
113674
|
cacheState = "";
|
|
112518
113675
|
}
|
|
112519
113676
|
let responseStatus = 0;
|
|
112520
|
-
if (fetchParams.request.mode !== "
|
|
113677
|
+
if (fetchParams.request.mode !== "navigate" || !response2.hasCrossOriginRedirects) {
|
|
112521
113678
|
responseStatus = response2.status;
|
|
112522
113679
|
const mimeType = extractMimeType(response2.headersList);
|
|
112523
113680
|
if (mimeType !== "failure") {
|
|
@@ -112678,7 +113835,7 @@ function requireFetch() {
|
|
|
112678
113835
|
if (contentLength != null) {
|
|
112679
113836
|
contentLengthHeaderValue = isomorphicEncode(`${contentLength}`);
|
|
112680
113837
|
}
|
|
112681
|
-
if (contentLengthHeaderValue != null) {
|
|
113838
|
+
if (contentLengthHeaderValue != null && !httpRequest.headersList.contains("content-length", true)) {
|
|
112682
113839
|
httpRequest.headersList.append("content-length", contentLengthHeaderValue, true);
|
|
112683
113840
|
}
|
|
112684
113841
|
if (contentLength != null && httpRequest.keepalive) ;
|
|
@@ -112751,10 +113908,10 @@ function requireFetch() {
|
|
|
112751
113908
|
response2.rangeRequested = true;
|
|
112752
113909
|
}
|
|
112753
113910
|
response2.requestIncludesCredentials = includeCredentials;
|
|
112754
|
-
if (response2.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && isTraversableNavigable(request2.traversableForUserPrompts)) {
|
|
113911
|
+
if (response2.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && (request2.useURLCredentials !== void 0 || isTraversableNavigable(request2.traversableForUserPrompts))) {
|
|
112755
113912
|
if (request2.body != null) {
|
|
112756
113913
|
if (request2.body.source == null) {
|
|
112757
|
-
return
|
|
113914
|
+
return response2;
|
|
112758
113915
|
}
|
|
112759
113916
|
request2.body = safelyExtractBody(request2.body.source)[0];
|
|
112760
113917
|
}
|
|
@@ -112957,9 +114114,11 @@ function requireFetch() {
|
|
|
112957
114114
|
function dispatch2({ body: body2 }) {
|
|
112958
114115
|
const url2 = requestCurrentURL(request2);
|
|
112959
114116
|
const agent2 = fetchParams.controller.dispatcher;
|
|
114117
|
+
const path2 = url2.pathname + url2.search;
|
|
114118
|
+
const hasTrailingQuestionMark = url2.search.length === 0 && url2.href[url2.href.length - url2.hash.length - 1] === "?";
|
|
112960
114119
|
return new Promise((resolve2, reject) => agent2.dispatch(
|
|
112961
114120
|
{
|
|
112962
|
-
path:
|
|
114121
|
+
path: hasTrailingQuestionMark ? `${path2}?` : path2,
|
|
112963
114122
|
origin: url2.origin,
|
|
112964
114123
|
method: request2.method,
|
|
112965
114124
|
body: agent2.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body2,
|
|
@@ -112990,7 +114149,15 @@ function requireFetch() {
|
|
|
112990
114149
|
}
|
|
112991
114150
|
const headersList = new HeadersList();
|
|
112992
114151
|
for (let i = 0; i < rawHeaders.length; i += 2) {
|
|
112993
|
-
|
|
114152
|
+
const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i]);
|
|
114153
|
+
const value = rawHeaders[i + 1];
|
|
114154
|
+
if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {
|
|
114155
|
+
for (const val of value) {
|
|
114156
|
+
headersList.append(nameStr, val.toString("latin1"), true);
|
|
114157
|
+
}
|
|
114158
|
+
} else {
|
|
114159
|
+
headersList.append(nameStr, value.toString("latin1"), true);
|
|
114160
|
+
}
|
|
112994
114161
|
}
|
|
112995
114162
|
const location2 = headersList.get("location", true);
|
|
112996
114163
|
this.body = new Readable({ read: resume });
|
|
@@ -113105,7 +114272,15 @@ function requireFetch() {
|
|
|
113105
114272
|
}
|
|
113106
114273
|
const headersList = new HeadersList();
|
|
113107
114274
|
for (let i = 0; i < rawHeaders.length; i += 2) {
|
|
113108
|
-
|
|
114275
|
+
const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i]);
|
|
114276
|
+
const value = rawHeaders[i + 1];
|
|
114277
|
+
if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {
|
|
114278
|
+
for (const val of value) {
|
|
114279
|
+
headersList.append(nameStr, val.toString("latin1"), true);
|
|
114280
|
+
}
|
|
114281
|
+
} else {
|
|
114282
|
+
headersList.append(nameStr, value.toString("latin1"), true);
|
|
114283
|
+
}
|
|
113109
114284
|
}
|
|
113110
114285
|
resolve2({
|
|
113111
114286
|
status,
|
|
@@ -113132,7 +114307,7 @@ var hasRequiredUtil$3;
|
|
|
113132
114307
|
function requireUtil$3() {
|
|
113133
114308
|
if (hasRequiredUtil$3) return util$3;
|
|
113134
114309
|
hasRequiredUtil$3 = 1;
|
|
113135
|
-
const assert2 = require$$0$
|
|
114310
|
+
const assert2 = require$$0$3;
|
|
113136
114311
|
const { URLSerializer } = requireDataUrl();
|
|
113137
114312
|
const { isValidHeaderName } = requireUtil$4();
|
|
113138
114313
|
function urlEquals(A2, B2, excludeFragment = false) {
|
|
@@ -113163,7 +114338,7 @@ function requireCache() {
|
|
|
113163
114338
|
var _relevantRequestResponseList, _Cache_instances, batchCacheOperations_fn, queryCache_fn, requestMatchesCachedItem_fn, internalMatchAll_fn;
|
|
113164
114339
|
if (hasRequiredCache) return cache;
|
|
113165
114340
|
hasRequiredCache = 1;
|
|
113166
|
-
const assert2 = require$$0$
|
|
114341
|
+
const assert2 = require$$0$3;
|
|
113167
114342
|
const { kConstruct } = requireSymbols();
|
|
113168
114343
|
const { urlEquals, getFieldValues } = requireUtil$3();
|
|
113169
114344
|
const { kEnumerableProperty, isDisturbed } = requireUtil$5();
|
|
@@ -114015,7 +115190,7 @@ function requireParse$1() {
|
|
|
114015
115190
|
const { collectASequenceOfCodePointsFast } = requireInfra();
|
|
114016
115191
|
const { maxNameValuePairSize, maxAttributeValueSize } = requireConstants$2();
|
|
114017
115192
|
const { isCTLExcludingHtab } = requireUtil$2();
|
|
114018
|
-
const assert2 = require$$0$
|
|
115193
|
+
const assert2 = require$$0$3;
|
|
114019
115194
|
const { unescape: qsUnescape } = require$$5$1;
|
|
114020
115195
|
function parseSetCookie(header) {
|
|
114021
115196
|
if (isCTLExcludingHtab(header)) {
|
|
@@ -114625,7 +115800,7 @@ function requireUtil$1() {
|
|
|
114625
115800
|
if (hasRequiredUtil$1) return util$1;
|
|
114626
115801
|
hasRequiredUtil$1 = 1;
|
|
114627
115802
|
const { states, opcodes } = requireConstants$1();
|
|
114628
|
-
const { isUtf8 } = require$$0$
|
|
115803
|
+
const { isUtf8 } = require$$0$7;
|
|
114629
115804
|
const { removeHTTPWhitespace } = requireDataUrl();
|
|
114630
115805
|
const { collectASequenceOfCodePointsFast } = requireInfra();
|
|
114631
115806
|
function isConnecting(readyState) {
|
|
@@ -114717,13 +115892,17 @@ function requireUtil$1() {
|
|
|
114717
115892
|
return extensionList;
|
|
114718
115893
|
}
|
|
114719
115894
|
function isValidClientWindowBits(value) {
|
|
115895
|
+
if (value.length === 0) {
|
|
115896
|
+
return false;
|
|
115897
|
+
}
|
|
114720
115898
|
for (let i = 0; i < value.length; i++) {
|
|
114721
115899
|
const byte = value.charCodeAt(i);
|
|
114722
115900
|
if (byte < 48 || byte > 57) {
|
|
114723
115901
|
return false;
|
|
114724
115902
|
}
|
|
114725
115903
|
}
|
|
114726
|
-
|
|
115904
|
+
const num = Number.parseInt(value, 10);
|
|
115905
|
+
return num >= 8 && num <= 15;
|
|
114727
115906
|
}
|
|
114728
115907
|
function getURLRecord(url2, baseURL) {
|
|
114729
115908
|
let urlRecord;
|
|
@@ -114910,7 +116089,7 @@ function requireConnection() {
|
|
|
114910
116089
|
const { Headers: Headers2, getHeadersList } = requireHeaders();
|
|
114911
116090
|
const { getDecodeSplit } = requireUtil$4();
|
|
114912
116091
|
const { WebsocketFrameSend } = requireFrame();
|
|
114913
|
-
const assert2 = require$$0$
|
|
116092
|
+
const assert2 = require$$0$3;
|
|
114914
116093
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
114915
116094
|
const crypto$1 = runtimeFeatures2.has("crypto") ? crypto : null;
|
|
114916
116095
|
let warningEmitted = false;
|
|
@@ -115059,23 +116238,36 @@ function requireConnection() {
|
|
|
115059
116238
|
var permessageDeflate;
|
|
115060
116239
|
var hasRequiredPermessageDeflate;
|
|
115061
116240
|
function requirePermessageDeflate() {
|
|
115062
|
-
var _inflate, _options2;
|
|
116241
|
+
var _inflate, _options2, _aborted, _currentCallback;
|
|
115063
116242
|
if (hasRequiredPermessageDeflate) return permessageDeflate;
|
|
115064
116243
|
hasRequiredPermessageDeflate = 1;
|
|
115065
116244
|
const { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require$$3$1;
|
|
115066
116245
|
const { isValidClientWindowBits } = requireUtil$1();
|
|
116246
|
+
const { MessageSizeExceededError } = requireErrors();
|
|
115067
116247
|
const tail = Buffer.from([0, 0, 255, 255]);
|
|
115068
116248
|
const kBuffer = Symbol("kBuffer");
|
|
115069
116249
|
const kLength = Symbol("kLength");
|
|
116250
|
+
const kDefaultMaxDecompressedSize = 4 * 1024 * 1024;
|
|
115070
116251
|
class PerMessageDeflate {
|
|
116252
|
+
/**
|
|
116253
|
+
* @param {Map<string, string>} extensions
|
|
116254
|
+
*/
|
|
115071
116255
|
constructor(extensions2) {
|
|
115072
116256
|
/** @type {import('node:zlib').InflateRaw} */
|
|
115073
116257
|
__privateAdd(this, _inflate);
|
|
115074
116258
|
__privateAdd(this, _options2, {});
|
|
116259
|
+
/** @type {boolean} */
|
|
116260
|
+
__privateAdd(this, _aborted, false);
|
|
116261
|
+
/** @type {Function|null} */
|
|
116262
|
+
__privateAdd(this, _currentCallback, null);
|
|
115075
116263
|
__privateGet(this, _options2).serverNoContextTakeover = extensions2.has("server_no_context_takeover");
|
|
115076
116264
|
__privateGet(this, _options2).serverMaxWindowBits = extensions2.get("server_max_window_bits");
|
|
115077
116265
|
}
|
|
115078
116266
|
decompress(chunk, fin, callback) {
|
|
116267
|
+
if (__privateGet(this, _aborted)) {
|
|
116268
|
+
callback(new MessageSizeExceededError());
|
|
116269
|
+
return;
|
|
116270
|
+
}
|
|
115079
116271
|
if (!__privateGet(this, _inflate)) {
|
|
115080
116272
|
let windowBits = Z_DEFAULT_WINDOWBITS;
|
|
115081
116273
|
if (__privateGet(this, _options2).serverMaxWindowBits) {
|
|
@@ -115085,32 +116277,59 @@ function requirePermessageDeflate() {
|
|
|
115085
116277
|
}
|
|
115086
116278
|
windowBits = Number.parseInt(__privateGet(this, _options2).serverMaxWindowBits);
|
|
115087
116279
|
}
|
|
115088
|
-
|
|
116280
|
+
try {
|
|
116281
|
+
__privateSet(this, _inflate, createInflateRaw({ windowBits }));
|
|
116282
|
+
} catch (err) {
|
|
116283
|
+
callback(err);
|
|
116284
|
+
return;
|
|
116285
|
+
}
|
|
115089
116286
|
__privateGet(this, _inflate)[kBuffer] = [];
|
|
115090
116287
|
__privateGet(this, _inflate)[kLength] = 0;
|
|
115091
116288
|
__privateGet(this, _inflate).on("data", (data) => {
|
|
115092
|
-
__privateGet(this,
|
|
116289
|
+
if (__privateGet(this, _aborted)) {
|
|
116290
|
+
return;
|
|
116291
|
+
}
|
|
115093
116292
|
__privateGet(this, _inflate)[kLength] += data.length;
|
|
116293
|
+
if (__privateGet(this, _inflate)[kLength] > kDefaultMaxDecompressedSize) {
|
|
116294
|
+
__privateSet(this, _aborted, true);
|
|
116295
|
+
__privateGet(this, _inflate).removeAllListeners();
|
|
116296
|
+
__privateGet(this, _inflate).destroy();
|
|
116297
|
+
__privateSet(this, _inflate, null);
|
|
116298
|
+
if (__privateGet(this, _currentCallback)) {
|
|
116299
|
+
const cb = __privateGet(this, _currentCallback);
|
|
116300
|
+
__privateSet(this, _currentCallback, null);
|
|
116301
|
+
cb(new MessageSizeExceededError());
|
|
116302
|
+
}
|
|
116303
|
+
return;
|
|
116304
|
+
}
|
|
116305
|
+
__privateGet(this, _inflate)[kBuffer].push(data);
|
|
115094
116306
|
});
|
|
115095
116307
|
__privateGet(this, _inflate).on("error", (err) => {
|
|
115096
116308
|
__privateSet(this, _inflate, null);
|
|
115097
116309
|
callback(err);
|
|
115098
116310
|
});
|
|
115099
116311
|
}
|
|
116312
|
+
__privateSet(this, _currentCallback, callback);
|
|
115100
116313
|
__privateGet(this, _inflate).write(chunk);
|
|
115101
116314
|
if (fin) {
|
|
115102
116315
|
__privateGet(this, _inflate).write(tail);
|
|
115103
116316
|
}
|
|
115104
116317
|
__privateGet(this, _inflate).flush(() => {
|
|
116318
|
+
if (__privateGet(this, _aborted) || !__privateGet(this, _inflate)) {
|
|
116319
|
+
return;
|
|
116320
|
+
}
|
|
115105
116321
|
const full = Buffer.concat(__privateGet(this, _inflate)[kBuffer], __privateGet(this, _inflate)[kLength]);
|
|
115106
116322
|
__privateGet(this, _inflate)[kBuffer].length = 0;
|
|
115107
116323
|
__privateGet(this, _inflate)[kLength] = 0;
|
|
116324
|
+
__privateSet(this, _currentCallback, null);
|
|
115108
116325
|
callback(null, full);
|
|
115109
116326
|
});
|
|
115110
116327
|
}
|
|
115111
116328
|
}
|
|
115112
116329
|
_inflate = new WeakMap();
|
|
115113
116330
|
_options2 = new WeakMap();
|
|
116331
|
+
_aborted = new WeakMap();
|
|
116332
|
+
_currentCallback = new WeakMap();
|
|
115114
116333
|
permessageDeflate = { PerMessageDeflate };
|
|
115115
116334
|
return permessageDeflate;
|
|
115116
116335
|
}
|
|
@@ -115120,8 +116339,8 @@ function requireReceiver() {
|
|
|
115120
116339
|
var _buffers, _fragmentsBytes, _byteOffset, _loop, _state, _info, _fragments, _extensions, _handler;
|
|
115121
116340
|
if (hasRequiredReceiver) return receiver;
|
|
115122
116341
|
hasRequiredReceiver = 1;
|
|
115123
|
-
const { Writable } = require$$0$
|
|
115124
|
-
const assert2 = require$$0$
|
|
116342
|
+
const { Writable } = require$$0$4;
|
|
116343
|
+
const assert2 = require$$0$3;
|
|
115125
116344
|
const { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = requireConstants$1();
|
|
115126
116345
|
const {
|
|
115127
116346
|
isValidStatusCode,
|
|
@@ -115135,7 +116354,12 @@ function requireReceiver() {
|
|
|
115135
116354
|
const { failWebsocketConnection } = requireConnection();
|
|
115136
116355
|
const { WebsocketFrameSend } = requireFrame();
|
|
115137
116356
|
const { PerMessageDeflate } = requirePermessageDeflate();
|
|
116357
|
+
const { MessageSizeExceededError } = requireErrors();
|
|
115138
116358
|
class ByteParser extends Writable {
|
|
116359
|
+
/**
|
|
116360
|
+
* @param {import('./websocket').Handler} handler
|
|
116361
|
+
* @param {Map<string, string>|null} extensions
|
|
116362
|
+
*/
|
|
115139
116363
|
constructor(handler, extensions2) {
|
|
115140
116364
|
super();
|
|
115141
116365
|
__privateAdd(this, _buffers, []);
|
|
@@ -115250,12 +116474,12 @@ function requireReceiver() {
|
|
|
115250
116474
|
}
|
|
115251
116475
|
const buffer = this.consume(8);
|
|
115252
116476
|
const upper = buffer.readUInt32BE(0);
|
|
115253
|
-
|
|
116477
|
+
const lower2 = buffer.readUInt32BE(4);
|
|
116478
|
+
if (upper !== 0 || lower2 > 2 ** 31 - 1) {
|
|
115254
116479
|
failWebsocketConnection(__privateGet(this, _handler), 1009, "Received payload length > 2^31 bytes.");
|
|
115255
116480
|
return;
|
|
115256
116481
|
}
|
|
115257
|
-
|
|
115258
|
-
__privateGet(this, _info).payloadLength = (upper << 8) + lower2;
|
|
116482
|
+
__privateGet(this, _info).payloadLength = lower2;
|
|
115259
116483
|
__privateSet(this, _state, parserStates.READ_DATA);
|
|
115260
116484
|
} else if (__privateGet(this, _state) === parserStates.READ_DATA) {
|
|
115261
116485
|
if (__privateGet(this, _byteOffset) < __privateGet(this, _info).payloadLength) {
|
|
@@ -115275,7 +116499,8 @@ function requireReceiver() {
|
|
|
115275
116499
|
} else {
|
|
115276
116500
|
__privateGet(this, _extensions).get("permessage-deflate").decompress(body2, __privateGet(this, _info).fin, (error2, data) => {
|
|
115277
116501
|
if (error2) {
|
|
115278
|
-
|
|
116502
|
+
const code2 = error2 instanceof MessageSizeExceededError ? 1009 : 1007;
|
|
116503
|
+
failWebsocketConnection(__privateGet(this, _handler), code2, error2.message);
|
|
115279
116504
|
return;
|
|
115280
116505
|
}
|
|
115281
116506
|
this.writeFragments(data);
|
|
@@ -115559,6 +116784,16 @@ function requireWebsocket() {
|
|
|
115559
116784
|
const { SendQueue } = requireSender();
|
|
115560
116785
|
const { WebsocketFrameSend } = requireFrame();
|
|
115561
116786
|
const { channels } = requireDiagnostics();
|
|
116787
|
+
function getSocketAddress(socket) {
|
|
116788
|
+
var _a3, _b2;
|
|
116789
|
+
if (typeof (socket == null ? void 0 : socket.address) === "function") {
|
|
116790
|
+
return socket.address();
|
|
116791
|
+
}
|
|
116792
|
+
if (typeof ((_b2 = (_a3 = socket == null ? void 0 : socket.session) == null ? void 0 : _a3.socket) == null ? void 0 : _b2.address) === "function") {
|
|
116793
|
+
return socket.session.socket.address();
|
|
116794
|
+
}
|
|
116795
|
+
return null;
|
|
116796
|
+
}
|
|
115562
116797
|
const _WebSocket = class _WebSocket extends EventTarget {
|
|
115563
116798
|
/**
|
|
115564
116799
|
* @param {string} url
|
|
@@ -115860,7 +117095,7 @@ function requireWebsocket() {
|
|
|
115860
117095
|
if (channels.open.hasSubscribers) {
|
|
115861
117096
|
const headers2 = response2.headersList.entries;
|
|
115862
117097
|
channels.open.publish({
|
|
115863
|
-
address: response2.socket
|
|
117098
|
+
address: getSocketAddress(response2.socket),
|
|
115864
117099
|
protocol: __privateGet(this, _protocol),
|
|
115865
117100
|
extensions: __privateGet(this, _extensions),
|
|
115866
117101
|
websocket: this,
|
|
@@ -116297,12 +117532,6 @@ function requireWebsocketstream() {
|
|
|
116297
117532
|
start: (controller) => {
|
|
116298
117533
|
__privateSet(this, _readableStreamController, controller);
|
|
116299
117534
|
},
|
|
116300
|
-
pull(controller) {
|
|
116301
|
-
let chunk;
|
|
116302
|
-
while (controller.desiredSize > 0 && (chunk = response2.socket.read()) !== null) {
|
|
116303
|
-
controller.enqueue(chunk);
|
|
116304
|
-
}
|
|
116305
|
-
},
|
|
116306
117535
|
cancel: (reason) => __privateMethod(this, _WebSocketStream_instances, cancel_fn).call(this, reason)
|
|
116307
117536
|
});
|
|
116308
117537
|
const writable = new WritableStream({
|
|
@@ -116329,7 +117558,7 @@ function requireWebsocketstream() {
|
|
|
116329
117558
|
try {
|
|
116330
117559
|
chunk = utf8Decode(data);
|
|
116331
117560
|
} catch {
|
|
116332
|
-
failWebsocketConnection(__privateGet(this, _handler), "Received invalid UTF-8 in text frame.");
|
|
117561
|
+
failWebsocketConnection(__privateGet(this, _handler), 1007, "Received invalid UTF-8 in text frame.");
|
|
116333
117562
|
return;
|
|
116334
117563
|
}
|
|
116335
117564
|
} else if (type === opcodes.BINARY) {
|
|
@@ -116453,7 +117682,7 @@ var hasRequiredEventsourceStream;
|
|
|
116453
117682
|
function requireEventsourceStream() {
|
|
116454
117683
|
if (hasRequiredEventsourceStream) return eventsourceStream;
|
|
116455
117684
|
hasRequiredEventsourceStream = 1;
|
|
116456
|
-
const { Transform: Transform2 } = require$$0$
|
|
117685
|
+
const { Transform: Transform2 } = require$$0$4;
|
|
116457
117686
|
const { isASCIINumber, isValidLastEventId } = requireUtil();
|
|
116458
117687
|
const BOM = [239, 187, 191];
|
|
116459
117688
|
const LF = 10;
|
|
@@ -116685,7 +117914,7 @@ function requireEventsource() {
|
|
|
116685
117914
|
var _events, _url2, _withCredentials, _readyState, _request, _controller, _dispatcher2, _state, _EventSource_instances, connect_fn, reconnect_fn;
|
|
116686
117915
|
if (hasRequiredEventsource) return eventsource;
|
|
116687
117916
|
hasRequiredEventsource = 1;
|
|
116688
|
-
const { pipeline } = require$$0$
|
|
117917
|
+
const { pipeline } = require$$0$4;
|
|
116689
117918
|
const { fetching } = requireFetch();
|
|
116690
117919
|
const { makeRequest: makeRequest2 } = requireRequest();
|
|
116691
117920
|
const { webidl } = requireWebidl();
|
|
@@ -117022,6 +118251,7 @@ function requireUndici() {
|
|
|
117022
118251
|
const RoundRobinPool = requireRoundRobinPool();
|
|
117023
118252
|
const Agent = requireAgent();
|
|
117024
118253
|
const ProxyAgent = requireProxyAgent();
|
|
118254
|
+
const Socks5ProxyAgent = requireSocks5ProxyAgent();
|
|
117025
118255
|
const EnvHttpProxyAgent = requireEnvHttpProxyAgent();
|
|
117026
118256
|
const RetryAgent = requireRetryAgent();
|
|
117027
118257
|
const H2CClient = requireH2cClient();
|
|
@@ -117048,6 +118278,7 @@ function requireUndici() {
|
|
|
117048
118278
|
module.exports.RoundRobinPool = RoundRobinPool;
|
|
117049
118279
|
module.exports.Agent = Agent;
|
|
117050
118280
|
module.exports.ProxyAgent = ProxyAgent;
|
|
118281
|
+
module.exports.Socks5ProxyAgent = Socks5ProxyAgent;
|
|
117051
118282
|
module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent;
|
|
117052
118283
|
module.exports.RetryAgent = RetryAgent;
|
|
117053
118284
|
module.exports.H2CClient = H2CClient;
|
|
@@ -118814,7 +120045,7 @@ function createLocalWorld(args) {
|
|
|
118814
120045
|
const basedir = mergedConfig.dataDir;
|
|
118815
120046
|
const hooksDir = path$3.join(basedir, "hooks");
|
|
118816
120047
|
const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
|
|
118817
|
-
const { HookSchema: HookSchema2 } = await import("./index-
|
|
120048
|
+
const { HookSchema: HookSchema2 } = await import("./index-BUU6Hdm_.js");
|
|
118818
120049
|
await Promise.all(taggedHookFiles.map(async (hookFile) => {
|
|
118819
120050
|
const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
|
|
118820
120051
|
if (hook == null ? void 0 : hook.token) {
|
|
@@ -118966,8 +120197,8 @@ function requireGetVercelOidcToken() {
|
|
|
118966
120197
|
}
|
|
118967
120198
|
try {
|
|
118968
120199
|
const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
|
|
118969
|
-
await import("./token-util-
|
|
118970
|
-
await import("./token-
|
|
120200
|
+
await import("./token-util-Bc0jltWL.js").then((n) => n.t),
|
|
120201
|
+
await import("./token-BaJALexf.js").then((n) => n.t)
|
|
118971
120202
|
]);
|
|
118972
120203
|
if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
|
|
118973
120204
|
await refreshToken(options);
|
|
@@ -119531,7 +120762,10 @@ function requireDist() {
|
|
|
119531
120762
|
}
|
|
119532
120763
|
var distExports = requireDist();
|
|
119533
120764
|
let _dispatcher;
|
|
119534
|
-
function getDispatcher() {
|
|
120765
|
+
function getDispatcher(config2) {
|
|
120766
|
+
return (config2 == null ? void 0 : config2.dispatcher) ?? getDefaultDispatcher();
|
|
120767
|
+
}
|
|
120768
|
+
function getDefaultDispatcher() {
|
|
119535
120769
|
if (!_dispatcher) {
|
|
119536
120770
|
_dispatcher = new undiciExports.RetryAgent(new undiciExports.Agent({
|
|
119537
120771
|
connections: 8,
|
|
@@ -119592,7 +120826,7 @@ async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
|
119592
120826
|
Authorization: `Bearer ${token}`
|
|
119593
120827
|
},
|
|
119594
120828
|
// @ts-expect-error -- undici dispatcher is accepted by Node.js fetch but not in @types/node's RequestInit
|
|
119595
|
-
dispatcher: getDispatcher()
|
|
120829
|
+
dispatcher: getDispatcher({ dispatcher: options == null ? void 0 : options.dispatcher })
|
|
119596
120830
|
});
|
|
119597
120831
|
if (!response2.ok) {
|
|
119598
120832
|
let body2;
|
|
@@ -119613,7 +120847,7 @@ async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
|
119613
120847
|
}
|
|
119614
120848
|
return Buffer.from(result.data.key, "base64");
|
|
119615
120849
|
}
|
|
119616
|
-
function createGetEncryptionKeyForRun(projectId, teamId, token) {
|
|
120850
|
+
function createGetEncryptionKeyForRun(projectId, teamId, token, dispatcher2) {
|
|
119617
120851
|
if (!projectId)
|
|
119618
120852
|
return void 0;
|
|
119619
120853
|
const isServerlessRuntime = process.env.VERCEL === "1";
|
|
@@ -119640,7 +120874,11 @@ function createGetEncryptionKeyForRun(projectId, teamId, token) {
|
|
|
119640
120874
|
}
|
|
119641
120875
|
if (!deploymentId)
|
|
119642
120876
|
return void 0;
|
|
119643
|
-
return fetchRunKey(deploymentId, projectId, runId, {
|
|
120877
|
+
return fetchRunKey(deploymentId, projectId, runId, {
|
|
120878
|
+
token,
|
|
120879
|
+
teamId,
|
|
120880
|
+
dispatcher: dispatcher2
|
|
120881
|
+
});
|
|
119644
120882
|
};
|
|
119645
120883
|
}
|
|
119646
120884
|
let otelApiPromise = null;
|
|
@@ -122616,7 +123854,13 @@ function parseBinaryHeaders(headers2) {
|
|
|
122616
123854
|
`Missing required CloudEvent headers: ${missingFields.join(", ")}`
|
|
122617
123855
|
);
|
|
122618
123856
|
}
|
|
122619
|
-
const
|
|
123857
|
+
const rawRegion = getHeader(headers2, "ce-vqsregion") ?? void 0;
|
|
123858
|
+
if (rawRegion !== void 0 && !/^[a-z]{2,5}[0-9]{1,2}$/.test(rawRegion)) {
|
|
123859
|
+
throw new Error(
|
|
123860
|
+
`Invalid ce-vqsregion header: ${JSON.stringify(rawRegion)}. Region must match /^[a-z]{2,5}[0-9]{1,2}$/ (e.g. "iad1", "lhr1").`
|
|
123861
|
+
);
|
|
123862
|
+
}
|
|
123863
|
+
const region = rawRegion;
|
|
122620
123864
|
const base = {
|
|
122621
123865
|
queueName,
|
|
122622
123866
|
consumerGroup,
|
|
@@ -123465,6 +124709,14 @@ function parseQueueHeaders(headers2) {
|
|
|
123465
124709
|
receiptHandle
|
|
123466
124710
|
};
|
|
123467
124711
|
}
|
|
124712
|
+
var REGION_PATTERN = /^[a-z]{2,5}[0-9]{1,2}$/;
|
|
124713
|
+
function validateRegion(region) {
|
|
124714
|
+
if (!REGION_PATTERN.test(region)) {
|
|
124715
|
+
throw new Error(
|
|
124716
|
+
`Invalid region code: ${JSON.stringify(region)}. Region must match the pattern /^[a-z]{2,5}[0-9]{1,2}$/ (e.g. "iad1", "lhr1").`
|
|
124717
|
+
);
|
|
124718
|
+
}
|
|
124719
|
+
}
|
|
123468
124720
|
var DEFAULT_BASE_URL_RESOLVER = (region) => new URL(`https://${region}.vercel-queue.com`);
|
|
123469
124721
|
function resolveBaseUrl(region, resolver2) {
|
|
123470
124722
|
return (resolver2 ?? DEFAULT_BASE_URL_RESOLVER)(region);
|
|
@@ -123482,6 +124734,7 @@ var ApiClient = class _ApiClient {
|
|
|
123482
124734
|
__publicField(this, "region");
|
|
123483
124735
|
__publicField(this, "baseUrlResolver");
|
|
123484
124736
|
__publicField(this, "dispatcher");
|
|
124737
|
+
validateRegion(options.region);
|
|
123485
124738
|
this.region = options.region;
|
|
123486
124739
|
this.baseUrlResolver = options.resolveBaseUrl;
|
|
123487
124740
|
this.baseUrl = resolveBaseUrl(this.region, this.baseUrlResolver);
|
|
@@ -123596,7 +124849,7 @@ Cause: ${cause}`
|
|
|
123596
124849
|
}
|
|
123597
124850
|
console.debug("[VQS Debug] Request:", JSON.stringify(logData, null, 2));
|
|
123598
124851
|
}
|
|
123599
|
-
init2.headers.set("User-Agent", `@vercel/queue/${"0.1
|
|
124852
|
+
init2.headers.set("User-Agent", `@vercel/queue/${"0.2.1"}`);
|
|
123600
124853
|
init2.headers.set("Vqs-Client-Ts", (/* @__PURE__ */ new Date()).toISOString());
|
|
123601
124854
|
const fetchInit = this.dispatcher ? { ...init2, dispatcher: this.dispatcher } : init2;
|
|
123602
124855
|
const response2 = await fetch(url2, fetchInit);
|
|
@@ -124138,7 +125391,7 @@ var QueueClient = class {
|
|
|
124138
125391
|
setApi(this, new ApiClient({ ...options, region }));
|
|
124139
125392
|
}
|
|
124140
125393
|
};
|
|
124141
|
-
const version = "5.0.0-beta.
|
|
125394
|
+
const version = "5.0.0-beta.11";
|
|
124142
125395
|
const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
|
|
124143
125396
|
function httpLog(method, endpoint, status, ms2) {
|
|
124144
125397
|
if (HTTP_DEBUG_ENABLED) {
|
|
@@ -124259,7 +125512,7 @@ async function makeRequest({ endpoint, options = {}, config: config2 = {}, schem
|
|
|
124259
125512
|
let response2;
|
|
124260
125513
|
try {
|
|
124261
125514
|
response2 = await fetch(request2, {
|
|
124262
|
-
dispatcher: getDispatcher()
|
|
125515
|
+
dispatcher: getDispatcher(config2)
|
|
124263
125516
|
});
|
|
124264
125517
|
} catch (error2) {
|
|
124265
125518
|
const elapsed = Date.now() - fetchStart;
|
|
@@ -124495,7 +125748,7 @@ function createQueue$1(config2) {
|
|
|
124495
125748
|
const dualTransport = new DualTransport();
|
|
124496
125749
|
const clientOptions = {
|
|
124497
125750
|
region,
|
|
124498
|
-
dispatcher: getDispatcher(),
|
|
125751
|
+
dispatcher: getDispatcher(config2),
|
|
124499
125752
|
transport: dualTransport,
|
|
124500
125753
|
...usingProxy && {
|
|
124501
125754
|
// final path will be /queues-proxy/api/v3/topic/...
|
|
@@ -124611,7 +125864,7 @@ function createResolveLatestDeploymentId(config2) {
|
|
|
124611
125864
|
Authorization: `Bearer ${token}`
|
|
124612
125865
|
},
|
|
124613
125866
|
// @ts-expect-error -- undici dispatcher is accepted by Node.js fetch but not in @types/node's RequestInit
|
|
124614
|
-
dispatcher: getDispatcher()
|
|
125867
|
+
dispatcher: getDispatcher(config2)
|
|
124615
125868
|
});
|
|
124616
125869
|
if (!response2.ok) {
|
|
124617
125870
|
let body2;
|
|
@@ -124662,7 +125915,7 @@ async function resolveRefDescriptor(descriptor, runId, config2) {
|
|
|
124662
125915
|
const response2 = await fetch(url2, {
|
|
124663
125916
|
method: "GET",
|
|
124664
125917
|
headers: headers2,
|
|
124665
|
-
dispatcher: getDispatcher()
|
|
125918
|
+
dispatcher: getDispatcher(config2)
|
|
124666
125919
|
});
|
|
124667
125920
|
span == null ? void 0 : span.setAttributes({
|
|
124668
125921
|
...HttpResponseStatusCode(response2.status)
|
|
@@ -125478,7 +126731,7 @@ function createVercelWorld(config2) {
|
|
|
125478
126731
|
...createQueue$1(config2),
|
|
125479
126732
|
...createStorage(config2),
|
|
125480
126733
|
...instrumentObject("world.streams", createStreamer(config2)),
|
|
125481
|
-
getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, (_b2 = config2 == null ? void 0 : config2.projectConfig) == null ? void 0 : _b2.teamId, config2 == null ? void 0 : config2.token),
|
|
126734
|
+
getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, (_b2 = config2 == null ? void 0 : config2.projectConfig) == null ? void 0 : _b2.teamId, config2 == null ? void 0 : config2.token, config2 == null ? void 0 : config2.dispatcher),
|
|
125482
126735
|
resolveLatestDeploymentId: createResolveLatestDeploymentId(config2)
|
|
125483
126736
|
};
|
|
125484
126737
|
}
|
|
@@ -152132,7 +153385,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
152132
153385
|
__proto__: null,
|
|
152133
153386
|
loader
|
|
152134
153387
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
152135
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-DOJDY_4b.js", "imports": ["/assets/index-BXZSIDEp.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-
|
|
153388
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-DOJDY_4b.js", "imports": ["/assets/index-BXZSIDEp.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-8wYQKqnE.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js"], "css": ["/assets/root-DvB36HGI.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-BQRPxkXT.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-CxZS9r2o.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-Dn4QeKHW.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-CxZS9r2o.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js", "/assets/encryption-g14N5vQl.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-b8838010.js", "version": "b8838010", "sri": void 0 };
|
|
152136
153389
|
const assetsBuildDirectory = "build/client";
|
|
152137
153390
|
const basename = "/";
|
|
152138
153391
|
const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
|