diff --git a/.github/workflows/reusable-release.yml b/.github/workflows/reusable-release.yml index 9236860c98..59ee714982 100644 --- a/.github/workflows/reusable-release.yml +++ b/.github/workflows/reusable-release.yml @@ -14,6 +14,9 @@ on: wombot-token: description: 'The Wombat release-backed publish token' required: true + angular-robot-key: + description: 'The private key for the Angular Robot Github app' + required: true permissions: {} @@ -113,7 +116,7 @@ jobs: needs: [build, approve] runs-on: ubuntu-latest permissions: - contents: write # Required for ng-dev to create GitHub releases/tags + contents: read id-token: write # Required to generate NPM/Sigstore provenance metadata steps: # Step 1: Checkout dev-infra dynamically at the same ref to get the custom actions @@ -136,7 +139,10 @@ jobs: name: release-packages path: dist/packages-dist/ - - name: Run ng-dev CI publish - env: - WOMBOT_TOKEN: ${{ secrets.wombot-token }} - run: pnpm ng-dev release publish-ci --built-packages-dir=dist/packages-dist/ --expected-sha=${{ github.sha }} + - name: Run ng-dev CI publish (via custom action) + uses: ./.dev-infra/github-actions/release/publish + with: + angular-robot-key: ${{ secrets.angular-robot-key }} + wombot-token: ${{ secrets.wombot-token }} + built-packages-dir: dist/packages-dist/ + expected-sha: ${{ github.sha }} diff --git a/.prettierignore b/.prettierignore index 40badca244..235a0656d5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,6 +12,7 @@ github-actions/labeling/pull-request/main.js github-actions/google-internal-tests/main.js github-actions/org-file-sync/main.js github-actions/post-approval-changes/main.js +github-actions/release/publish/main.js github-actions/previews/pack-and-upload-artifact/inject-artifact-metadata.js github-actions/previews/pack-and-upload-artifact/remove-preview-label.js github-actions/previews/upload-artifacts-to-firebase/extract-artifact-metadata.js diff --git a/github-actions/release/publish/BUILD.bazel b/github-actions/release/publish/BUILD.bazel new file mode 100644 index 0000000000..ce7961ddfc --- /dev/null +++ b/github-actions/release/publish/BUILD.bazel @@ -0,0 +1,71 @@ +load("@devinfra_npm//:defs.bzl", "npm_link_all_packages") +load("//tools:defaults.bzl", "esbuild_checked_in", "jasmine_test", "ts_project") + +package(default_visibility = ["//github-actions/release/publish:__subpackages__"]) + +npm_link_all_packages() + +ts_project( + name = "lib", + srcs = [ + "lib/main.ts", + "lib/publish-ci.ts", + ], + tsconfig = "//github-actions:tsconfig", + deps = [ + "//github-actions:utils", + "//github-actions/release/publish:node_modules/@actions/core", + "//github-actions/release/publish:node_modules/@types/node", + "//github-actions/release/publish:node_modules/@types/semver", + "//github-actions/release/publish:node_modules/semver", + "//ng-dev/release/config", + "//ng-dev/release/notes", + "//ng-dev/release/publish", + "//ng-dev/release/versioning", + "//ng-dev/utils", + ], +) + +esbuild_checked_in( + name = "main", + srcs = [ + ":lib", + ], + entry_point = "lib/main.ts", + format = "esm", + platform = "node", + target = "node24", +) + +ts_project( + name = "test_lib", + testonly = True, + srcs = ["lib/publish-ci.spec.ts"], + tsconfig = "//github-actions:tsconfig_test", + deps = [ + ":lib", + "//github-actions:utils", + "//github-actions/release/publish:node_modules/@types/jasmine", + "//github-actions/release/publish:node_modules/@types/node", + "//github-actions/release/publish:node_modules/@types/semver", + "//github-actions/release/publish:node_modules/semver", + "//ng-dev/release/config", + "//ng-dev/release/notes", + "//ng-dev/release/publish/test:test_lib", + "//ng-dev/release/versioning", + "//ng-dev/utils", + "//ng-dev/utils/testing", + ], +) + +jasmine_test( + name = "test", + data = [ + ":test_lib", + ], + env = { + "GIT_BIN": "$(GIT_BIN_PATH)", + }, + shard_count = 4, + toolchains = ["@devinfra//bazel/git-toolchain:current_git_toolchain"], +) diff --git a/github-actions/release/publish/action.yml b/github-actions/release/publish/action.yml new file mode 100644 index 0000000000..ac9bc7a9cf --- /dev/null +++ b/github-actions/release/publish/action.yml @@ -0,0 +1,23 @@ +name: 'Release Publish CI' +description: 'Publishes a release to Wombat (NPM) and creates GitHub tags/releases using the Angular Robot App.' +author: 'Angular' +inputs: + angular-robot-key: + description: 'The private key for the Angular Robot Github app.' + required: true + wombot-token: + description: 'The Wombat release-backed publish token.' + required: true + built-packages-dir: + description: 'Path to the directory containing pre-built packages.' + required: true + expected-sha: + description: 'The expected Git SHA of the release commit.' + required: true + dry-run: + description: 'Run the publish command in dry-run mode, skipping tag/release creation and NPM publishing.' + required: false + default: 'false' +runs: + using: 'node24' + main: 'main.js' diff --git a/github-actions/release/publish/lib/main.ts b/github-actions/release/publish/lib/main.ts new file mode 100644 index 0000000000..4a50f6e3a3 --- /dev/null +++ b/github-actions/release/publish/lib/main.ts @@ -0,0 +1,48 @@ +import * as core from '@actions/core'; +import {getAuthTokenFor, ANGULAR_ROBOT} from '../../../utils.js'; +import {AuthenticatedGitClient} from '../../../../ng-dev/utils/git/authenticated-git-client.js'; +import {getConfig, assertValidGithubConfig} from '../../../../ng-dev/utils/config.js'; +import {assertValidReleaseConfig} from '../../../../ng-dev/release/config/index.js'; +import {PublishCiTool} from './publish-ci.js'; + +async function run() { + try { + const token = await getAuthTokenFor(ANGULAR_ROBOT); + core.setSecret(token); + + const wombotToken = core.getInput('wombot-token', {required: true}); + process.env['WOMBOT_TOKEN'] = wombotToken; + + core.info('Configuring AuthenticatedGitClient with generated token...'); + AuthenticatedGitClient.configure(token, 'bot'); + + core.info('Loading repository configuration...'); + const config = await getConfig(); + assertValidReleaseConfig(config); + assertValidGithubConfig(config); + + core.info('Initializing Git client...'); + const git = await AuthenticatedGitClient.get(); + + core.info('Starting PublishCiTool...'); + const tool = new PublishCiTool(config, git, git.baseDir, { + builtPackagesDir: core.getInput('built-packages-dir', {required: true}), + expectedSha: core.getInput('expected-sha', {required: true}), + dryRun: core.getBooleanInput('dry-run', {required: false}), + }); + + await tool.run(); + core.info('Release Publish CI completed successfully.'); + } catch (e) { + if (e instanceof Error) { + core.setFailed(e.message); + if (e.stack) { + core.debug(e.stack); + } + } else { + core.setFailed(`Unknown error: ${e}`); + } + } +} + +await run(); diff --git a/ng-dev/release/publish/test/publish-ci.spec.ts b/github-actions/release/publish/lib/publish-ci.spec.ts similarity index 97% rename from ng-dev/release/publish/test/publish-ci.spec.ts rename to github-actions/release/publish/lib/publish-ci.spec.ts index 1692baf684..ed4ff27dc4 100644 --- a/ng-dev/release/publish/test/publish-ci.spec.ts +++ b/github-actions/release/publish/lib/publish-ci.spec.ts @@ -6,26 +6,26 @@ * found in the LICENSE file at https://angular.io/license */ -import {PublishCiTool} from '../index-ci.js'; -import {ReleaseConfig} from '../../config/index.js'; -import {GithubConfig, setConfig} from '../../../utils/config.js'; +import {PublishCiTool} from './publish-ci.js'; +import {ReleaseConfig} from '../../../../ng-dev/release/config/index.js'; +import {GithubConfig, setConfig} from '../../../../ng-dev/utils/config.js'; import { getMockGitClient, installSandboxGitClient, SandboxGitRepo, testTmpDir, runGitInTmpDir, -} from '../../../utils/testing/index.js'; -import {prepareTempDirectory} from './test-utils/action-mocks.js'; -import {fakeNpmPackageQueryRequest} from './test-utils/test-utils.js'; -import {ReleaseNotes} from '../../notes/release-notes.js'; -import {NpmCommand} from '../../versioning/npm-command.js'; -import {ActiveReleaseTrains} from '../../versioning/active-release-trains.js'; -import {ReleaseTrain} from '../../versioning/release-trains.js'; +} from '../../../../ng-dev/utils/testing/index.js'; +import {prepareTempDirectory} from '../../../../ng-dev/release/publish/test/test-utils/action-mocks.js'; +import {fakeNpmPackageQueryRequest} from '../../../../ng-dev/release/publish/test/test-utils/test-utils.js'; +import {ReleaseNotes} from '../../../../ng-dev/release/notes/release-notes.js'; +import {NpmCommand} from '../../../../ng-dev/release/versioning/npm-command.js'; +import {ActiveReleaseTrains} from '../../../../ng-dev/release/versioning/active-release-trains.js'; +import {ReleaseTrain} from '../../../../ng-dev/release/versioning/release-trains.js'; import semver from 'semver'; import * as fs from 'fs'; import * as path from 'path'; -import {Log} from '../../../utils/logging.js'; +import {Log} from '../../../../ng-dev/utils/logging.js'; class RequestError extends Error { request = {}; diff --git a/ng-dev/release/publish/index-ci.ts b/github-actions/release/publish/lib/publish-ci.ts similarity index 93% rename from ng-dev/release/publish/index-ci.ts rename to github-actions/release/publish/lib/publish-ci.ts index f93569125f..adebefcd62 100644 --- a/ng-dev/release/publish/index-ci.ts +++ b/github-actions/release/publish/lib/publish-ci.ts @@ -18,19 +18,26 @@ import { } from 'fs'; import {tmpdir} from 'os'; import semver from 'semver'; -import {ReleaseConfig, BuiltPackage, BuiltPackageWithInfo} from '../config/index.js'; -import {analyzeAndExtendBuiltPackagesWithInfo} from './built-package-info.js'; -import {GithubConfig, NgDevConfig} from '../../utils/config.js'; -import {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js'; -import {ReleaseNotes, workspaceRelativeChangelogPath} from '../notes/release-notes.js'; -import {NpmCommand} from '../versioning/npm-command.js'; -import {getFileContentsUrl} from '../../utils/git/github-urls.js'; -import {isGithubApiError} from '../../utils/git/github.js'; -import {githubReleaseBodyLimit} from './constants.js'; -import {green, Log} from '../../utils/logging.js'; -import {fetchLongTermSupportBranchesFromNpm} from '../versioning/long-term-support.js'; -import {ActiveReleaseTrains} from '../versioning/active-release-trains.js'; -import {NpmDistTag} from '../versioning/npm-registry.js'; +import { + ReleaseConfig, + BuiltPackage, + BuiltPackageWithInfo, +} from '../../../../ng-dev/release/config/index.js'; +import {analyzeAndExtendBuiltPackagesWithInfo} from '../../../../ng-dev/release/publish/built-package-info.js'; +import {GithubConfig, NgDevConfig} from '../../../../ng-dev/utils/config.js'; +import {AuthenticatedGitClient} from '../../../../ng-dev/utils/git/authenticated-git-client.js'; +import { + ReleaseNotes, + workspaceRelativeChangelogPath, +} from '../../../../ng-dev/release/notes/release-notes.js'; +import {NpmCommand} from '../../../../ng-dev/release/versioning/npm-command.js'; +import {getFileContentsUrl} from '../../../../ng-dev/utils/git/github-urls.js'; +import {isGithubApiError} from '../../../../ng-dev/utils/git/github.js'; +import {githubReleaseBodyLimit} from '../../../../ng-dev/release/publish/constants.js'; +import {green, Log} from '../../../../ng-dev/utils/logging.js'; +import {fetchLongTermSupportBranchesFromNpm} from '../../../../ng-dev/release/versioning/long-term-support.js'; +import {ActiveReleaseTrains} from '../../../../ng-dev/release/versioning/active-release-trains.js'; +import {NpmDistTag} from '../../../../ng-dev/release/versioning/npm-registry.js'; /** Options for configuring the PublishCiTool. */ export interface PublishCiToolOptions { diff --git a/github-actions/release/publish/main.js b/github-actions/release/publish/main.js new file mode 100644 index 0000000000..825f0abc35 --- /dev/null +++ b/github-actions/release/publish/main.js @@ -0,0 +1,53822 @@ +import { createRequire as _esbuildBannerCreateRequire } from 'node:module';globalThis['require'] ??= _esbuildBannerCreateRequire(import.meta.url); +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] +}) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); +}); +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// +var require_tunnel = __commonJS({ + ""(exports) { + "use strict"; + var net = __require("net"); + var tls = __require("tls"); + var http = __require("http"); + var https = __require("https"); + var events = __require("events"); + var assert2 = __require("assert"); + var util = __require("util"); + exports.httpOverHttp = httpOverHttp2; + exports.httpsOverHttp = httpsOverHttp2; + exports.httpOverHttps = httpOverHttps2; + exports.httpsOverHttps = httpsOverHttps2; + function httpOverHttp2(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; + } + function httpsOverHttp2(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; + } + function httpOverHttps2(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; + } + function httpsOverHttps2(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; + } + function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + self.on("free", function onFree(socket, host, port, localAddress) { + var options2 = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options2.host && pending.port === options2.port) { + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); + } + util.inherits(TunnelingAgent, events.EventEmitter); + TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({ request: req }, self.options, toOptions(host, port, localAddress)); + if (self.sockets.length >= this.maxSockets) { + self.requests.push(options); + return; + } + self.createSocket(options, function(socket) { + socket.on("free", onFree); + socket.on("close", onCloseOrRemove); + socket.on("agentRemove", onCloseOrRemove); + req.onSocket(socket); + function onFree() { + self.emit("free", socket, options); + } + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener("free", onFree); + socket.removeListener("close", onCloseOrRemove); + socket.removeListener("agentRemove", onCloseOrRemove); + } + }); + }; + TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: "CONNECT", + path: options.host + ":" + options.port, + agent: false, + headers: { + host: options.host + ":" + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); + } + debug2("making CONNECT request"); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; + connectReq.once("response", onResponse); + connectReq.once("upgrade", onUpgrade); + connectReq.once("connect", onConnect); + connectReq.once("error", onError); + connectReq.end(); + function onResponse(res) { + res.upgrade = true; + } + function onUpgrade(res, socket, head) { + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + if (res.statusCode !== 200) { + debug2( + "tunneling socket could not be established, statusCode=%d", + res.statusCode + ); + socket.destroy(); + var error2 = new Error("tunneling socket could not be established, statusCode=" + res.statusCode); + error2.code = "ECONNRESET"; + options.request.emit("error", error2); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug2("got illegal response body from proxy"); + socket.destroy(); + var error2 = new Error("got illegal response body from proxy"); + error2.code = "ECONNRESET"; + options.request.emit("error", error2); + self.removeSocket(placeholder); + return; + } + debug2("tunneling connection has established"); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + function onError(cause) { + connectReq.removeAllListeners(); + debug2( + "tunneling socket could not be established, cause=%s\n", + cause.message, + cause.stack + ); + var error2 = new Error("tunneling socket could not be established, cause=" + cause.message); + error2.code = "ECONNRESET"; + options.request.emit("error", error2); + self.removeSocket(placeholder); + } + }; + TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket); + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + var pending = this.requests.shift(); + if (pending) { + this.createSocket(pending, function(socket2) { + pending.request.onSocket(socket2); + }); + } + }; + function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader("host"); + var tlsOptions = mergeOptions({}, self.options, { + socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, "") : options.host + }); + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); + } + function toOptions(host, port, localAddress) { + if (typeof host === "string") { + return { + host, + port, + localAddress + }; + } + return host; + } + function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === "object") { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== void 0) { + target[k] = overrides[k]; + } + } + } + } + return target; + } + var debug2; + if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug2 = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === "string") { + args[0] = "TUNNEL: " + args[0]; + } else { + args.unshift("TUNNEL:"); + } + console.error.apply(console, args); + }; + } else { + debug2 = function() { + }; + } + exports.debug = debug2; + } +}); + +// +var require_tunnel2 = __commonJS({ + ""(exports, module) { + module.exports = require_tunnel(); + } +}); + +// +var require_symbols = __commonJS({ + ""(exports, module) { + module.exports = { + kClose: Symbol("close"), + kDestroy: Symbol("destroy"), + kDispatch: Symbol("dispatch"), + kUrl: Symbol("url"), + kWriting: Symbol("writing"), + kResuming: Symbol("resuming"), + kQueue: Symbol("queue"), + kConnect: Symbol("connect"), + kConnecting: Symbol("connecting"), + kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"), + kKeepAliveMaxTimeout: Symbol("max keep alive timeout"), + kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"), + kKeepAliveTimeoutValue: Symbol("keep alive timeout"), + kKeepAlive: Symbol("keep alive"), + kHeadersTimeout: Symbol("headers timeout"), + kBodyTimeout: Symbol("body timeout"), + kServerName: Symbol("server name"), + kLocalAddress: Symbol("local address"), + kHost: Symbol("host"), + kNoRef: Symbol("no ref"), + kBodyUsed: Symbol("used"), + kBody: Symbol("abstracted request body"), + kRunning: Symbol("running"), + kBlocking: Symbol("blocking"), + kPending: Symbol("pending"), + kSize: Symbol("size"), + kBusy: Symbol("busy"), + kQueued: Symbol("queued"), + kFree: Symbol("free"), + kConnected: Symbol("connected"), + kClosed: Symbol("closed"), + kNeedDrain: Symbol("need drain"), + kReset: Symbol("reset"), + kDestroyed: Symbol.for("nodejs.stream.destroyed"), + kResume: Symbol("resume"), + kOnError: Symbol("on error"), + kMaxHeadersSize: Symbol("max headers size"), + kRunningIdx: Symbol("running index"), + kPendingIdx: Symbol("pending index"), + kError: Symbol("error"), + kClients: Symbol("clients"), + kClient: Symbol("client"), + kParser: Symbol("parser"), + kOnDestroyed: Symbol("destroy callbacks"), + kPipelining: Symbol("pipelining"), + kSocket: Symbol("socket"), + kHostHeader: Symbol("host header"), + kConnector: Symbol("connector"), + kStrictContentLength: Symbol("strict content length"), + kMaxRedirections: Symbol("maxRedirections"), + kMaxRequests: Symbol("maxRequestsPerClient"), + kProxy: Symbol("proxy agent options"), + kCounter: Symbol("socket request counter"), + kInterceptors: Symbol("dispatch interceptors"), + kMaxResponseSize: Symbol("max response size"), + kHTTP2Session: Symbol("http2Session"), + kHTTP2SessionState: Symbol("http2Session state"), + kRetryHandlerDefaultRetry: Symbol("retry agent default retry"), + kConstruct: Symbol("constructable"), + kListeners: Symbol("listeners"), + kHTTPContext: Symbol("http context"), + kMaxConcurrentStreams: Symbol("max concurrent streams"), + kNoProxyAgent: Symbol("no proxy agent"), + kHttpProxyAgent: Symbol("http proxy agent"), + kHttpsProxyAgent: Symbol("https proxy agent") + }; + } +}); + +// +var require_errors = __commonJS({ + ""(exports, module) { + "use strict"; + var kUndiciError = Symbol.for("undici.error.UND_ERR"); + var UndiciError = class extends Error { + constructor(message) { + super(message); + this.name = "UndiciError"; + this.code = "UND_ERR"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kUndiciError] === true; + } + [kUndiciError] = true; + }; + var kConnectTimeoutError = Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"); + var ConnectTimeoutError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "ConnectTimeoutError"; + this.message = message || "Connect Timeout Error"; + this.code = "UND_ERR_CONNECT_TIMEOUT"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kConnectTimeoutError] === true; + } + [kConnectTimeoutError] = true; + }; + var kHeadersTimeoutError = Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"); + var HeadersTimeoutError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "HeadersTimeoutError"; + this.message = message || "Headers Timeout Error"; + this.code = "UND_ERR_HEADERS_TIMEOUT"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kHeadersTimeoutError] === true; + } + [kHeadersTimeoutError] = true; + }; + var kHeadersOverflowError = Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"); + var HeadersOverflowError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "HeadersOverflowError"; + this.message = message || "Headers Overflow Error"; + this.code = "UND_ERR_HEADERS_OVERFLOW"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kHeadersOverflowError] === true; + } + [kHeadersOverflowError] = true; + }; + var kBodyTimeoutError = Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"); + var BodyTimeoutError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "BodyTimeoutError"; + this.message = message || "Body Timeout Error"; + this.code = "UND_ERR_BODY_TIMEOUT"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kBodyTimeoutError] === true; + } + [kBodyTimeoutError] = true; + }; + var kResponseStatusCodeError = Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"); + var ResponseStatusCodeError = class extends UndiciError { + constructor(message, statusCode, headers, body) { + super(message); + this.name = "ResponseStatusCodeError"; + this.message = message || "Response Status Code Error"; + this.code = "UND_ERR_RESPONSE_STATUS_CODE"; + this.body = body; + this.status = statusCode; + this.statusCode = statusCode; + this.headers = headers; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseStatusCodeError] === true; + } + [kResponseStatusCodeError] = true; + }; + var kInvalidArgumentError = Symbol.for("undici.error.UND_ERR_INVALID_ARG"); + var InvalidArgumentError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "InvalidArgumentError"; + this.message = message || "Invalid Argument Error"; + this.code = "UND_ERR_INVALID_ARG"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kInvalidArgumentError] === true; + } + [kInvalidArgumentError] = true; + }; + var kInvalidReturnValueError = Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"); + var InvalidReturnValueError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "InvalidReturnValueError"; + this.message = message || "Invalid Return Value Error"; + this.code = "UND_ERR_INVALID_RETURN_VALUE"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kInvalidReturnValueError] === true; + } + [kInvalidReturnValueError] = true; + }; + var kAbortError = Symbol.for("undici.error.UND_ERR_ABORT"); + var AbortError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "AbortError"; + this.message = message || "The operation was aborted"; + this.code = "UND_ERR_ABORT"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kAbortError] === true; + } + [kAbortError] = true; + }; + var kRequestAbortedError = Symbol.for("undici.error.UND_ERR_ABORTED"); + var RequestAbortedError = class extends AbortError { + constructor(message) { + super(message); + this.name = "AbortError"; + this.message = message || "Request aborted"; + this.code = "UND_ERR_ABORTED"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestAbortedError] === true; + } + [kRequestAbortedError] = true; + }; + var kInformationalError = Symbol.for("undici.error.UND_ERR_INFO"); + var InformationalError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "InformationalError"; + this.message = message || "Request information"; + this.code = "UND_ERR_INFO"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kInformationalError] === true; + } + [kInformationalError] = true; + }; + var kRequestContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"); + var RequestContentLengthMismatchError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "RequestContentLengthMismatchError"; + this.message = message || "Request body length does not match content-length header"; + this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestContentLengthMismatchError] === true; + } + [kRequestContentLengthMismatchError] = true; + }; + var kResponseContentLengthMismatchError = Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"); + var ResponseContentLengthMismatchError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "ResponseContentLengthMismatchError"; + this.message = message || "Response body length does not match content-length header"; + this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseContentLengthMismatchError] === true; + } + [kResponseContentLengthMismatchError] = true; + }; + var kClientDestroyedError = Symbol.for("undici.error.UND_ERR_DESTROYED"); + var ClientDestroyedError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "ClientDestroyedError"; + this.message = message || "The client is destroyed"; + this.code = "UND_ERR_DESTROYED"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kClientDestroyedError] === true; + } + [kClientDestroyedError] = true; + }; + var kClientClosedError = Symbol.for("undici.error.UND_ERR_CLOSED"); + var ClientClosedError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "ClientClosedError"; + this.message = message || "The client is closed"; + this.code = "UND_ERR_CLOSED"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kClientClosedError] === true; + } + [kClientClosedError] = true; + }; + var kSocketError = Symbol.for("undici.error.UND_ERR_SOCKET"); + var SocketError = class extends UndiciError { + constructor(message, socket) { + super(message); + this.name = "SocketError"; + this.message = message || "Socket error"; + this.code = "UND_ERR_SOCKET"; + this.socket = socket; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kSocketError] === true; + } + [kSocketError] = true; + }; + var kNotSupportedError = Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"); + var NotSupportedError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "NotSupportedError"; + this.message = message || "Not supported error"; + this.code = "UND_ERR_NOT_SUPPORTED"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kNotSupportedError] === true; + } + [kNotSupportedError] = true; + }; + var kBalancedPoolMissingUpstreamError = Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"); + var BalancedPoolMissingUpstreamError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "MissingUpstreamError"; + this.message = message || "No upstream has been added to the BalancedPool"; + this.code = "UND_ERR_BPL_MISSING_UPSTREAM"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kBalancedPoolMissingUpstreamError] === true; + } + [kBalancedPoolMissingUpstreamError] = true; + }; + var kHTTPParserError = Symbol.for("undici.error.UND_ERR_HTTP_PARSER"); + var HTTPParserError = class extends Error { + constructor(message, code, data) { + super(message); + this.name = "HTTPParserError"; + this.code = code ? `HPE_${code}` : void 0; + this.data = data ? data.toString() : void 0; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kHTTPParserError] === true; + } + [kHTTPParserError] = true; + }; + var kResponseExceededMaxSizeError = Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"); + var ResponseExceededMaxSizeError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "ResponseExceededMaxSizeError"; + this.message = message || "Response content exceeded max size"; + this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseExceededMaxSizeError] === true; + } + [kResponseExceededMaxSizeError] = true; + }; + var kRequestRetryError = Symbol.for("undici.error.UND_ERR_REQ_RETRY"); + var RequestRetryError = class extends UndiciError { + constructor(message, code, { headers, data }) { + super(message); + this.name = "RequestRetryError"; + this.message = message || "Request retry error"; + this.code = "UND_ERR_REQ_RETRY"; + this.statusCode = code; + this.data = data; + this.headers = headers; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestRetryError] === true; + } + [kRequestRetryError] = true; + }; + var kResponseError = Symbol.for("undici.error.UND_ERR_RESPONSE"); + var ResponseError = class extends UndiciError { + constructor(message, code, { headers, data }) { + super(message); + this.name = "ResponseError"; + this.message = message || "Response error"; + this.code = "UND_ERR_RESPONSE"; + this.statusCode = code; + this.data = data; + this.headers = headers; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseError] === true; + } + [kResponseError] = true; + }; + var kSecureProxyConnectionError = Symbol.for("undici.error.UND_ERR_PRX_TLS"); + var SecureProxyConnectionError = class extends UndiciError { + constructor(cause, message, options) { + super(message, { cause, ...options ?? {} }); + this.name = "SecureProxyConnectionError"; + this.message = message || "Secure Proxy Connection failed"; + this.code = "UND_ERR_PRX_TLS"; + this.cause = cause; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kSecureProxyConnectionError] === true; + } + [kSecureProxyConnectionError] = true; + }; + var kMessageSizeExceededError = Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"); + var MessageSizeExceededError = class extends UndiciError { + constructor(message) { + super(message); + this.name = "MessageSizeExceededError"; + this.message = message || "Max decompressed message size exceeded"; + this.code = "UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kMessageSizeExceededError] === true; + } + get [kMessageSizeExceededError]() { + return true; + } + }; + module.exports = { + AbortError, + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError, + ResponseError, + SecureProxyConnectionError, + MessageSizeExceededError + }; + } +}); + +// +var require_constants = __commonJS({ + ""(exports, module) { + "use strict"; + var headerNameLowerCasedRecord = {}; + var wellknownHeaderNames = [ + "Accept", + "Accept-Encoding", + "Accept-Language", + "Accept-Ranges", + "Access-Control-Allow-Credentials", + "Access-Control-Allow-Headers", + "Access-Control-Allow-Methods", + "Access-Control-Allow-Origin", + "Access-Control-Expose-Headers", + "Access-Control-Max-Age", + "Access-Control-Request-Headers", + "Access-Control-Request-Method", + "Age", + "Allow", + "Alt-Svc", + "Alt-Used", + "Authorization", + "Cache-Control", + "Clear-Site-Data", + "Connection", + "Content-Disposition", + "Content-Encoding", + "Content-Language", + "Content-Length", + "Content-Location", + "Content-Range", + "Content-Security-Policy", + "Content-Security-Policy-Report-Only", + "Content-Type", + "Cookie", + "Cross-Origin-Embedder-Policy", + "Cross-Origin-Opener-Policy", + "Cross-Origin-Resource-Policy", + "Date", + "Device-Memory", + "Downlink", + "ECT", + "ETag", + "Expect", + "Expect-CT", + "Expires", + "Forwarded", + "From", + "Host", + "If-Match", + "If-Modified-Since", + "If-None-Match", + "If-Range", + "If-Unmodified-Since", + "Keep-Alive", + "Last-Modified", + "Link", + "Location", + "Max-Forwards", + "Origin", + "Permissions-Policy", + "Pragma", + "Proxy-Authenticate", + "Proxy-Authorization", + "RTT", + "Range", + "Referer", + "Referrer-Policy", + "Refresh", + "Retry-After", + "Sec-WebSocket-Accept", + "Sec-WebSocket-Extensions", + "Sec-WebSocket-Key", + "Sec-WebSocket-Protocol", + "Sec-WebSocket-Version", + "Server", + "Server-Timing", + "Service-Worker-Allowed", + "Service-Worker-Navigation-Preload", + "Set-Cookie", + "SourceMap", + "Strict-Transport-Security", + "Supports-Loading-Mode", + "TE", + "Timing-Allow-Origin", + "Trailer", + "Transfer-Encoding", + "Upgrade", + "Upgrade-Insecure-Requests", + "User-Agent", + "Vary", + "Via", + "WWW-Authenticate", + "X-Content-Type-Options", + "X-DNS-Prefetch-Control", + "X-Frame-Options", + "X-Permitted-Cross-Domain-Policies", + "X-Powered-By", + "X-Requested-With", + "X-XSS-Protection" + ]; + for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = wellknownHeaderNames[i]; + const lowerCasedKey = key.toLowerCase(); + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = lowerCasedKey; + } + Object.setPrototypeOf(headerNameLowerCasedRecord, null); + module.exports = { + wellknownHeaderNames, + headerNameLowerCasedRecord + }; + } +}); + +// +var require_tree = __commonJS({ + ""(exports, module) { + "use strict"; + var { + wellknownHeaderNames, + headerNameLowerCasedRecord + } = require_constants(); + var TstNode = class _TstNode { + /** @type {any} */ + value = null; + /** @type {null | TstNode} */ + left = null; + /** @type {null | TstNode} */ + middle = null; + /** @type {null | TstNode} */ + right = null; + /** @type {number} */ + code; + /** + * @param {string} key + * @param {any} value + * @param {number} index + */ + constructor(key, value, index) { + if (index === void 0 || index >= key.length) { + throw new TypeError("Unreachable"); + } + const code = this.code = key.charCodeAt(index); + if (code > 127) { + throw new TypeError("key must be ascii string"); + } + if (key.length !== ++index) { + this.middle = new _TstNode(key, value, index); + } else { + this.value = value; + } + } + /** + * @param {string} key + * @param {any} value + */ + add(key, value) { + const length = key.length; + if (length === 0) { + throw new TypeError("Unreachable"); + } + let index = 0; + let node = this; + while (true) { + const code = key.charCodeAt(index); + if (code > 127) { + throw new TypeError("key must be ascii string"); + } + if (node.code === code) { + if (length === ++index) { + node.value = value; + break; + } else if (node.middle !== null) { + node = node.middle; + } else { + node.middle = new _TstNode(key, value, index); + break; + } + } else if (node.code < code) { + if (node.left !== null) { + node = node.left; + } else { + node.left = new _TstNode(key, value, index); + break; + } + } else if (node.right !== null) { + node = node.right; + } else { + node.right = new _TstNode(key, value, index); + break; + } + } + } + /** + * @param {Uint8Array} key + * @return {TstNode | null} + */ + search(key) { + const keylength = key.length; + let index = 0; + let node = this; + while (node !== null && index < keylength) { + let code = key[index]; + if (code <= 90 && code >= 65) { + code |= 32; + } + while (node !== null) { + if (code === node.code) { + if (keylength === ++index) { + return node; + } + node = node.middle; + break; + } + node = node.code < code ? node.left : node.right; + } + } + return null; + } + }; + var TernarySearchTree = class { + /** @type {TstNode | null} */ + node = null; + /** + * @param {string} key + * @param {any} value + * */ + insert(key, value) { + if (this.node === null) { + this.node = new TstNode(key, value, 0); + } else { + this.node.add(key, value); + } + } + /** + * @param {Uint8Array} key + * @return {any} + */ + lookup(key) { + return this.node?.search(key)?.value ?? null; + } + }; + var tree = new TernarySearchTree(); + for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]]; + tree.insert(key, key); + } + module.exports = { + TernarySearchTree, + tree + }; + } +}); + +// +var require_util = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols(); + var { IncomingMessage } = __require("node:http"); + var stream = __require("node:stream"); + var net = __require("node:net"); + var { Blob: Blob2 } = __require("node:buffer"); + var nodeUtil = __require("node:util"); + var { stringify } = __require("node:querystring"); + var { EventEmitter: EE } = __require("node:events"); + var { InvalidArgumentError } = require_errors(); + var { headerNameLowerCasedRecord } = require_constants(); + var { tree } = require_tree(); + var [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v)); + var BodyAsyncIterable = class { + constructor(body) { + this[kBody] = body; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert2(!this[kBodyUsed], "disturbed"); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + function wrapRequestBody(body) { + if (isStream(body)) { + if (bodyLength(body) === 0) { + body.on("data", function() { + assert2(false); + }); + } + if (typeof body.readableDidRead !== "boolean") { + body[kBodyUsed] = false; + EE.prototype.on.call(body, "data", function() { + this[kBodyUsed] = true; + }); + } + return body; + } else if (body && typeof body.pipeTo === "function") { + return new BodyAsyncIterable(body); + } else if (body && typeof body !== "string" && !ArrayBuffer.isView(body) && isIterable(body)) { + return new BodyAsyncIterable(body); + } else { + return body; + } + } + function nop() { + } + function isStream(obj) { + return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function"; + } + function isBlobLike(object) { + if (object === null) { + return false; + } else if (object instanceof Blob2) { + return true; + } else if (typeof object !== "object") { + return false; + } else { + const sTag = object[Symbol.toStringTag]; + return (sTag === "Blob" || sTag === "File") && ("stream" in object && typeof object.stream === "function" || "arrayBuffer" in object && typeof object.arrayBuffer === "function"); + } + } + function buildURL(url, queryParams) { + if (url.includes("?") || url.includes("#")) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); + } + const stringified = stringify(queryParams); + if (stringified) { + url += "?" + stringified; + } + return url; + } + function isValidPort(port) { + const value = parseInt(port, 10); + return value === Number(port) && value >= 0 && value <= 65535; + } + function isHttpOrHttpsPrefixed(value) { + return value != null && value[0] === "h" && value[1] === "t" && value[2] === "t" && value[3] === "p" && (value[4] === ":" || value[4] === "s" && value[5] === ":"); + } + function parseURL(url) { + if (typeof url === "string") { + url = new URL(url); + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + return url; + } + if (!url || typeof url !== "object") { + throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object."); + } + if (!(url instanceof URL)) { + if (url.port != null && url.port !== "" && isValidPort(url.port) === false) { + throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer."); + } + if (url.path != null && typeof url.path !== "string") { + throw new InvalidArgumentError("Invalid URL path: the path must be a string or null/undefined."); + } + if (url.pathname != null && typeof url.pathname !== "string") { + throw new InvalidArgumentError("Invalid URL pathname: the pathname must be a string or null/undefined."); + } + if (url.hostname != null && typeof url.hostname !== "string") { + throw new InvalidArgumentError("Invalid URL hostname: the hostname must be a string or null/undefined."); + } + if (url.origin != null && typeof url.origin !== "string") { + throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined."); + } + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; + let origin = url.origin != null ? url.origin : `${url.protocol || ""}//${url.hostname || ""}:${port}`; + let path5 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; + if (origin[origin.length - 1] === "/") { + origin = origin.slice(0, origin.length - 1); + } + if (path5 && path5[0] !== "/") { + path5 = `/${path5}`; + } + return new URL(`${origin}${path5}`); + } + if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { + throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); + } + return url; + } + function parseOrigin(url) { + url = parseURL(url); + if (url.pathname !== "/" || url.search || url.hash) { + throw new InvalidArgumentError("invalid url"); + } + return url; + } + function getHostname(host) { + if (host[0] === "[") { + const idx2 = host.indexOf("]"); + assert2(idx2 !== -1); + return host.substring(1, idx2); + } + const idx = host.indexOf(":"); + if (idx === -1) + return host; + return host.substring(0, idx); + } + function getServerName(host) { + if (!host) { + return null; + } + assert2(typeof host === "string"); + const servername = getHostname(host); + if (net.isIP(servername)) { + return ""; + } + return servername; + } + function deepClone(obj) { + return JSON.parse(JSON.stringify(obj)); + } + function isAsyncIterable(obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); + } + function isIterable(obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function")); + } + function bodyLength(body) { + if (body == null) { + return 0; + } else if (isStream(body)) { + const state = body._readableState; + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null; + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null; + } else if (isBuffer(body)) { + return body.byteLength; + } + return null; + } + function isDestroyed(body) { + return body && !!(body.destroyed || body[kDestroyed] || stream.isDestroyed?.(body)); + } + function destroy(stream2, err) { + if (stream2 == null || !isStream(stream2) || isDestroyed(stream2)) { + return; + } + if (typeof stream2.destroy === "function") { + if (Object.getPrototypeOf(stream2).constructor === IncomingMessage) { + stream2.socket = null; + } + stream2.destroy(err); + } else if (err) { + queueMicrotask(() => { + stream2.emit("error", err); + }); + } + if (stream2.destroyed !== true) { + stream2[kDestroyed] = true; + } + } + var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; + function parseKeepAliveTimeout(val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m ? parseInt(m[1], 10) * 1e3 : null; + } + function headerNameToString(value) { + return typeof value === "string" ? headerNameLowerCasedRecord[value] ?? value.toLowerCase() : tree.lookup(value) ?? value.toString("latin1").toLowerCase(); + } + function bufferToLowerCasedHeaderName(value) { + return tree.lookup(value) ?? value.toString("latin1").toLowerCase(); + } + function parseHeaders(headers, obj) { + if (obj === void 0) + obj = {}; + for (let i = 0; i < headers.length; i += 2) { + const key = headerNameToString(headers[i]); + let val = obj[key]; + if (val) { + if (typeof val === "string") { + val = [val]; + obj[key] = val; + } + val.push(headers[i + 1].toString("utf8")); + } else { + const headersValue = headers[i + 1]; + if (typeof headersValue === "string") { + obj[key] = headersValue; + } else { + obj[key] = Array.isArray(headersValue) ? headersValue.map((x) => x.toString("utf8")) : headersValue.toString("utf8"); + } + } + } + if ("content-length" in obj && "content-disposition" in obj) { + obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1"); + } + return obj; + } + function parseRawHeaders(headers) { + const len = headers.length; + const ret = new Array(len); + let hasContentLength = false; + let contentDispositionIdx = -1; + let key; + let val; + let kLen = 0; + for (let n = 0; n < headers.length; n += 2) { + key = headers[n]; + val = headers[n + 1]; + typeof key !== "string" && (key = key.toString()); + typeof val !== "string" && (val = val.toString("utf8")); + kLen = key.length; + if (kLen === 14 && key[7] === "-" && (key === "content-length" || key.toLowerCase() === "content-length")) { + hasContentLength = true; + } else if (kLen === 19 && key[7] === "-" && (key === "content-disposition" || key.toLowerCase() === "content-disposition")) { + contentDispositionIdx = n + 1; + } + ret[n] = key; + ret[n + 1] = val; + } + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1"); + } + return ret; + } + function isBuffer(buffer) { + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); + } + function validateHandler(handler2, method, upgrade) { + if (!handler2 || typeof handler2 !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + if (typeof handler2.onConnect !== "function") { + throw new InvalidArgumentError("invalid onConnect method"); + } + if (typeof handler2.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + if (typeof handler2.onBodySent !== "function" && handler2.onBodySent !== void 0) { + throw new InvalidArgumentError("invalid onBodySent method"); + } + if (upgrade || method === "CONNECT") { + if (typeof handler2.onUpgrade !== "function") { + throw new InvalidArgumentError("invalid onUpgrade method"); + } + } else { + if (typeof handler2.onHeaders !== "function") { + throw new InvalidArgumentError("invalid onHeaders method"); + } + if (typeof handler2.onData !== "function") { + throw new InvalidArgumentError("invalid onData method"); + } + if (typeof handler2.onComplete !== "function") { + throw new InvalidArgumentError("invalid onComplete method"); + } + } + } + function isDisturbed(body) { + return !!(body && (stream.isDisturbed(body) || body[kBodyUsed])); + } + function isErrored(body) { + return !!(body && stream.isErrored(body)); + } + function isReadable(body) { + return !!(body && stream.isReadable(body)); + } + function getSocketInfo(socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + }; + } + function ReadableStreamFrom(iterable) { + let iterator2; + return new ReadableStream( + { + async start() { + iterator2 = iterable[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator2.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + controller.byobRequest?.respond(0); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + if (buf.byteLength) { + controller.enqueue(new Uint8Array(buf)); + } + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator2.return(); + }, + type: "bytes" + } + ); + } + function isFormDataLike(object) { + return object && typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && object[Symbol.toStringTag] === "FormData"; + } + function addAbortListener(signal, listener) { + if ("addEventListener" in signal) { + signal.addEventListener("abort", listener, { once: true }); + return () => signal.removeEventListener("abort", listener); + } + signal.addListener("abort", listener); + return () => signal.removeListener("abort", listener); + } + var hasToWellFormed = typeof String.prototype.toWellFormed === "function"; + var hasIsWellFormed = typeof String.prototype.isWellFormed === "function"; + function toUSVString(val) { + return hasToWellFormed ? `${val}`.toWellFormed() : nodeUtil.toUSVString(val); + } + function isUSVString(val) { + return hasIsWellFormed ? `${val}`.isWellFormed() : toUSVString(val) === `${val}`; + } + function isTokenCharCode(c) { + switch (c) { + case 34: + case 40: + case 41: + case 44: + case 47: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 91: + case 92: + case 93: + case 123: + case 125: + return false; + default: + return c >= 33 && c <= 126; + } + } + function isValidHTTPToken(characters) { + if (characters.length === 0) { + return false; + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false; + } + } + return true; + } + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + function isValidHeaderValue(characters) { + return !headerCharRegex.test(characters); + } + function parseRangeHeader(range2) { + if (range2 == null || range2 === "") + return { start: 0, end: null, size: null }; + const m = range2 ? range2.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null; + return m ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } : null; + } + function addListener(obj, name, listener) { + const listeners = obj[kListeners] ??= []; + listeners.push([name, listener]); + obj.on(name, listener); + return obj; + } + function removeAllListeners(obj) { + for (const [name, listener] of obj[kListeners] ?? []) { + obj.removeListener(name, listener); + } + obj[kListeners] = null; + } + function errorRequest(client, request2, err) { + try { + request2.onError(err); + assert2(request2.aborted); + } catch (err2) { + client.emit("error", err2); + } + } + var kEnumerableProperty = /* @__PURE__ */ Object.create(null); + kEnumerableProperty.enumerable = true; + var normalizedMethodRecordsBase = { + delete: "DELETE", + DELETE: "DELETE", + get: "GET", + GET: "GET", + head: "HEAD", + HEAD: "HEAD", + options: "OPTIONS", + OPTIONS: "OPTIONS", + post: "POST", + POST: "POST", + put: "PUT", + PUT: "PUT" + }; + var normalizedMethodRecords = { + ...normalizedMethodRecordsBase, + patch: "patch", + PATCH: "PATCH" + }; + Object.setPrototypeOf(normalizedMethodRecordsBase, null); + Object.setPrototypeOf(normalizedMethodRecords, null); + module.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isUSVString, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + headerNameToString, + bufferToLowerCasedHeaderName, + addListener, + removeAllListeners, + errorRequest, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + addAbortListener, + isValidHTTPToken, + isValidHeaderValue, + isTokenCharCode, + parseRangeHeader, + normalizedMethodRecordsBase, + normalizedMethodRecords, + isValidPort, + isHttpOrHttpsPrefixed, + nodeMajor, + nodeMinor, + safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"], + wrapRequestBody + }; + } +}); + +// +var require_diagnostics = __commonJS({ + ""(exports, module) { + "use strict"; + var diagnosticsChannel = __require("node:diagnostics_channel"); + var util = __require("node:util"); + var undiciDebugLog = util.debuglog("undici"); + var fetchDebuglog = util.debuglog("fetch"); + var websocketDebuglog = util.debuglog("websocket"); + var isClientSet = false; + var channels = { + // Client + beforeConnect: diagnosticsChannel.channel("undici:client:beforeConnect"), + connected: diagnosticsChannel.channel("undici:client:connected"), + connectError: diagnosticsChannel.channel("undici:client:connectError"), + sendHeaders: diagnosticsChannel.channel("undici:client:sendHeaders"), + // Request + create: diagnosticsChannel.channel("undici:request:create"), + bodySent: diagnosticsChannel.channel("undici:request:bodySent"), + headers: diagnosticsChannel.channel("undici:request:headers"), + trailers: diagnosticsChannel.channel("undici:request:trailers"), + error: diagnosticsChannel.channel("undici:request:error"), + // WebSocket + open: diagnosticsChannel.channel("undici:websocket:open"), + close: diagnosticsChannel.channel("undici:websocket:close"), + socketError: diagnosticsChannel.channel("undici:websocket:socket_error"), + ping: diagnosticsChannel.channel("undici:websocket:ping"), + pong: diagnosticsChannel.channel("undici:websocket:pong") + }; + if (undiciDebugLog.enabled || fetchDebuglog.enabled) { + const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog; + diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog( + "connecting to %s using %s%s", + `${host}${port ? `:${port}` : ""}`, + protocol, + version + ); + }); + diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog( + "connected to %s using %s%s", + `${host}${port ? `:${port}` : ""}`, + protocol, + version + ); + }); + diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => { + const { + connectParams: { version, protocol, port, host }, + error: error2 + } = evt; + debuglog( + "connection to %s using %s%s errored - %s", + `${host}${port ? `:${port}` : ""}`, + protocol, + version, + error2.message + ); + }); + diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => { + const { + request: { method, path: path5, origin } + } = evt; + debuglog("sending request to %s %s/%s", method, origin, path5); + }); + diagnosticsChannel.channel("undici:request:headers").subscribe((evt) => { + const { + request: { method, path: path5, origin }, + response: { statusCode } + } = evt; + debuglog( + "received response to %s %s/%s - HTTP %d", + method, + origin, + path5, + statusCode + ); + }); + diagnosticsChannel.channel("undici:request:trailers").subscribe((evt) => { + const { + request: { method, path: path5, origin } + } = evt; + debuglog("trailers received from %s %s/%s", method, origin, path5); + }); + diagnosticsChannel.channel("undici:request:error").subscribe((evt) => { + const { + request: { method, path: path5, origin }, + error: error2 + } = evt; + debuglog( + "request to %s %s/%s errored - %s", + method, + origin, + path5, + error2.message + ); + }); + isClientSet = true; + } + if (websocketDebuglog.enabled) { + if (!isClientSet) { + const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog; + diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog( + "connecting to %s%s using %s%s", + host, + port ? `:${port}` : "", + protocol, + version + ); + }); + diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debuglog( + "connected to %s%s using %s%s", + host, + port ? `:${port}` : "", + protocol, + version + ); + }); + diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => { + const { + connectParams: { version, protocol, port, host }, + error: error2 + } = evt; + debuglog( + "connection to %s%s using %s%s errored - %s", + host, + port ? `:${port}` : "", + protocol, + version, + error2.message + ); + }); + diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => { + const { + request: { method, path: path5, origin } + } = evt; + debuglog("sending request to %s %s/%s", method, origin, path5); + }); + } + diagnosticsChannel.channel("undici:websocket:open").subscribe((evt) => { + const { + address: { address, port } + } = evt; + websocketDebuglog("connection opened %s%s", address, port ? `:${port}` : ""); + }); + diagnosticsChannel.channel("undici:websocket:close").subscribe((evt) => { + const { websocket, code, reason } = evt; + websocketDebuglog( + "closed connection to %s - %s %s", + websocket.url, + code, + reason + ); + }); + diagnosticsChannel.channel("undici:websocket:socket_error").subscribe((err) => { + websocketDebuglog("connection errored - %s", err.message); + }); + diagnosticsChannel.channel("undici:websocket:ping").subscribe((evt) => { + websocketDebuglog("ping received"); + }); + diagnosticsChannel.channel("undici:websocket:pong").subscribe((evt) => { + websocketDebuglog("pong received"); + }); + } + module.exports = { + channels + }; + } +}); + +// +var require_request = __commonJS({ + ""(exports, module) { + "use strict"; + var { + InvalidArgumentError, + NotSupportedError + } = require_errors(); + var assert2 = __require("node:assert"); + var { + isValidHTTPToken, + isValidHeaderValue, + isStream, + destroy, + isBuffer, + isFormDataLike, + isIterable, + isBlobLike, + buildURL, + validateHandler, + getServerName, + normalizedMethodRecords + } = require_util(); + var { channels } = require_diagnostics(); + var { headerNameLowerCasedRecord } = require_constants(); + var invalidPathRegex = /[^\u0021-\u00ff]/; + var kHandler = Symbol("handler"); + var Request = class { + constructor(origin, { + path: path5, + method, + body, + headers, + query: query2, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue, + servername + }, handler2) { + if (typeof path5 !== "string") { + throw new InvalidArgumentError("path must be a string"); + } else if (path5[0] !== "/" && !(path5.startsWith("http://") || path5.startsWith("https://")) && method !== "CONNECT") { + throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); + } else if (invalidPathRegex.test(path5)) { + throw new InvalidArgumentError("invalid request path"); + } + if (typeof method !== "string") { + throw new InvalidArgumentError("method must be a string"); + } else if (normalizedMethodRecords[method] === void 0 && !isValidHTTPToken(method)) { + throw new InvalidArgumentError("invalid request method"); + } + if (upgrade && typeof upgrade !== "string") { + throw new InvalidArgumentError("upgrade must be a string"); + } + if (upgrade && !isValidHeaderValue(upgrade)) { + throw new InvalidArgumentError("invalid upgrade header"); + } + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("invalid headersTimeout"); + } + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("invalid bodyTimeout"); + } + if (reset != null && typeof reset !== "boolean") { + throw new InvalidArgumentError("invalid reset"); + } + if (expectContinue != null && typeof expectContinue !== "boolean") { + throw new InvalidArgumentError("invalid expectContinue"); + } + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.throwOnError = throwOnError === true; + this.method = method; + this.abort = null; + if (body == null) { + this.body = null; + } else if (isStream(body)) { + this.body = body; + const rState = this.body._readableState; + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy() { + destroy(this); + }; + this.body.on("end", this.endHandler); + } + this.errorHandler = (err) => { + if (this.abort) { + this.abort(err); + } else { + this.error = err; + } + }; + this.body.on("error", this.errorHandler); + } else if (isBuffer(body)) { + this.body = body.byteLength ? body : null; + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null; + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null; + } else if (typeof body === "string") { + this.body = body.length ? Buffer.from(body) : null; + } else if (isFormDataLike(body) || isIterable(body) || isBlobLike(body)) { + this.body = body; + } else { + throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"); + } + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query2 ? buildURL(path5, query2) : path5; + this.origin = origin; + this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; + this.blocking = blocking == null ? false : blocking; + this.reset = reset == null ? null : reset; + this.host = null; + this.contentLength = null; + this.contentType = null; + this.headers = []; + this.expectContinue = expectContinue != null ? expectContinue : false; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError("headers array must be even"); + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === "object") { + if (headers[Symbol.iterator]) { + for (const header of headers) { + if (!Array.isArray(header) || header.length !== 2) { + throw new InvalidArgumentError("headers must be in key-value pair format"); + } + processHeader(this, header[0], header[1]); + } + } else { + const keys = Object.keys(headers); + for (let i = 0; i < keys.length; ++i) { + processHeader(this, keys[i], headers[keys[i]]); + } + } + } else if (headers != null) { + throw new InvalidArgumentError("headers must be an object or an array"); + } + validateHandler(handler2, method, upgrade); + this.servername = servername || getServerName(this.host); + this[kHandler] = handler2; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); + } + } + onBodySent(chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk); + } catch (err) { + this.abort(err); + } + } + } + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); + } + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent(); + } catch (err) { + this.abort(err); + } + } + } + onConnect(abort) { + assert2(!this.aborted); + assert2(!this.completed); + if (this.error) { + abort(this.error); + } else { + this.abort = abort; + return this[kHandler].onConnect(abort); + } + } + onResponseStarted() { + return this[kHandler].onResponseStarted?.(); + } + onHeaders(statusCode, headers, resume, statusText) { + assert2(!this.aborted); + assert2(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); + } + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText); + } catch (err) { + this.abort(err); + } + } + onData(chunk) { + assert2(!this.aborted); + assert2(!this.completed); + try { + return this[kHandler].onData(chunk); + } catch (err) { + this.abort(err); + return false; + } + } + onUpgrade(statusCode, headers, socket) { + assert2(!this.aborted); + assert2(!this.completed); + return this[kHandler].onUpgrade(statusCode, headers, socket); + } + onComplete(trailers) { + this.onFinally(); + assert2(!this.aborted); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); + } + try { + return this[kHandler].onComplete(trailers); + } catch (err) { + this.onError(err); + } + } + onError(error2) { + this.onFinally(); + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error: error2 }); + } + if (this.aborted) { + return; + } + this.aborted = true; + return this[kHandler].onError(error2); + } + onFinally() { + if (this.errorHandler) { + this.body.off("error", this.errorHandler); + this.errorHandler = null; + } + if (this.endHandler) { + this.body.off("end", this.endHandler); + this.endHandler = null; + } + } + addHeader(key, value) { + processHeader(this, key, value); + return this; + } + }; + function processHeader(request2, key, val) { + if (val && (typeof val === "object" && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`); + } else if (val === void 0) { + return; + } + let headerName = headerNameLowerCasedRecord[key]; + if (headerName === void 0) { + headerName = key.toLowerCase(); + if (headerNameLowerCasedRecord[headerName] === void 0 && !isValidHTTPToken(headerName)) { + throw new InvalidArgumentError("invalid header key"); + } + } + if (Array.isArray(val)) { + const arr = []; + for (let i = 0; i < val.length; i++) { + if (typeof val[i] === "string") { + if (!isValidHeaderValue(val[i])) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + arr.push(val[i]); + } else if (val[i] === null) { + arr.push(""); + } else if (typeof val[i] === "object") { + throw new InvalidArgumentError(`invalid ${key} header`); + } else { + arr.push(`${val[i]}`); + } + } + val = arr; + } else if (typeof val === "string") { + if (!isValidHeaderValue(val)) { + throw new InvalidArgumentError(`invalid ${key} header`); + } + } else if (val === null) { + val = ""; + } else { + val = `${val}`; + } + if (headerName === "host") { + if (request2.host !== null) { + throw new InvalidArgumentError("duplicate host header"); + } + if (typeof val !== "string") { + throw new InvalidArgumentError("invalid host header"); + } + request2.host = val; + } else if (headerName === "content-length") { + if (request2.contentLength !== null) { + throw new InvalidArgumentError("duplicate content-length header"); + } + request2.contentLength = parseInt(val, 10); + if (!Number.isFinite(request2.contentLength)) { + throw new InvalidArgumentError("invalid content-length header"); + } + } else if (request2.contentType === null && headerName === "content-type") { + request2.contentType = val; + request2.headers.push(key, val); + } else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") { + throw new InvalidArgumentError(`invalid ${headerName} header`); + } else if (headerName === "connection") { + const value = typeof val === "string" ? val.toLowerCase() : null; + if (value !== "close" && value !== "keep-alive") { + throw new InvalidArgumentError("invalid connection header"); + } + if (value === "close") { + request2.reset = true; + } + } else if (headerName === "expect") { + throw new NotSupportedError("expect header not supported"); + } else { + request2.headers.push(key, val); + } + } + module.exports = Request; + } +}); + +// +var require_dispatcher = __commonJS({ + ""(exports, module) { + "use strict"; + var EventEmitter = __require("node:events"); + var Dispatcher = class extends EventEmitter { + dispatch() { + throw new Error("not implemented"); + } + close() { + throw new Error("not implemented"); + } + destroy() { + throw new Error("not implemented"); + } + compose(...args) { + const interceptors = Array.isArray(args[0]) ? args[0] : args; + let dispatch = this.dispatch.bind(this); + for (const interceptor of interceptors) { + if (interceptor == null) { + continue; + } + if (typeof interceptor !== "function") { + throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`); + } + dispatch = interceptor(dispatch); + if (dispatch == null || typeof dispatch !== "function" || dispatch.length !== 2) { + throw new TypeError("invalid interceptor"); + } + } + return new ComposedDispatcher(this, dispatch); + } + }; + var ComposedDispatcher = class extends Dispatcher { + #dispatcher = null; + #dispatch = null; + constructor(dispatcher, dispatch) { + super(); + this.#dispatcher = dispatcher; + this.#dispatch = dispatch; + } + dispatch(...args) { + this.#dispatch(...args); + } + close(...args) { + return this.#dispatcher.close(...args); + } + destroy(...args) { + return this.#dispatcher.destroy(...args); + } + }; + module.exports = Dispatcher; + } +}); + +// +var require_dispatcher_base = __commonJS({ + ""(exports, module) { + "use strict"; + var Dispatcher = require_dispatcher(); + var { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError + } = require_errors(); + var { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require_symbols(); + var kOnDestroyed = Symbol("onDestroyed"); + var kOnClosed = Symbol("onClosed"); + var kInterceptedDispatch = Symbol("Intercepted Dispatch"); + var kWebSocketOptions = Symbol("webSocketOptions"); + var DispatcherBase = class extends Dispatcher { + constructor(opts) { + super(); + this[kDestroyed] = false; + this[kOnDestroyed] = null; + this[kClosed] = false; + this[kOnClosed] = []; + this[kWebSocketOptions] = opts?.webSocket ?? {}; + } + get webSocketOptions() { + return { + maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024 + }; + } + get destroyed() { + return this[kDestroyed]; + } + get closed() { + return this[kClosed]; + } + get interceptors() { + return this[kInterceptors]; + } + set interceptors(newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i]; + if (typeof interceptor !== "function") { + throw new InvalidArgumentError("interceptor must be an function"); + } + } + } + this[kInterceptors] = newInterceptors; + } + close(callback) { + if (callback === void 0) { + return new Promise((resolve5, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve5(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + this[kClosed] = true; + this[kOnClosed].push(callback); + const onClosed = () => { + const callbacks = this[kOnClosed]; + this[kOnClosed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kClose]().then(() => this.destroy()).then(() => { + queueMicrotask(onClosed); + }); + } + destroy(err, callback) { + if (typeof err === "function") { + callback = err; + err = null; + } + if (callback === void 0) { + return new Promise((resolve5, reject) => { + this.destroy(err, (err2, data) => { + return err2 ? ( + /* istanbul ignore next: should never error */ + reject(err2) + ) : resolve5(data); + }); + }); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + if (!err) { + err = new ClientDestroyedError(); + } + this[kDestroyed] = true; + this[kOnDestroyed] = this[kOnDestroyed] || []; + this[kOnDestroyed].push(callback); + const onDestroyed = () => { + const callbacks = this[kOnDestroyed]; + this[kOnDestroyed] = null; + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null); + } + }; + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed); + }); + } + [kInterceptedDispatch](opts, handler2) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch]; + return this[kDispatch](opts, handler2); + } + let dispatch = this[kDispatch].bind(this); + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch); + } + this[kInterceptedDispatch] = dispatch; + return dispatch(opts, handler2); + } + dispatch(opts, handler2) { + if (!handler2 || typeof handler2 !== "object") { + throw new InvalidArgumentError("handler must be an object"); + } + try { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object."); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kInterceptedDispatch](opts, handler2); + } catch (err) { + if (typeof handler2.onError !== "function") { + throw new InvalidArgumentError("invalid onError method"); + } + handler2.onError(err); + return false; + } + } + }; + module.exports = DispatcherBase; + } +}); + +// +var require_timers = __commonJS({ + ""(exports, module) { + "use strict"; + var fastNow = 0; + var RESOLUTION_MS = 1e3; + var TICK_MS = (RESOLUTION_MS >> 1) - 1; + var fastNowTimeout; + var kFastTimer = Symbol("kFastTimer"); + var fastTimers = []; + var NOT_IN_LIST = -2; + var TO_BE_CLEARED = -1; + var PENDING = 0; + var ACTIVE = 1; + function onTick() { + fastNow += TICK_MS; + let idx = 0; + let len = fastTimers.length; + while (idx < len) { + const timer = fastTimers[idx]; + if (timer._state === PENDING) { + timer._idleStart = fastNow - TICK_MS; + timer._state = ACTIVE; + } else if (timer._state === ACTIVE && fastNow >= timer._idleStart + timer._idleTimeout) { + timer._state = TO_BE_CLEARED; + timer._idleStart = -1; + timer._onTimeout(timer._timerArg); + } + if (timer._state === TO_BE_CLEARED) { + timer._state = NOT_IN_LIST; + if (--len !== 0) { + fastTimers[idx] = fastTimers[len]; + } + } else { + ++idx; + } + } + fastTimers.length = len; + if (fastTimers.length !== 0) { + refreshTimeout(); + } + } + function refreshTimeout() { + if (fastNowTimeout) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTick, TICK_MS); + if (fastNowTimeout.unref) { + fastNowTimeout.unref(); + } + } + } + var FastTimer = class { + [kFastTimer] = true; + /** + * The state of the timer, which can be one of the following: + * - NOT_IN_LIST (-2) + * - TO_BE_CLEARED (-1) + * - PENDING (0) + * - ACTIVE (1) + * + * @type {-2|-1|0|1} + * @private + */ + _state = NOT_IN_LIST; + /** + * The number of milliseconds to wait before calling the callback. + * + * @type {number} + * @private + */ + _idleTimeout = -1; + /** + * The time in milliseconds when the timer was started. This value is used to + * calculate when the timer should expire. + * + * @type {number} + * @default -1 + * @private + */ + _idleStart = -1; + /** + * The function to be executed when the timer expires. + * @type {Function} + * @private + */ + _onTimeout; + /** + * The argument to be passed to the callback when the timer expires. + * + * @type {*} + * @private + */ + _timerArg; + /** + * @constructor + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should wait + * before the specified function or code is executed. + * @param {*} arg + */ + constructor(callback, delay, arg) { + this._onTimeout = callback; + this._idleTimeout = delay; + this._timerArg = arg; + this.refresh(); + } + /** + * Sets the timer's start time to the current time, and reschedules the timer + * to call its callback at the previously specified duration adjusted to the + * current time. + * Using this on a timer that has already called its callback will reactivate + * the timer. + * + * @returns {void} + */ + refresh() { + if (this._state === NOT_IN_LIST) { + fastTimers.push(this); + } + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout(); + } + this._state = PENDING; + } + /** + * The `clear` method cancels the timer, preventing it from executing. + * + * @returns {void} + * @private + */ + clear() { + this._state = TO_BE_CLEARED; + this._idleStart = -1; + } + }; + module.exports = { + /** + * The setTimeout() method sets a timer which executes a function once the + * timer expires. + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should + * wait before the specified function or code is executed. + * @param {*} [arg] An optional argument to be passed to the callback function + * when the timer expires. + * @returns {NodeJS.Timeout|FastTimer} + */ + setTimeout(callback, delay, arg) { + return delay <= RESOLUTION_MS ? setTimeout(callback, delay, arg) : new FastTimer(callback, delay, arg); + }, + /** + * The clearTimeout method cancels an instantiated Timer previously created + * by calling setTimeout. + * + * @param {NodeJS.Timeout|FastTimer} timeout + */ + clearTimeout(timeout) { + if (timeout[kFastTimer]) { + timeout.clear(); + } else { + clearTimeout(timeout); + } + }, + /** + * The setFastTimeout() method sets a fastTimer which executes a function once + * the timer expires. + * @param {Function} callback A function to be executed after the timer + * expires. + * @param {number} delay The time, in milliseconds that the timer should + * wait before the specified function or code is executed. + * @param {*} [arg] An optional argument to be passed to the callback function + * when the timer expires. + * @returns {FastTimer} + */ + setFastTimeout(callback, delay, arg) { + return new FastTimer(callback, delay, arg); + }, + /** + * The clearTimeout method cancels an instantiated FastTimer previously + * created by calling setFastTimeout. + * + * @param {FastTimer} timeout + */ + clearFastTimeout(timeout) { + timeout.clear(); + }, + /** + * The now method returns the value of the internal fast timer clock. + * + * @returns {number} + */ + now() { + return fastNow; + }, + /** + * Trigger the onTick function to process the fastTimers array. + * Exported for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + * @param {number} [delay=0] The delay in milliseconds to add to the now value. + */ + tick(delay = 0) { + fastNow += delay - RESOLUTION_MS + 1; + onTick(); + onTick(); + }, + /** + * Reset FastTimers. + * Exported for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + */ + reset() { + fastNow = 0; + fastTimers.length = 0; + clearTimeout(fastNowTimeout); + fastNowTimeout = null; + }, + /** + * Exporting for testing purposes only. + * Marking as deprecated to discourage any use outside of testing. + * @deprecated + */ + kFastTimer + }; + } +}); + +// +var require_connect = __commonJS({ + ""(exports, module) { + "use strict"; + var net = __require("node:net"); + var assert2 = __require("node:assert"); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var timers = require_timers(); + function noop3() { + } + var tls; + var SessionCache; + if (global.FinalizationRegistry && !(process.env.NODE_V8_COVERAGE || process.env.UNDICI_NO_FG)) { + SessionCache = class WeakSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return; + } + const ref = this._sessionCache.get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this._sessionCache.delete(key); + } + }); + } + get(sessionKey) { + const ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); + } + }; + } else { + SessionCache = class SimpleSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + } + get(sessionKey) { + return this._sessionCache.get(sessionKey); + } + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + if (this._sessionCache.size >= this._maxCachedSessions) { + const { value: oldestKey } = this._sessionCache.keys().next(); + this._sessionCache.delete(oldestKey); + } + this._sessionCache.set(sessionKey, session); + } + }; + } + function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero"); + } + const options = { path: socketPath, ...opts }; + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); + timeout = timeout == null ? 1e4 : timeout; + allowH2 = allowH2 != null ? allowH2 : false; + return function connect({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket; + if (protocol === "https:") { + if (!tls) { + tls = __require("node:tls"); + } + servername = servername || options.servername || util.getServerName(host) || null; + const sessionKey = servername || hostname; + assert2(sessionKey); + const session = customSession || sessionCache.get(sessionKey) || null; + port = port || 443; + socket = tls.connect({ + highWaterMark: 16384, + // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"], + socket: httpSocket, + // upgrade socket connection + port, + host: hostname + }); + socket.on("session", function(session2) { + sessionCache.set(sessionKey, session2); + }); + } else { + assert2(!httpSocket, "httpSocket can only be sent on TLS update"); + port = port || 80; + socket = net.connect({ + highWaterMark: 64 * 1024, + // Same as nodejs fs streams. + ...options, + localAddress, + port, + host: hostname + }); + } + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); + } + const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port }); + socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() { + queueMicrotask(clearConnectTimeout); + if (callback) { + const cb = callback; + callback = null; + cb(null, this); + } + }).on("error", function(err) { + queueMicrotask(clearConnectTimeout); + if (callback) { + const cb = callback; + callback = null; + cb(err); + } + }); + return socket; + }; + } + var setupConnectTimeout = process.platform === "win32" ? (socketWeakRef, opts) => { + if (!opts.timeout) { + return noop3; + } + let s1 = null; + let s2 = null; + const fastTimer = timers.setFastTimeout(() => { + s1 = setImmediate(() => { + s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts)); + }); + }, opts.timeout); + return () => { + timers.clearFastTimeout(fastTimer); + clearImmediate(s1); + clearImmediate(s2); + }; + } : (socketWeakRef, opts) => { + if (!opts.timeout) { + return noop3; + } + let s1 = null; + const fastTimer = timers.setFastTimeout(() => { + s1 = setImmediate(() => { + onConnectTimeout(socketWeakRef.deref(), opts); + }); + }, opts.timeout); + return () => { + timers.clearFastTimeout(fastTimer); + clearImmediate(s1); + }; + }; + function onConnectTimeout(socket, opts) { + if (socket == null) { + return; + } + let message = "Connect Timeout Error"; + if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) { + message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(", ")},`; + } else { + message += ` (attempted address: ${opts.hostname}:${opts.port},`; + } + message += ` timeout: ${opts.timeout}ms)`; + util.destroy(socket, new ConnectTimeoutError(message)); + } + module.exports = buildConnector; + } +}); + +// +var require_utils = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.enumToMap = void 0; + function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === "number") { + res[key] = value; + } + }); + return res; + } + exports.enumToMap = enumToMap; + } +}); + +// +var require_constants2 = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; + var utils_1 = require_utils(); + var ERROR; + (function(ERROR2) { + ERROR2[ERROR2["OK"] = 0] = "OK"; + ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL"; + ERROR2[ERROR2["STRICT"] = 2] = "STRICT"; + ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED"; + ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR2[ERROR2["USER"] = 24] = "USER"; + })(ERROR = exports.ERROR || (exports.ERROR = {})); + var TYPE; + (function(TYPE2) { + TYPE2[TYPE2["BOTH"] = 0] = "BOTH"; + TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST"; + TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE"; + })(TYPE = exports.TYPE || (exports.TYPE = {})); + var FLAGS; + (function(FLAGS2) { + FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS2[FLAGS2["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS2[FLAGS2["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS2[FLAGS2["CHUNKED"] = 8] = "CHUNKED"; + FLAGS2[FLAGS2["UPGRADE"] = 16] = "UPGRADE"; + FLAGS2[FLAGS2["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING"; + FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; + })(FLAGS = exports.FLAGS || (exports.FLAGS = {})); + var LENIENT_FLAGS; + (function(LENIENT_FLAGS2) { + LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; + })(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); + var METHODS; + (function(METHODS2) { + METHODS2[METHODS2["DELETE"] = 0] = "DELETE"; + METHODS2[METHODS2["GET"] = 1] = "GET"; + METHODS2[METHODS2["HEAD"] = 2] = "HEAD"; + METHODS2[METHODS2["POST"] = 3] = "POST"; + METHODS2[METHODS2["PUT"] = 4] = "PUT"; + METHODS2[METHODS2["CONNECT"] = 5] = "CONNECT"; + METHODS2[METHODS2["OPTIONS"] = 6] = "OPTIONS"; + METHODS2[METHODS2["TRACE"] = 7] = "TRACE"; + METHODS2[METHODS2["COPY"] = 8] = "COPY"; + METHODS2[METHODS2["LOCK"] = 9] = "LOCK"; + METHODS2[METHODS2["MKCOL"] = 10] = "MKCOL"; + METHODS2[METHODS2["MOVE"] = 11] = "MOVE"; + METHODS2[METHODS2["PROPFIND"] = 12] = "PROPFIND"; + METHODS2[METHODS2["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS2[METHODS2["SEARCH"] = 14] = "SEARCH"; + METHODS2[METHODS2["UNLOCK"] = 15] = "UNLOCK"; + METHODS2[METHODS2["BIND"] = 16] = "BIND"; + METHODS2[METHODS2["REBIND"] = 17] = "REBIND"; + METHODS2[METHODS2["UNBIND"] = 18] = "UNBIND"; + METHODS2[METHODS2["ACL"] = 19] = "ACL"; + METHODS2[METHODS2["REPORT"] = 20] = "REPORT"; + METHODS2[METHODS2["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS2[METHODS2["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS2[METHODS2["MERGE"] = 23] = "MERGE"; + METHODS2[METHODS2["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS2[METHODS2["NOTIFY"] = 25] = "NOTIFY"; + METHODS2[METHODS2["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS2[METHODS2["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + METHODS2[METHODS2["PATCH"] = 28] = "PATCH"; + METHODS2[METHODS2["PURGE"] = 29] = "PURGE"; + METHODS2[METHODS2["MKCALENDAR"] = 30] = "MKCALENDAR"; + METHODS2[METHODS2["LINK"] = 31] = "LINK"; + METHODS2[METHODS2["UNLINK"] = 32] = "UNLINK"; + METHODS2[METHODS2["SOURCE"] = 33] = "SOURCE"; + METHODS2[METHODS2["PRI"] = 34] = "PRI"; + METHODS2[METHODS2["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS2[METHODS2["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS2[METHODS2["SETUP"] = 37] = "SETUP"; + METHODS2[METHODS2["PLAY"] = 38] = "PLAY"; + METHODS2[METHODS2["PAUSE"] = 39] = "PAUSE"; + METHODS2[METHODS2["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS2[METHODS2["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS2[METHODS2["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT"; + METHODS2[METHODS2["RECORD"] = 44] = "RECORD"; + METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH"; + })(METHODS = exports.METHODS || (exports.METHODS = {})); + exports.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS["M-SEARCH"], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE + ]; + exports.METHODS_ICE = [ + METHODS.SOURCE + ]; + exports.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST + ]; + exports.METHOD_MAP = utils_1.enumToMap(METHODS); + exports.H_METHOD_MAP = {}; + Object.keys(exports.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; + } + }); + var FINISH; + (function(FINISH2) { + FINISH2[FINISH2["SAFE"] = 0] = "SAFE"; + FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE"; + })(FINISH = exports.FINISH || (exports.FINISH = {})); + exports.ALPHA = []; + for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { + exports.ALPHA.push(String.fromCharCode(i)); + exports.ALPHA.push(String.fromCharCode(i + 32)); + } + exports.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 + }; + exports.HEX_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9, + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + a: 10, + b: 11, + c: 12, + d: 13, + e: 14, + f: 15 + }; + exports.NUM = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ]; + exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); + exports.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; + exports.USERINFO_CHARS = exports.ALPHANUM.concat(exports.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]); + exports.STRICT_URL_CHAR = [ + "!", + '"', + "$", + "%", + "&", + "'", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + ":", + ";", + "<", + "=", + ">", + "@", + "[", + "\\", + "]", + "^", + "_", + "`", + "{", + "|", + "}", + "~" + ].concat(exports.ALPHANUM); + exports.URL_CHAR = exports.STRICT_URL_CHAR.concat([" ", "\f"]); + for (let i = 128; i <= 255; i++) { + exports.URL_CHAR.push(i); + } + exports.HEX = exports.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); + exports.STRICT_TOKEN = [ + "!", + "#", + "$", + "%", + "&", + "'", + "*", + "+", + "-", + ".", + "^", + "_", + "`", + "|", + "~" + ].concat(exports.ALPHANUM); + exports.TOKEN = exports.STRICT_TOKEN.concat([" "]); + exports.HEADER_CHARS = [" "]; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports.HEADER_CHARS.push(i); + } + } + exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); + exports.MAJOR = exports.NUM_MAP; + exports.MINOR = exports.MAJOR; + var HEADER_STATE; + (function(HEADER_STATE2) { + HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE2[HEADER_STATE2["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE2[HEADER_STATE2["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE2[HEADER_STATE2["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; + })(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); + exports.SPECIAL_HEADERS = { + "connection": HEADER_STATE.CONNECTION, + "content-length": HEADER_STATE.CONTENT_LENGTH, + "proxy-connection": HEADER_STATE.CONNECTION, + "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, + "upgrade": HEADER_STATE.UPGRADE + }; + } +}); + +// +var require_llhttp_wasm = __commonJS({ + ""(exports, module) { + "use strict"; + var { Buffer: Buffer2 } = __require("node:buffer"); + module.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB9ysPC0GQMQ8LQdcxDwtBoi0PC0HUJw8LQeArDwtBnywPC0HrMQ8LQdUfDwtByjEPC0HeJQ8LQdQeDwtB9BwPC0GnMg8LQbEdDwtBoB0PC0G5MQ8LQbwwDwtBkiEPC0GzJg8LQeksDwtBrB4PC0HUKw8LQfcmDwtBgCYPC0GwIQ8LQf4eDwtBjSMPC0GJLQ8LQfciDwtBoDEPC0GuHw8LQcYlDwtB6B4PC0GTIg8LQcIvDwtBwx0PC0GLLA8LQeEdDwtBjS8PC0HqIQ8LQbQtDwtB0i8PC0HfMg8LQdIyDwtB8DAPC0GpIg8LQfkjDwtBmR4PC0G1LA8LQZswDwtBkjIPC0G2Kw8LQcIiDwtB+DIPC0GeJQ8LQdAiDwtBuh4PC0GBHg8LAAtB1iEhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBxhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9go2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7Ro2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBqhs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7RM2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBwhk2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlBQ2AhBBGCEECyAEC1kBAn8CQCAALQAoQQFGDQAgAC8BMiIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEwIgFBAnFFDQEMAgsgAC8BMCIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATIiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtXACAAQRhqQgA3AwAgAEIANwMAIABBOGpCADcDACAAQTBqQgA3AwAgAEEoakIANwMAIABBIGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIABB3QE2AhwLBgAgABAyC5otAQt/IwBBEGsiCiQAQaTQACgCACIJRQRAQeTTACgCACIFRQRAQfDTAEJ/NwIAQejTAEKAgISAgIDAADcCAEHk0wAgCkEIakFwcUHYqtWqBXMiBTYCAEH40wBBADYCAEHI0wBBADYCAAtBzNMAQYDUBDYCAEGc0ABBgNQENgIAQbDQACAFNgIAQazQAEF/NgIAQdDTAEGArAM2AgADQCABQcjQAGogAUG80ABqIgI2AgAgAiABQbTQAGoiAzYCACABQcDQAGogAzYCACABQdDQAGogAUHE0ABqIgM2AgAgAyACNgIAIAFB2NAAaiABQczQAGoiAjYCACACIAM2AgAgAUHU0ABqIAI2AgAgAUEgaiIBQYACRw0AC0GM1ARBwasDNgIAQajQAEH00wAoAgA2AgBBmNAAQcCrAzYCAEGk0ABBiNQENgIAQcz/B0E4NgIAQYjUBCEJCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFNBEBBjNAAKAIAIgZBECAAQRNqQXBxIABBC0kbIgRBA3YiAHYiAUEDcQRAAkAgAUEBcSAAckEBcyICQQN0IgBBtNAAaiIBIABBvNAAaigCACIAKAIIIgNGBEBBjNAAIAZBfiACd3E2AgAMAQsgASADNgIIIAMgATYCDAsgAEEIaiEBIAAgAkEDdCICQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDBELQZTQACgCACIIIARPDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIAQQN0IgJBtNAAaiIBIAJBvNAAaigCACICKAIIIgNGBEBBjNAAIAZBfiAAd3EiBjYCAAwBCyABIAM2AgggAyABNgIMCyACIARBA3I2AgQgAEEDdCIAIARrIQUgACACaiAFNgIAIAIgBGoiBCAFQQFyNgIEIAgEQCAIQXhxQbTQAGohAEGg0AAoAgAhAwJ/QQEgCEEDdnQiASAGcUUEQEGM0AAgASAGcjYCACAADAELIAAoAggLIgEgAzYCDCAAIAM2AgggAyAANgIMIAMgATYCCAsgAkEIaiEBQaDQACAENgIAQZTQACAFNgIADBELQZDQACgCACILRQ0BIAtoQQJ0QbzSAGooAgAiACgCBEF4cSAEayEFIAAhAgNAAkAgAigCECIBRQRAIAJBFGooAgAiAUUNAQsgASgCBEF4cSAEayIDIAVJIQIgAyAFIAIbIQUgASAAIAIbIQAgASECDAELCyAAKAIYIQkgACgCDCIDIABHBEBBnNAAKAIAGiADIAAoAggiATYCCCABIAM2AgwMEAsgAEEUaiICKAIAIgFFBEAgACgCECIBRQ0DIABBEGohAgsDQCACIQcgASIDQRRqIgIoAgAiAQ0AIANBEGohAiADKAIQIgENAAsgB0EANgIADA8LQX8hBCAAQb9/Sw0AIABBE2oiAUFwcSEEQZDQACgCACIIRQ0AQQAgBGshBQJAAkACQAJ/QQAgBEGAAkkNABpBHyAEQf///wdLDQAaIARBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmoLIgZBAnRBvNIAaigCACICRQRAQQAhAUEAIQMMAQtBACEBIARBGSAGQQF2a0EAIAZBH0cbdCEAQQAhAwNAAkAgAigCBEF4cSAEayIHIAVPDQAgAiEDIAciBQ0AQQAhBSACIQEMAwsgASACQRRqKAIAIgcgByACIABBHXZBBHFqQRBqKAIAIgJGGyABIAcbIQEgAEEBdCEAIAINAAsLIAEgA3JFBEBBACEDQQIgBnQiAEEAIABrciAIcSIARQ0DIABoQQJ0QbzSAGooAgAhAQsgAUUNAQsDQCABKAIEQXhxIARrIgIgBUkhACACIAUgABshBSABIAMgABshAyABKAIQIgAEfyAABSABQRRqKAIACyIBDQALCyADRQ0AIAVBlNAAKAIAIARrTw0AIAMoAhghByADIAMoAgwiAEcEQEGc0AAoAgAaIAAgAygCCCIBNgIIIAEgADYCDAwOCyADQRRqIgIoAgAiAUUEQCADKAIQIgFFDQMgA0EQaiECCwNAIAIhBiABIgBBFGoiAigCACIBDQAgAEEQaiECIAAoAhAiAQ0ACyAGQQA2AgAMDQtBlNAAKAIAIgMgBE8EQEGg0AAoAgAhAQJAIAMgBGsiAkEQTwRAIAEgBGoiACACQQFyNgIEIAEgA2ogAjYCACABIARBA3I2AgQMAQsgASADQQNyNgIEIAEgA2oiACAAKAIEQQFyNgIEQQAhAEEAIQILQZTQACACNgIAQaDQACAANgIAIAFBCGohAQwPC0GY0AAoAgAiAyAESwRAIAQgCWoiACADIARrIgFBAXI2AgRBpNAAIAA2AgBBmNAAIAE2AgAgCSAEQQNyNgIEIAlBCGohAQwPC0EAIQEgBAJ/QeTTACgCAARAQezTACgCAAwBC0Hw0wBCfzcCAEHo0wBCgICEgICAwAA3AgBB5NMAIApBDGpBcHFB2KrVqgVzNgIAQfjTAEEANgIAQcjTAEEANgIAQYCABAsiACAEQccAaiIFaiIGQQAgAGsiB3EiAk8EQEH80wBBMDYCAAwPCwJAQcTTACgCACIBRQ0AQbzTACgCACIIIAJqIQAgACABTSAAIAhLcQ0AQQAhAUH80wBBMDYCAAwPC0HI0wAtAABBBHENBAJAAkAgCQRAQczTACEBA0AgASgCACIAIAlNBEAgACABKAIEaiAJSw0DCyABKAIIIgENAAsLQQAQMyIAQX9GDQUgAiEGQejTACgCACIBQQFrIgMgAHEEQCACIABrIAAgA2pBACABa3FqIQYLIAQgBk8NBSAGQf7///8HSw0FQcTTACgCACIDBEBBvNMAKAIAIgcgBmohASABIAdNDQYgASADSw0GCyAGEDMiASAARw0BDAcLIAYgA2sgB3EiBkH+////B0sNBCAGEDMhACAAIAEoAgAgASgCBGpGDQMgACEBCwJAIAYgBEHIAGpPDQAgAUF/Rg0AQezTACgCACIAIAUgBmtqQQAgAGtxIgBB/v///wdLBEAgASEADAcLIAAQM0F/RwRAIAAgBmohBiABIQAMBwtBACAGaxAzGgwECyABIgBBf0cNBQwDC0EAIQMMDAtBACEADAoLIABBf0cNAgtByNMAQcjTACgCAEEEcjYCAAsgAkH+////B0sNASACEDMhAEEAEDMhASAAQX9GDQEgAUF/Rg0BIAAgAU8NASABIABrIgYgBEE4ak0NAQtBvNMAQbzTACgCACAGaiIBNgIAQcDTACgCACABSQRAQcDTACABNgIACwJAAkACQEGk0AAoAgAiAgRAQczTACEBA0AgACABKAIAIgMgASgCBCIFakYNAiABKAIIIgENAAsMAgtBnNAAKAIAIgFBAEcgACABT3FFBEBBnNAAIAA2AgALQQAhAUHQ0wAgBjYCAEHM0wAgADYCAEGs0ABBfzYCAEGw0ABB5NMAKAIANgIAQdjTAEEANgIAA0AgAUHI0ABqIAFBvNAAaiICNgIAIAIgAUG00ABqIgM2AgAgAUHA0ABqIAM2AgAgAUHQ0ABqIAFBxNAAaiIDNgIAIAMgAjYCACABQdjQAGogAUHM0ABqIgI2AgAgAiADNgIAIAFB1NAAaiACNgIAIAFBIGoiAUGAAkcNAAtBeCAAa0EPcSIBIABqIgIgBkE4ayIDIAFrIgFBAXI2AgRBqNAAQfTTACgCADYCAEGY0AAgATYCAEGk0AAgAjYCACAAIANqQTg2AgQMAgsgACACTQ0AIAIgA0kNACABKAIMQQhxDQBBeCACa0EPcSIAIAJqIgNBmNAAKAIAIAZqIgcgAGsiAEEBcjYCBCABIAUgBmo2AgRBqNAAQfTTACgCADYCAEGY0AAgADYCAEGk0AAgAzYCACACIAdqQTg2AgQMAQsgAEGc0AAoAgBJBEBBnNAAIAA2AgALIAAgBmohA0HM0wAhAQJAAkACQANAIAMgASgCAEcEQCABKAIIIgENAQwCCwsgAS0ADEEIcUUNAQtBzNMAIQEDQCABKAIAIgMgAk0EQCADIAEoAgRqIgUgAksNAwsgASgCCCEBDAALAAsgASAANgIAIAEgASgCBCAGajYCBCAAQXggAGtBD3FqIgkgBEEDcjYCBCADQXggA2tBD3FqIgYgBCAJaiIEayEBIAIgBkYEQEGk0AAgBDYCAEGY0ABBmNAAKAIAIAFqIgA2AgAgBCAAQQFyNgIEDAgLQaDQACgCACAGRgRAQaDQACAENgIAQZTQAEGU0AAoAgAgAWoiADYCACAEIABBAXI2AgQgACAEaiAANgIADAgLIAYoAgQiBUEDcUEBRw0GIAVBeHEhCCAFQf8BTQRAIAVBA3YhAyAGKAIIIgAgBigCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBwsgAiAANgIIIAAgAjYCDAwGCyAGKAIYIQcgBiAGKAIMIgBHBEAgACAGKAIIIgI2AgggAiAANgIMDAULIAZBFGoiAigCACIFRQRAIAYoAhAiBUUNBCAGQRBqIQILA0AgAiEDIAUiAEEUaiICKAIAIgUNACAAQRBqIQIgACgCECIFDQALIANBADYCAAwEC0F4IABrQQ9xIgEgAGoiByAGQThrIgMgAWsiAUEBcjYCBCAAIANqQTg2AgQgAiAFQTcgBWtBD3FqQT9rIgMgAyACQRBqSRsiA0EjNgIEQajQAEH00wAoAgA2AgBBmNAAIAE2AgBBpNAAIAc2AgAgA0EQakHU0wApAgA3AgAgA0HM0wApAgA3AghB1NMAIANBCGo2AgBB0NMAIAY2AgBBzNMAIAA2AgBB2NMAQQA2AgAgA0EkaiEBA0AgAUEHNgIAIAUgAUEEaiIBSw0ACyACIANGDQAgAyADKAIEQX5xNgIEIAMgAyACayIFNgIAIAIgBUEBcjYCBCAFQf8BTQRAIAVBeHFBtNAAaiEAAn9BjNAAKAIAIgFBASAFQQN2dCIDcUUEQEGM0AAgASADcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbzSAGohAEGQ0AAoAgAiA0EBIAF0IgZxRQRAIAAgAjYCAEGQ0AAgAyAGcjYCACACIAA2AhggAiACNgIIIAIgAjYCDAwBCyAFQRkgAUEBdmtBACABQR9HG3QhASAAKAIAIQMCQANAIAMiACgCBEF4cSAFRg0BIAFBHXYhAyABQQF0IQEgACADQQRxakEQaiIGKAIAIgMNAAsgBiACNgIAIAIgADYCGCACIAI2AgwgAiACNgIIDAELIAAoAggiASACNgIMIAAgAjYCCCACQQA2AhggAiAANgIMIAIgATYCCAtBmNAAKAIAIgEgBE0NAEGk0AAoAgAiACAEaiICIAEgBGsiAUEBcjYCBEGY0AAgATYCAEGk0AAgAjYCACAAIARBA3I2AgQgAEEIaiEBDAgLQQAhAUH80wBBMDYCAAwHC0EAIQALIAdFDQACQCAGKAIcIgJBAnRBvNIAaiIDKAIAIAZGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAdBEEEUIAcoAhAgBkYbaiAANgIAIABFDQELIAAgBzYCGCAGKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAGQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAIaiEBIAYgCGoiBigCBCEFCyAGIAVBfnE2AgQgASAEaiABNgIAIAQgAUEBcjYCBCABQf8BTQRAIAFBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASABQQN2dCIBcUUEQEGM0AAgASACcjYCACAADAELIAAoAggLIgEgBDYCDCAAIAQ2AgggBCAANgIMIAQgATYCCAwBC0EfIQUgAUH///8HTQRAIAFBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBQsgBCAFNgIcIARCADcCECAFQQJ0QbzSAGohAEGQ0AAoAgAiAkEBIAV0IgNxRQRAIAAgBDYCAEGQ0AAgAiADcjYCACAEIAA2AhggBCAENgIIIAQgBDYCDAwBCyABQRkgBUEBdmtBACAFQR9HG3QhBSAAKAIAIQACQANAIAAiAigCBEF4cSABRg0BIAVBHXYhACAFQQF0IQUgAiAAQQRxakEQaiIDKAIAIgANAAsgAyAENgIAIAQgAjYCGCAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgCUEIaiEBDAILAkAgB0UNAAJAIAMoAhwiAUECdEG80gBqIgIoAgAgA0YEQCACIAA2AgAgAA0BQZDQACAIQX4gAXdxIgg2AgAMAgsgB0EQQRQgBygCECADRhtqIAA2AgAgAEUNAQsgACAHNgIYIAMoAhAiAQRAIAAgATYCECABIAA2AhgLIANBFGooAgAiAUUNACAAQRRqIAE2AgAgASAANgIYCwJAIAVBD00EQCADIAQgBWoiAEEDcjYCBCAAIANqIgAgACgCBEEBcjYCBAwBCyADIARqIgIgBUEBcjYCBCADIARBA3I2AgQgAiAFaiAFNgIAIAVB/wFNBEAgBUF4cUG00ABqIQACf0GM0AAoAgAiAUEBIAVBA3Z0IgVxRQRAQYzQACABIAVyNgIAIAAMAQsgACgCCAsiASACNgIMIAAgAjYCCCACIAA2AgwgAiABNgIIDAELQR8hASAFQf///wdNBEAgBUEmIAVBCHZnIgBrdkEBcSAAQQF0a0E+aiEBCyACIAE2AhwgAkIANwIQIAFBAnRBvNIAaiEAQQEgAXQiBCAIcUUEQCAAIAI2AgBBkNAAIAQgCHI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEEAkADQCAEIgAoAgRBeHEgBUYNASABQR12IQQgAUEBdCEBIAAgBEEEcWpBEGoiBigCACIEDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLIANBCGohAQwBCwJAIAlFDQACQCAAKAIcIgFBAnRBvNIAaiICKAIAIABGBEAgAiADNgIAIAMNAUGQ0AAgC0F+IAF3cTYCAAwCCyAJQRBBFCAJKAIQIABGG2ogAzYCACADRQ0BCyADIAk2AhggACgCECIBBEAgAyABNgIQIAEgAzYCGAsgAEEUaigCACIBRQ0AIANBFGogATYCACABIAM2AhgLAkAgBUEPTQRAIAAgBCAFaiIBQQNyNgIEIAAgAWoiASABKAIEQQFyNgIEDAELIAAgBGoiByAFQQFyNgIEIAAgBEEDcjYCBCAFIAdqIAU2AgAgCARAIAhBeHFBtNAAaiEBQaDQACgCACEDAn9BASAIQQN2dCICIAZxRQRAQYzQACACIAZyNgIAIAEMAQsgASgCCAsiAiADNgIMIAEgAzYCCCADIAE2AgwgAyACNgIIC0Gg0AAgBzYCAEGU0AAgBTYCAAsgAEEIaiEBCyAKQRBqJAAgAQtDACAARQRAPwBBEHQPCwJAIABB//8DcQ0AIABBAEgNACAAQRB2QAAiAEF/RgRAQfzTAEEwNgIAQX8PCyAAQRB0DwsACwvcPyIAQYAICwkBAAAAAgAAAAMAQZQICwUEAAAABQBBpAgLCQYAAAAHAAAACABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64"); + } +}); + +// +var require_llhttp_simd_wasm = __commonJS({ + ""(exports, module) { + "use strict"; + var { Buffer: Buffer2 } = __require("node:buffer"); + module.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64"); + } +}); + +// +var require_constants3 = __commonJS({ + ""(exports, module) { + "use strict"; + var corsSafeListedMethods = ( + /** @type {const} */ + ["GET", "HEAD", "POST"] + ); + var corsSafeListedMethodsSet = new Set(corsSafeListedMethods); + var nullBodyStatus = ( + /** @type {const} */ + [101, 204, 205, 304] + ); + var redirectStatus = ( + /** @type {const} */ + [301, 302, 303, 307, 308] + ); + var redirectStatusSet = new Set(redirectStatus); + var badPorts = ( + /** @type {const} */ + [ + "1", + "7", + "9", + "11", + "13", + "15", + "17", + "19", + "20", + "21", + "22", + "23", + "25", + "37", + "42", + "43", + "53", + "69", + "77", + "79", + "87", + "95", + "101", + "102", + "103", + "104", + "109", + "110", + "111", + "113", + "115", + "117", + "119", + "123", + "135", + "137", + "139", + "143", + "161", + "179", + "389", + "427", + "465", + "512", + "513", + "514", + "515", + "526", + "530", + "531", + "532", + "540", + "548", + "554", + "556", + "563", + "587", + "601", + "636", + "989", + "990", + "993", + "995", + "1719", + "1720", + "1723", + "2049", + "3659", + "4045", + "4190", + "5060", + "5061", + "6000", + "6566", + "6665", + "6666", + "6667", + "6668", + "6669", + "6679", + "6697", + "10080" + ] + ); + var badPortsSet = new Set(badPorts); + var referrerPolicy = ( + /** @type {const} */ + [ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ] + ); + var referrerPolicySet = new Set(referrerPolicy); + var requestRedirect = ( + /** @type {const} */ + ["follow", "manual", "error"] + ); + var safeMethods = ( + /** @type {const} */ + ["GET", "HEAD", "OPTIONS", "TRACE"] + ); + var safeMethodsSet = new Set(safeMethods); + var requestMode = ( + /** @type {const} */ + ["navigate", "same-origin", "no-cors", "cors"] + ); + var requestCredentials = ( + /** @type {const} */ + ["omit", "same-origin", "include"] + ); + var requestCache = ( + /** @type {const} */ + [ + "default", + "no-store", + "reload", + "no-cache", + "force-cache", + "only-if-cached" + ] + ); + var requestBodyHeader = ( + /** @type {const} */ + [ + "content-encoding", + "content-language", + "content-location", + "content-type", + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + "content-length" + ] + ); + var requestDuplex = ( + /** @type {const} */ + [ + "half" + ] + ); + var forbiddenMethods = ( + /** @type {const} */ + ["CONNECT", "TRACE", "TRACK"] + ); + var forbiddenMethodsSet = new Set(forbiddenMethods); + var subresource = ( + /** @type {const} */ + [ + "audio", + "audioworklet", + "font", + "image", + "manifest", + "paintworklet", + "script", + "style", + "track", + "video", + "xslt", + "" + ] + ); + var subresourceSet = new Set(subresource); + module.exports = { + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet + }; + } +}); + +// +var require_global = __commonJS({ + ""(exports, module) { + "use strict"; + var globalOrigin = Symbol.for("undici.globalOrigin.1"); + function getGlobalOrigin() { + return globalThis[globalOrigin]; + } + function setGlobalOrigin(newOrigin) { + if (newOrigin === void 0) { + Object.defineProperty(globalThis, globalOrigin, { + value: void 0, + writable: true, + enumerable: false, + configurable: false + }); + return; + } + const parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); + } + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); + } + module.exports = { + getGlobalOrigin, + setGlobalOrigin + }; + } +}); + +// +var require_data_url = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var encoder = new TextEncoder(); + var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/; + var HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/; + var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g; + var HTTP_QUOTED_STRING_TOKENS = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/; + function dataURLProcessor(dataURL) { + assert2(dataURL.protocol === "data:"); + let input = URLSerializer(dataURL, true); + input = input.slice(5); + const position = { position: 0 }; + let mimeType = collectASequenceOfCodePointsFast( + ",", + input, + position + ); + const mimeTypeLength = mimeType.length; + mimeType = removeASCIIWhitespace(mimeType, true, true); + if (position.position >= input.length) { + return "failure"; + } + position.position++; + const encodedBody = input.slice(mimeTypeLength + 1); + let body = stringPercentDecode(encodedBody); + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + const stringBody = isomorphicDecode(body); + body = forgivingBase64(stringBody); + if (body === "failure") { + return "failure"; + } + mimeType = mimeType.slice(0, -6); + mimeType = mimeType.replace(/(\u0020)+$/, ""); + mimeType = mimeType.slice(0, -1); + } + if (mimeType.startsWith(";")) { + mimeType = "text/plain" + mimeType; + } + let mimeTypeRecord = parseMIMEType(mimeType); + if (mimeTypeRecord === "failure") { + mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII"); + } + return { mimeType: mimeTypeRecord, body }; + } + function URLSerializer(url, excludeFragment = false) { + if (!excludeFragment) { + return url.href; + } + const href = url.href; + const hashLength = url.hash.length; + const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength); + if (!hashLength && href.endsWith("#")) { + return serialized.slice(0, -1); + } + return serialized; + } + function collectASequenceOfCodePoints(condition, input, position) { + let result = ""; + while (position.position < input.length && condition(input[position.position])) { + result += input[position.position]; + position.position++; + } + return result; + } + function collectASequenceOfCodePointsFast(char, input, position) { + const idx = input.indexOf(char, position.position); + const start = position.position; + if (idx === -1) { + position.position = input.length; + return input.slice(start); + } + position.position = idx; + return input.slice(start, position.position); + } + function stringPercentDecode(input) { + const bytes = encoder.encode(input); + return percentDecode(bytes); + } + function isHexCharByte(byte) { + return byte >= 48 && byte <= 57 || byte >= 65 && byte <= 70 || byte >= 97 && byte <= 102; + } + function hexByteToNumber(byte) { + return ( + // 0-9 + byte >= 48 && byte <= 57 ? byte - 48 : (byte & 223) - 55 + ); + } + function percentDecode(input) { + const length = input.length; + const output = new Uint8Array(length); + let j = 0; + for (let i = 0; i < length; ++i) { + const byte = input[i]; + if (byte !== 37) { + output[j++] = byte; + } else if (byte === 37 && !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2]))) { + output[j++] = 37; + } else { + output[j++] = hexByteToNumber(input[i + 1]) << 4 | hexByteToNumber(input[i + 2]); + i += 2; + } + } + return length === j ? output : output.subarray(0, j); + } + function parseMIMEType(input) { + input = removeHTTPWhitespace(input, true, true); + const position = { position: 0 }; + const type = collectASequenceOfCodePointsFast( + "/", + input, + position + ); + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return "failure"; + } + if (position.position > input.length) { + return "failure"; + } + position.position++; + let subtype = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + subtype = removeHTTPWhitespace(subtype, false, true); + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return "failure"; + } + const typeLowercase = type.toLowerCase(); + const subtypeLowercase = subtype.toLowerCase(); + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: /* @__PURE__ */ new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + }; + while (position.position < input.length) { + position.position++; + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + (char) => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ); + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ";" && char !== "=", + input, + position + ); + parameterName = parameterName.toLowerCase(); + if (position.position < input.length) { + if (input[position.position] === ";") { + continue; + } + position.position++; + } + if (position.position > input.length) { + break; + } + let parameterValue = null; + if (input[position.position] === '"') { + parameterValue = collectAnHTTPQuotedString(input, position, true); + collectASequenceOfCodePointsFast( + ";", + input, + position + ); + } else { + parameterValue = collectASequenceOfCodePointsFast( + ";", + input, + position + ); + parameterValue = removeHTTPWhitespace(parameterValue, false, true); + if (parameterValue.length === 0) { + continue; + } + } + if (parameterName.length !== 0 && HTTP_TOKEN_CODEPOINTS.test(parameterName) && (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && !mimeType.parameters.has(parameterName)) { + mimeType.parameters.set(parameterName, parameterValue); + } + } + return mimeType; + } + function forgivingBase64(data) { + data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, ""); + let dataLength = data.length; + if (dataLength % 4 === 0) { + if (data.charCodeAt(dataLength - 1) === 61) { + --dataLength; + if (data.charCodeAt(dataLength - 1) === 61) { + --dataLength; + } + } + } + if (dataLength % 4 === 1) { + return "failure"; + } + if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) { + return "failure"; + } + const buffer = Buffer.from(data, "base64"); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); + } + function collectAnHTTPQuotedString(input, position, extractValue) { + const positionStart = position.position; + let value = ""; + assert2(input[position.position] === '"'); + position.position++; + while (true) { + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== "\\", + input, + position + ); + if (position.position >= input.length) { + break; + } + const quoteOrBackslash = input[position.position]; + position.position++; + if (quoteOrBackslash === "\\") { + if (position.position >= input.length) { + value += "\\"; + break; + } + value += input[position.position]; + position.position++; + } else { + assert2(quoteOrBackslash === '"'); + break; + } + } + if (extractValue) { + return value; + } + return input.slice(positionStart, position.position); + } + function serializeAMimeType(mimeType) { + assert2(mimeType !== "failure"); + const { parameters, essence } = mimeType; + let serialization = essence; + for (let [name, value] of parameters.entries()) { + serialization += ";"; + serialization += name; + serialization += "="; + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + value = value.replace(/(\\|")/g, "\\$1"); + value = '"' + value; + value += '"'; + } + serialization += value; + } + return serialization; + } + function isHTTPWhiteSpace(char) { + return char === 13 || char === 10 || char === 9 || char === 32; + } + function removeHTTPWhitespace(str, leading = true, trailing = true) { + return removeChars(str, leading, trailing, isHTTPWhiteSpace); + } + function isASCIIWhitespace(char) { + return char === 13 || char === 10 || char === 9 || char === 12 || char === 32; + } + function removeASCIIWhitespace(str, leading = true, trailing = true) { + return removeChars(str, leading, trailing, isASCIIWhitespace); + } + function removeChars(str, leading, trailing, predicate) { + let lead = 0; + let trail = str.length - 1; + if (leading) { + while (lead < str.length && predicate(str.charCodeAt(lead))) + lead++; + } + if (trailing) { + while (trail > 0 && predicate(str.charCodeAt(trail))) + trail--; + } + return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1); + } + function isomorphicDecode(input) { + const length = input.length; + if ((2 << 15) - 1 > length) { + return String.fromCharCode.apply(null, input); + } + let result = ""; + let i = 0; + let addition = (2 << 15) - 1; + while (i < length) { + if (i + addition > length) { + addition = length - i; + } + result += String.fromCharCode.apply(null, input.subarray(i, i += addition)); + } + return result; + } + function minimizeSupportedMimeType(mimeType) { + switch (mimeType.essence) { + case "application/ecmascript": + case "application/javascript": + case "application/x-ecmascript": + case "application/x-javascript": + case "text/ecmascript": + case "text/javascript": + case "text/javascript1.0": + case "text/javascript1.1": + case "text/javascript1.2": + case "text/javascript1.3": + case "text/javascript1.4": + case "text/javascript1.5": + case "text/jscript": + case "text/livescript": + case "text/x-ecmascript": + case "text/x-javascript": + return "text/javascript"; + case "application/json": + case "text/json": + return "application/json"; + case "image/svg+xml": + return "image/svg+xml"; + case "text/xml": + case "application/xml": + return "application/xml"; + } + if (mimeType.subtype.endsWith("+json")) { + return "application/json"; + } + if (mimeType.subtype.endsWith("+xml")) { + return "application/xml"; + } + return ""; + } + module.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType, + removeChars, + removeHTTPWhitespace, + minimizeSupportedMimeType, + HTTP_TOKEN_CODEPOINTS, + isomorphicDecode + }; + } +}); + +// +var require_webidl = __commonJS({ + ""(exports, module) { + "use strict"; + var { types: types3, inspect: inspect2 } = __require("node:util"); + var { markAsUncloneable } = __require("node:worker_threads"); + var { toUSVString } = require_util(); + var webidl = {}; + webidl.converters = {}; + webidl.util = {}; + webidl.errors = {}; + webidl.errors.exception = function(message) { + return new TypeError(`${message.header}: ${message.message}`); + }; + webidl.errors.conversionFailed = function(context3) { + const plural = context3.types.length === 1 ? "" : " one of"; + const message = `${context3.argument} could not be converted to${plural}: ${context3.types.join(", ")}.`; + return webidl.errors.exception({ + header: context3.prefix, + message + }); + }; + webidl.errors.invalidArgument = function(context3) { + return webidl.errors.exception({ + header: context3.prefix, + message: `"${context3.value}" is an invalid ${context3.type}.` + }); + }; + webidl.brandCheck = function(V, I, opts) { + if (opts?.strict !== false) { + if (!(V instanceof I)) { + const err = new TypeError("Illegal invocation"); + err.code = "ERR_INVALID_THIS"; + throw err; + } + } else { + if (V?.[Symbol.toStringTag] !== I.prototype[Symbol.toStringTag]) { + const err = new TypeError("Illegal invocation"); + err.code = "ERR_INVALID_THIS"; + throw err; + } + } + }; + webidl.argumentLengthCheck = function({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`, + header: ctx + }); + } + }; + webidl.illegalConstructor = function() { + throw webidl.errors.exception({ + header: "TypeError", + message: "Illegal constructor" + }); + }; + webidl.util.Type = function(V) { + switch (typeof V) { + case "undefined": + return "Undefined"; + case "boolean": + return "Boolean"; + case "string": + return "String"; + case "symbol": + return "Symbol"; + case "number": + return "Number"; + case "bigint": + return "BigInt"; + case "function": + case "object": { + if (V === null) { + return "Null"; + } + return "Object"; + } + } + }; + webidl.util.markAsUncloneable = markAsUncloneable || (() => { + }); + webidl.util.ConvertToInt = function(V, bitLength, signedness, opts) { + let upperBound; + let lowerBound; + if (bitLength === 64) { + upperBound = Math.pow(2, 53) - 1; + if (signedness === "unsigned") { + lowerBound = 0; + } else { + lowerBound = Math.pow(-2, 53) + 1; + } + } else if (signedness === "unsigned") { + lowerBound = 0; + upperBound = Math.pow(2, bitLength) - 1; + } else { + lowerBound = Math.pow(-2, bitLength) - 1; + upperBound = Math.pow(2, bitLength - 1) - 1; + } + let x = Number(V); + if (x === 0) { + x = 0; + } + if (opts?.enforceRange === true) { + if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Could not convert ${webidl.util.Stringify(V)} to an integer.` + }); + } + x = webidl.util.IntegerPart(x); + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: "Integer conversion", + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }); + } + return x; + } + if (!Number.isNaN(x) && opts?.clamp === true) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); + } else { + x = Math.ceil(x); + } + return x; + } + if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + return 0; + } + x = webidl.util.IntegerPart(x); + x = x % Math.pow(2, bitLength); + if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength); + } + return x; + }; + webidl.util.IntegerPart = function(n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; + } + return r; + }; + webidl.util.Stringify = function(V) { + const type = webidl.util.Type(V); + switch (type) { + case "Symbol": + return `Symbol(${V.description})`; + case "Object": + return inspect2(V); + case "String": + return `"${V}"`; + default: + return `${V}`; + } + }; + webidl.sequenceConverter = function(converter) { + return (V, prefix, argument, Iterable) => { + if (webidl.util.Type(V) !== "Object") { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.` + }); + } + const method = typeof Iterable === "function" ? Iterable() : V?.[Symbol.iterator]?.(); + const seq = []; + let index = 0; + if (method === void 0 || typeof method.next !== "function") { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} is not iterable.` + }); + } + while (true) { + const { done, value } = method.next(); + if (done) { + break; + } + seq.push(converter(value, prefix, `${argument}[${index++}]`)); + } + return seq; + }; + }; + webidl.recordConverter = function(keyConverter, valueConverter) { + return (O, prefix, argument) => { + if (webidl.util.Type(O) !== "Object") { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} ("${webidl.util.Type(O)}") is not an Object.` + }); + } + const result = {}; + if (!types3.isProxy(O)) { + const keys2 = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)]; + for (const key of keys2) { + const typedKey = keyConverter(key, prefix, argument); + const typedValue = valueConverter(O[key], prefix, argument); + result[typedKey] = typedValue; + } + return result; + } + const keys = Reflect.ownKeys(O); + for (const key of keys) { + const desc = Reflect.getOwnPropertyDescriptor(O, key); + if (desc?.enumerable) { + const typedKey = keyConverter(key, prefix, argument); + const typedValue = valueConverter(O[key], prefix, argument); + result[typedKey] = typedValue; + } + } + return result; + }; + }; + webidl.interfaceConverter = function(i) { + return (V, prefix, argument, opts) => { + if (opts?.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${i.name}.` + }); + } + return V; + }; + }; + webidl.dictionaryConverter = function(converters) { + return (dictionary, prefix, argument) => { + const type = webidl.util.Type(dictionary); + const dict = {}; + if (type === "Null" || type === "Undefined") { + return dict; + } else if (type !== "Object") { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); + } + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (!Object.hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: prefix, + message: `Missing required key "${key}".` + }); + } + } + let value = dictionary[key]; + const hasDefault = Object.hasOwn(options, "defaultValue"); + if (hasDefault && value !== null) { + value ??= defaultValue(); + } + if (required || hasDefault || value !== void 0) { + value = converter(value, prefix, `${argument}.${key}`); + if (options.allowedValues && !options.allowedValues.includes(value)) { + throw webidl.errors.exception({ + header: prefix, + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.` + }); + } + dict[key] = value; + } + } + return dict; + }; + }; + webidl.nullableConverter = function(converter) { + return (V, prefix, argument) => { + if (V === null) { + return V; + } + return converter(V, prefix, argument); + }; + }; + webidl.converters.DOMString = function(V, prefix, argument, opts) { + if (V === null && opts?.legacyNullToEmptyString) { + return ""; + } + if (typeof V === "symbol") { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} is a symbol, which cannot be converted to a DOMString.` + }); + } + return String(V); + }; + webidl.converters.ByteString = function(V, prefix, argument) { + const x = webidl.converters.DOMString(V, prefix, argument); + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` + ); + } + } + return x; + }; + webidl.converters.USVString = toUSVString; + webidl.converters.boolean = function(V) { + const x = Boolean(V); + return x; + }; + webidl.converters.any = function(V) { + return V; + }; + webidl.converters["long long"] = function(V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 64, "signed", void 0, prefix, argument); + return x; + }; + webidl.converters["unsigned long long"] = function(V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 64, "unsigned", void 0, prefix, argument); + return x; + }; + webidl.converters["unsigned long"] = function(V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 32, "unsigned", void 0, prefix, argument); + return x; + }; + webidl.converters["unsigned short"] = function(V, prefix, argument, opts) { + const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts, prefix, argument); + return x; + }; + webidl.converters.ArrayBuffer = function(V, prefix, argument, opts) { + if (webidl.util.Type(V) !== "Object" || !types3.isAnyArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ["ArrayBuffer"] + }); + } + if (opts?.allowShared === false && types3.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + if (V.resizable || V.growable) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "Received a resizable ArrayBuffer." + }); + } + return V; + }; + webidl.converters.TypedArray = function(V, T, prefix, name, opts) { + if (webidl.util.Type(V) !== "Object" || !types3.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${name} ("${webidl.util.Stringify(V)}")`, + types: [T.name] + }); + } + if (opts?.allowShared === false && types3.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + if (V.buffer.resizable || V.buffer.growable) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "Received a resizable ArrayBuffer." + }); + } + return V; + }; + webidl.converters.DataView = function(V, prefix, name, opts) { + if (webidl.util.Type(V) !== "Object" || !types3.isDataView(V)) { + throw webidl.errors.exception({ + header: prefix, + message: `${name} is not a DataView.` + }); + } + if (opts?.allowShared === false && types3.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "SharedArrayBuffer is not allowed." + }); + } + if (V.buffer.resizable || V.buffer.growable) { + throw webidl.errors.exception({ + header: "ArrayBuffer", + message: "Received a resizable ArrayBuffer." + }); + } + return V; + }; + webidl.converters.BufferSource = function(V, prefix, name, opts) { + if (types3.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false }); + } + if (types3.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false }); + } + if (types3.isDataView(V)) { + return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false }); + } + throw webidl.errors.conversionFailed({ + prefix, + argument: `${name} ("${webidl.util.Stringify(V)}")`, + types: ["BufferSource"] + }); + }; + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.ByteString + ); + webidl.converters["sequence>"] = webidl.sequenceConverter( + webidl.converters["sequence"] + ); + webidl.converters["record"] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString + ); + module.exports = { + webidl + }; + } +}); + +// +var require_util2 = __commonJS({ + ""(exports, module) { + "use strict"; + var { Transform } = __require("node:stream"); + var zlib = __require("node:zlib"); + var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants3(); + var { getGlobalOrigin } = require_global(); + var { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require_data_url(); + var { performance: performance2 } = __require("node:perf_hooks"); + var { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require_util(); + var assert2 = __require("node:assert"); + var { isUint8Array } = __require("node:util/types"); + var { webidl } = require_webidl(); + var supportedHashes = []; + var crypto; + try { + crypto = __require("node:crypto"); + const possibleRelevantHashes = ["sha256", "sha384", "sha512"]; + supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)); + } catch { + } + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); + } + function responseLocationURL(response, requestFragment) { + if (!redirectStatusSet.has(response.status)) { + return null; + } + let location = response.headersList.get("location", true); + if (location !== null && isValidHeaderValue(location)) { + if (!isValidEncodedURL(location)) { + location = normalizeBinaryStringToUtf8(location); + } + location = new URL(location, responseURL(response)); + } + if (location && !location.hash) { + location.hash = requestFragment; + } + return location; + } + function isValidEncodedURL(url) { + for (let i = 0; i < url.length; ++i) { + const code = url.charCodeAt(i); + if (code > 126 || // Non-US-ASCII + DEL + code < 32) { + return false; + } + } + return true; + } + function normalizeBinaryStringToUtf8(value) { + return Buffer.from(value, "binary").toString("utf8"); + } + function requestCurrentURL(request2) { + return request2.urlList[request2.urlList.length - 1]; + } + function requestBadPort(request2) { + const url = requestCurrentURL(request2); + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return "blocked"; + } + return "allowed"; + } + function isErrorLike(object) { + return object instanceof Error || (object?.constructor?.name === "Error" || object?.constructor?.name === "DOMException"); + } + function isValidReasonPhrase(statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i); + if (!(c === 9 || // HTAB + c >= 32 && c <= 126 || // SP / VCHAR + c >= 128 && c <= 255)) { + return false; + } + } + return true; + } + var isValidHeaderName = isValidHTTPToken; + function isValidHeaderValue(potentialValue) { + return (potentialValue[0] === " " || potentialValue[0] === " " || potentialValue[potentialValue.length - 1] === " " || potentialValue[potentialValue.length - 1] === " " || potentialValue.includes("\n") || potentialValue.includes("\r") || potentialValue.includes("\0")) === false; + } + function setRequestReferrerPolicyOnRedirect(request2, actualResponse) { + const { headersList } = actualResponse; + const policyHeader = (headersList.get("referrer-policy", true) ?? "").split(","); + let policy = ""; + if (policyHeader.length > 0) { + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token)) { + policy = token; + break; + } + } + } + if (policy !== "") { + request2.referrerPolicy = policy; + } + } + function crossOriginResourcePolicyCheck() { + return "allowed"; + } + function corsCheck() { + return "success"; + } + function TAOCheck() { + return "success"; + } + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set("sec-fetch-mode", header, true); + } + function appendRequestOriginHeader(request2) { + let serializedOrigin = request2.origin; + if (serializedOrigin === "client" || serializedOrigin === void 0) { + return; + } + if (request2.responseTainting === "cors" || request2.mode === "websocket") { + request2.headersList.append("origin", serializedOrigin, true); + } else if (request2.method !== "GET" && request2.method !== "HEAD") { + switch (request2.referrerPolicy) { + case "no-referrer": + serializedOrigin = null; + break; + case "no-referrer-when-downgrade": + case "strict-origin": + case "strict-origin-when-cross-origin": + if (request2.origin && urlHasHttpsScheme(request2.origin) && !urlHasHttpsScheme(requestCurrentURL(request2))) { + serializedOrigin = null; + } + break; + case "same-origin": + if (!sameOrigin(request2, requestCurrentURL(request2))) { + serializedOrigin = null; + } + break; + default: + } + request2.headersList.append("origin", serializedOrigin, true); + } + } + function coarsenTime(timestamp, crossOriginIsolatedCapability) { + return timestamp; + } + function clampAndCoarsenConnectionTimingInfo(connectionTimingInfo, defaultStartTime, crossOriginIsolatedCapability) { + if (!connectionTimingInfo?.startTime || connectionTimingInfo.startTime < defaultStartTime) { + return { + domainLookupStartTime: defaultStartTime, + domainLookupEndTime: defaultStartTime, + connectionStartTime: defaultStartTime, + connectionEndTime: defaultStartTime, + secureConnectionStartTime: defaultStartTime, + ALPNNegotiatedProtocol: connectionTimingInfo?.ALPNNegotiatedProtocol + }; + } + return { + domainLookupStartTime: coarsenTime(connectionTimingInfo.domainLookupStartTime, crossOriginIsolatedCapability), + domainLookupEndTime: coarsenTime(connectionTimingInfo.domainLookupEndTime, crossOriginIsolatedCapability), + connectionStartTime: coarsenTime(connectionTimingInfo.connectionStartTime, crossOriginIsolatedCapability), + connectionEndTime: coarsenTime(connectionTimingInfo.connectionEndTime, crossOriginIsolatedCapability), + secureConnectionStartTime: coarsenTime(connectionTimingInfo.secureConnectionStartTime, crossOriginIsolatedCapability), + ALPNNegotiatedProtocol: connectionTimingInfo.ALPNNegotiatedProtocol + }; + } + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return coarsenTime(performance2.now(), crossOriginIsolatedCapability); + } + function createOpaqueTimingInfo(timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + }; + } + function makePolicyContainer() { + return { + referrerPolicy: "strict-origin-when-cross-origin" + }; + } + function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; + } + function determineRequestsReferrer(request2) { + const policy = request2.referrerPolicy; + assert2(policy); + let referrerSource = null; + if (request2.referrer === "client") { + const globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === "null") { + return "no-referrer"; + } + referrerSource = new URL(globalOrigin); + } else if (request2.referrer instanceof URL) { + referrerSource = request2.referrer; + } + let referrerURL = stripURLForReferrer(referrerSource); + const referrerOrigin = stripURLForReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + const areSameOrigin = sameOrigin(request2, referrerURL); + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request2.url); + switch (policy) { + case "origin": + return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true); + case "unsafe-url": + return referrerURL; + case "same-origin": + return areSameOrigin ? referrerOrigin : "no-referrer"; + case "origin-when-cross-origin": + return areSameOrigin ? referrerURL : referrerOrigin; + case "strict-origin-when-cross-origin": { + const currentURL = requestCurrentURL(request2); + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL; + } + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return "no-referrer"; + } + return referrerOrigin; + } + case "strict-origin": + case "no-referrer-when-downgrade": + default: + return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin; + } + } + function stripURLForReferrer(url, originOnly) { + assert2(url instanceof URL); + url = new URL(url); + if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") { + return "no-referrer"; + } + url.username = ""; + url.password = ""; + url.hash = ""; + if (originOnly) { + url.pathname = ""; + url.search = ""; + } + return url; + } + function isURLPotentiallyTrustworthy(url) { + if (!(url instanceof URL)) { + return false; + } + if (url.href === "about:blank" || url.href === "about:srcdoc") { + return true; + } + if (url.protocol === "data:") + return true; + if (url.protocol === "file:") + return true; + return isOriginPotentiallyTrustworthy(url.origin); + function isOriginPotentiallyTrustworthy(origin) { + if (origin == null || origin === "null") + return false; + const originAsURL = new URL(origin); + if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") { + return true; + } + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || (originAsURL.hostname === "localhost" || originAsURL.hostname.includes("localhost.")) || originAsURL.hostname.endsWith(".localhost")) { + return true; + } + return false; + } + } + function bytesMatch(bytes, metadataList) { + if (crypto === void 0) { + return true; + } + const parsedMetadata = parseMetadata(metadataList); + if (parsedMetadata === "no metadata") { + return true; + } + if (parsedMetadata.length === 0) { + return true; + } + const strongest = getStrongestMetadata(parsedMetadata); + const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest); + for (const item of metadata) { + const algorithm = item.algo; + const expectedValue = item.hash; + let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64"); + if (actualValue[actualValue.length - 1] === "=") { + if (actualValue[actualValue.length - 2] === "=") { + actualValue = actualValue.slice(0, -2); + } else { + actualValue = actualValue.slice(0, -1); + } + } + if (compareBase64Mixed(actualValue, expectedValue)) { + return true; + } + } + return false; + } + var parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i; + function parseMetadata(metadata) { + const result = []; + let empty = true; + for (const token of metadata.split(" ")) { + empty = false; + const parsedToken = parseHashWithOptions.exec(token); + if (parsedToken === null || parsedToken.groups === void 0 || parsedToken.groups.algo === void 0) { + continue; + } + const algorithm = parsedToken.groups.algo.toLowerCase(); + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups); + } + } + if (empty === true) { + return "no metadata"; + } + return result; + } + function getStrongestMetadata(metadataList) { + let algorithm = metadataList[0].algo; + if (algorithm[3] === "5") { + return algorithm; + } + for (let i = 1; i < metadataList.length; ++i) { + const metadata = metadataList[i]; + if (metadata.algo[3] === "5") { + algorithm = "sha512"; + break; + } else if (algorithm[3] === "3") { + continue; + } else if (metadata.algo[3] === "3") { + algorithm = "sha384"; + } + } + return algorithm; + } + function filterMetadataListByAlgorithm(metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList; + } + let pos = 0; + for (let i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i]; + } + } + metadataList.length = pos; + return metadataList; + } + function compareBase64Mixed(actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false; + } + for (let i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if (actualValue[i] === "+" && expectedValue[i] === "-" || actualValue[i] === "/" && expectedValue[i] === "_") { + continue; + } + return false; + } + } + return true; + } + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) { + } + function sameOrigin(A, B) { + if (A.origin === B.origin && A.origin === "null") { + return true; + } + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; + } + return false; + } + function createDeferredPromise() { + let res; + let rej; + const promise = new Promise((resolve5, reject) => { + res = resolve5; + rej = reject; + }); + return { promise, resolve: res, reject: rej }; + } + function isAborted(fetchParams) { + return fetchParams.controller.state === "aborted"; + } + function isCancelled(fetchParams) { + return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated"; + } + function normalizeMethod(method) { + return normalizedMethodRecordsBase[method.toLowerCase()] ?? method; + } + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError("Value is not JSON serializable"); + } + assert2(typeof result === "string"); + return result; + } + var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); + function createIterator(name, kInternalIterator, keyIndex = 0, valueIndex = 1) { + class FastIterableIterator { + /** @type {any} */ + #target; + /** @type {'key' | 'value' | 'key+value'} */ + #kind; + /** @type {number} */ + #index; + /** + * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object + * @param {unknown} target + * @param {'key' | 'value' | 'key+value'} kind + */ + constructor(target, kind) { + this.#target = target; + this.#kind = kind; + this.#index = 0; + } + next() { + if (typeof this !== "object" || this === null || !(#target in this)) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ); + } + const index = this.#index; + const values = this.#target[kInternalIterator]; + const len = values.length; + if (index >= len) { + return { + value: void 0, + done: true + }; + } + const { [keyIndex]: key, [valueIndex]: value } = values[index]; + this.#index = index + 1; + let result; + switch (this.#kind) { + case "key": + result = key; + break; + case "value": + result = value; + break; + case "key+value": + result = [key, value]; + break; + } + return { + value: result, + done: false + }; + } + } + delete FastIterableIterator.prototype.constructor; + Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype); + Object.defineProperties(FastIterableIterator.prototype, { + [Symbol.toStringTag]: { + writable: false, + enumerable: false, + configurable: true, + value: `${name} Iterator` + }, + next: { writable: true, enumerable: true, configurable: true } + }); + return function(target, kind) { + return new FastIterableIterator(target, kind); + }; + } + function iteratorMixin(name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) { + const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex); + const properties = { + keys: { + writable: true, + enumerable: true, + configurable: true, + value: function keys() { + webidl.brandCheck(this, object); + return makeIterator(this, "key"); + } + }, + values: { + writable: true, + enumerable: true, + configurable: true, + value: function values() { + webidl.brandCheck(this, object); + return makeIterator(this, "value"); + } + }, + entries: { + writable: true, + enumerable: true, + configurable: true, + value: function entries() { + webidl.brandCheck(this, object); + return makeIterator(this, "key+value"); + } + }, + forEach: { + writable: true, + enumerable: true, + configurable: true, + value: function forEach(callbackfn, thisArg = globalThis) { + webidl.brandCheck(this, object); + webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`); + if (typeof callbackfn !== "function") { + throw new TypeError( + `Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.` + ); + } + for (const { 0: key, 1: value } of makeIterator(this, "key+value")) { + callbackfn.call(thisArg, value, key, this); + } + } + } + }; + return Object.defineProperties(object.prototype, { + ...properties, + [Symbol.iterator]: { + writable: true, + enumerable: false, + configurable: true, + value: properties.entries.value + } + }); + } + async function fullyReadBody(body, processBody, processBodyError) { + const successSteps = processBody; + const errorSteps = processBodyError; + let reader; + try { + reader = body.stream.getReader(); + } catch (e) { + errorSteps(e); + return; + } + try { + successSteps(await readAllBytes(reader)); + } catch (e) { + errorSteps(e); + } + } + function isReadableStreamLike(stream) { + return stream instanceof ReadableStream || stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function"; + } + function readableStreamClose(controller) { + try { + controller.close(); + controller.byobRequest?.respond(0); + } catch (err) { + if (!err.message.includes("Controller is already closed") && !err.message.includes("ReadableStream is already closed")) { + throw err; + } + } + } + var invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/; + function isomorphicEncode(input) { + assert2(!invalidIsomorphicEncodeValueRegex.test(input)); + return input; + } + async function readAllBytes(reader) { + const bytes = []; + let byteLength = 0; + while (true) { + const { done, value: chunk } = await reader.read(); + if (done) { + return Buffer.concat(bytes, byteLength); + } + if (!isUint8Array(chunk)) { + throw new TypeError("Received non-Uint8Array chunk"); + } + bytes.push(chunk); + byteLength += chunk.length; + } + } + function urlIsLocal(url) { + assert2("protocol" in url); + const protocol = url.protocol; + return protocol === "about:" || protocol === "blob:" || protocol === "data:"; + } + function urlHasHttpsScheme(url) { + return typeof url === "string" && url[5] === ":" && url[0] === "h" && url[1] === "t" && url[2] === "t" && url[3] === "p" && url[4] === "s" || url.protocol === "https:"; + } + function urlIsHttpHttpsScheme(url) { + assert2("protocol" in url); + const protocol = url.protocol; + return protocol === "http:" || protocol === "https:"; + } + function simpleRangeHeaderValue(value, allowWhitespace) { + const data = value; + if (!data.startsWith("bytes")) { + return "failure"; + } + const position = { position: 5 }; + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === " " || char === " ", + data, + position + ); + } + if (data.charCodeAt(position.position) !== 61) { + return "failure"; + } + position.position++; + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === " " || char === " ", + data, + position + ); + } + const rangeStart = collectASequenceOfCodePoints( + (char) => { + const code = char.charCodeAt(0); + return code >= 48 && code <= 57; + }, + data, + position + ); + const rangeStartValue = rangeStart.length ? Number(rangeStart) : null; + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === " " || char === " ", + data, + position + ); + } + if (data.charCodeAt(position.position) !== 45) { + return "failure"; + } + position.position++; + if (allowWhitespace) { + collectASequenceOfCodePoints( + (char) => char === " " || char === " ", + data, + position + ); + } + const rangeEnd = collectASequenceOfCodePoints( + (char) => { + const code = char.charCodeAt(0); + return code >= 48 && code <= 57; + }, + data, + position + ); + const rangeEndValue = rangeEnd.length ? Number(rangeEnd) : null; + if (position.position < data.length) { + return "failure"; + } + if (rangeEndValue === null && rangeStartValue === null) { + return "failure"; + } + if (rangeStartValue > rangeEndValue) { + return "failure"; + } + return { rangeStartValue, rangeEndValue }; + } + function buildContentRange(rangeStart, rangeEnd, fullLength) { + let contentRange = "bytes "; + contentRange += isomorphicEncode(`${rangeStart}`); + contentRange += "-"; + contentRange += isomorphicEncode(`${rangeEnd}`); + contentRange += "/"; + contentRange += isomorphicEncode(`${fullLength}`); + return contentRange; + } + var InflateStream = class extends Transform { + #zlibOptions; + /** @param {zlib.ZlibOptions} [zlibOptions] */ + constructor(zlibOptions) { + super(); + this.#zlibOptions = zlibOptions; + } + _transform(chunk, encoding, callback) { + if (!this._inflateStream) { + if (chunk.length === 0) { + callback(); + return; + } + this._inflateStream = (chunk[0] & 15) === 8 ? zlib.createInflate(this.#zlibOptions) : zlib.createInflateRaw(this.#zlibOptions); + this._inflateStream.on("data", this.push.bind(this)); + this._inflateStream.on("end", () => this.push(null)); + this._inflateStream.on("error", (err) => this.destroy(err)); + } + this._inflateStream.write(chunk, encoding, callback); + } + _final(callback) { + if (this._inflateStream) { + this._inflateStream.end(); + this._inflateStream = null; + } + callback(); + } + }; + function createInflate(zlibOptions) { + return new InflateStream(zlibOptions); + } + function extractMimeType(headers) { + let charset = null; + let essence = null; + let mimeType = null; + const values = getDecodeSplit("content-type", headers); + if (values === null) { + return "failure"; + } + for (const value of values) { + const temporaryMimeType = parseMIMEType(value); + if (temporaryMimeType === "failure" || temporaryMimeType.essence === "*/*") { + continue; + } + mimeType = temporaryMimeType; + if (mimeType.essence !== essence) { + charset = null; + if (mimeType.parameters.has("charset")) { + charset = mimeType.parameters.get("charset"); + } + essence = mimeType.essence; + } else if (!mimeType.parameters.has("charset") && charset !== null) { + mimeType.parameters.set("charset", charset); + } + } + if (mimeType == null) { + return "failure"; + } + return mimeType; + } + function gettingDecodingSplitting(value) { + const input = value; + const position = { position: 0 }; + const values = []; + let temporaryValue = ""; + while (position.position < input.length) { + temporaryValue += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== ",", + input, + position + ); + if (position.position < input.length) { + if (input.charCodeAt(position.position) === 34) { + temporaryValue += collectAnHTTPQuotedString( + input, + position + ); + if (position.position < input.length) { + continue; + } + } else { + assert2(input.charCodeAt(position.position) === 44); + position.position++; + } + } + temporaryValue = removeChars(temporaryValue, true, true, (char) => char === 9 || char === 32); + values.push(temporaryValue); + temporaryValue = ""; + } + return values; + } + function getDecodeSplit(name, list) { + const value = list.get(name, true); + if (value === null) { + return null; + } + return gettingDecodingSplitting(value); + } + var textDecoder = new TextDecoder(); + function utf8DecodeBytes(buffer) { + if (buffer.length === 0) { + return ""; + } + if (buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191) { + buffer = buffer.subarray(3); + } + const output = textDecoder.decode(buffer); + return output; + } + var EnvironmentSettingsObjectBase = class { + get baseUrl() { + return getGlobalOrigin(); + } + get origin() { + return this.baseUrl?.origin; + } + policyContainer = makePolicyContainer(); + }; + var EnvironmentSettingsObject = class { + settingsObject = new EnvironmentSettingsObjectBase(); + }; + var environmentSettingsObject = new EnvironmentSettingsObject(); + module.exports = { + isAborted, + isCancelled, + isValidEncodedURL, + createDeferredPromise, + ReadableStreamFrom, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + clampAndCoarsenConnectionTimingInfo, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + iteratorMixin, + createIterator, + isValidHeaderName, + isValidHeaderValue, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + simpleRangeHeaderValue, + buildContentRange, + parseMetadata, + createInflate, + extractMimeType, + getDecodeSplit, + utf8DecodeBytes, + environmentSettingsObject + }; + } +}); + +// +var require_symbols2 = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = { + kUrl: Symbol("url"), + kHeaders: Symbol("headers"), + kSignal: Symbol("signal"), + kState: Symbol("state"), + kDispatcher: Symbol("dispatcher") + }; + } +}); + +// +var require_file = __commonJS({ + ""(exports, module) { + "use strict"; + var { Blob: Blob2, File } = __require("node:buffer"); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var FileLike = class _FileLike { + constructor(blobLike, fileName, options = {}) { + const n = fileName; + const t = options.type; + const d = options.lastModified ?? Date.now(); + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + }; + } + stream(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.stream(...args); + } + arrayBuffer(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.arrayBuffer(...args); + } + slice(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.slice(...args); + } + text(...args) { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.text(...args); + } + get size() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.size; + } + get type() { + webidl.brandCheck(this, _FileLike); + return this[kState].blobLike.type; + } + get name() { + webidl.brandCheck(this, _FileLike); + return this[kState].name; + } + get lastModified() { + webidl.brandCheck(this, _FileLike); + return this[kState].lastModified; + } + get [Symbol.toStringTag]() { + return "File"; + } + }; + webidl.converters.Blob = webidl.interfaceConverter(Blob2); + function isFileLike(object) { + return object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File"; + } + module.exports = { FileLike, isFileLike }; + } +}); + +// +var require_formdata = __commonJS({ + ""(exports, module) { + "use strict"; + var { isBlobLike, iteratorMixin } = require_util2(); + var { kState } = require_symbols2(); + var { kEnumerableProperty } = require_util(); + var { FileLike, isFileLike } = require_file(); + var { webidl } = require_webidl(); + var { File: NativeFile } = __require("node:buffer"); + var nodeUtil = __require("node:util"); + var File = globalThis.File ?? NativeFile; + var FormData = class _FormData { + constructor(form) { + webidl.util.markAsUncloneable(this); + if (form !== void 0) { + throw webidl.errors.conversionFailed({ + prefix: "FormData constructor", + argument: "Argument 1", + types: ["undefined"] + }); + } + this[kState] = []; + } + append(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + const prefix = "FormData.append"; + webidl.argumentLengthCheck(arguments, 2, prefix); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name, prefix, "name"); + value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "value", { strict: false }) : webidl.converters.USVString(value, prefix, "value"); + filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "filename") : void 0; + const entry = makeEntry(name, value, filename); + this[kState].push(entry); + } + delete(name) { + webidl.brandCheck(this, _FormData); + const prefix = "FormData.delete"; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, "name"); + this[kState] = this[kState].filter((entry) => entry.name !== name); + } + get(name) { + webidl.brandCheck(this, _FormData); + const prefix = "FormData.get"; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, "name"); + const idx = this[kState].findIndex((entry) => entry.name === name); + if (idx === -1) { + return null; + } + return this[kState][idx].value; + } + getAll(name) { + webidl.brandCheck(this, _FormData); + const prefix = "FormData.getAll"; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, "name"); + return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); + } + has(name) { + webidl.brandCheck(this, _FormData); + const prefix = "FormData.has"; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name, prefix, "name"); + return this[kState].findIndex((entry) => entry.name === name) !== -1; + } + set(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + const prefix = "FormData.set"; + webidl.argumentLengthCheck(arguments, 2, prefix); + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ); + } + name = webidl.converters.USVString(name, prefix, "name"); + value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "name", { strict: false }) : webidl.converters.USVString(value, prefix, "name"); + filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "name") : void 0; + const entry = makeEntry(name, value, filename); + const idx = this[kState].findIndex((entry2) => entry2.name === name); + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name) + ]; + } else { + this[kState].push(entry); + } + } + [nodeUtil.inspect.custom](depth, options) { + const state = this[kState].reduce((a, b) => { + if (a[b.name]) { + if (Array.isArray(a[b.name])) { + a[b.name].push(b.value); + } else { + a[b.name] = [a[b.name], b.value]; + } + } else { + a[b.name] = b.value; + } + return a; + }, { __proto__: null }); + options.depth ??= depth; + options.colors ??= true; + const output = nodeUtil.formatWithOptions(options, state); + return `FormData ${output.slice(output.indexOf("]") + 2)}`; + } + }; + iteratorMixin("FormData", FormData, kState, "name", "value"); + Object.defineProperties(FormData.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + getAll: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "FormData", + configurable: true + } + }); + function makeEntry(name, value, filename) { + if (typeof value === "string") { + } else { + if (!isFileLike(value)) { + value = value instanceof Blob ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type }); + } + if (filename !== void 0) { + const options = { + type: value.type, + lastModified: value.lastModified + }; + value = value instanceof NativeFile ? new File([value], filename, options) : new FileLike(value, filename, options); + } + } + return { name, value }; + } + module.exports = { FormData, makeEntry }; + } +}); + +// +var require_formdata_parser = __commonJS({ + ""(exports, module) { + "use strict"; + var { isUSVString, bufferToLowerCasedHeaderName } = require_util(); + var { utf8DecodeBytes } = require_util2(); + var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url(); + var { isFileLike } = require_file(); + var { makeEntry } = require_formdata(); + var assert2 = __require("node:assert"); + var { File: NodeFile } = __require("node:buffer"); + var File = globalThis.File ?? NodeFile; + var formDataNameBuffer = Buffer.from('form-data; name="'); + var filenameBuffer = Buffer.from("; filename"); + var dd = Buffer.from("--"); + var ddcrlf = Buffer.from("--\r\n"); + function isAsciiString(chars) { + for (let i = 0; i < chars.length; ++i) { + if ((chars.charCodeAt(i) & ~127) !== 0) { + return false; + } + } + return true; + } + function validateBoundary(boundary) { + const length = boundary.length; + if (length < 27 || length > 70) { + return false; + } + for (let i = 0; i < length; ++i) { + const cp = boundary.charCodeAt(i); + if (!(cp >= 48 && cp <= 57 || cp >= 65 && cp <= 90 || cp >= 97 && cp <= 122 || cp === 39 || cp === 45 || cp === 95)) { + return false; + } + } + return true; + } + function multipartFormDataParser(input, mimeType) { + assert2(mimeType !== "failure" && mimeType.essence === "multipart/form-data"); + const boundaryString = mimeType.parameters.get("boundary"); + if (boundaryString === void 0) { + return "failure"; + } + const boundary = Buffer.from(`--${boundaryString}`, "utf8"); + const entryList = []; + const position = { position: 0 }; + while (input[position.position] === 13 && input[position.position + 1] === 10) { + position.position += 2; + } + let trailing = input.length; + while (input[trailing - 1] === 10 && input[trailing - 2] === 13) { + trailing -= 2; + } + if (trailing !== input.length) { + input = input.subarray(0, trailing); + } + while (true) { + if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) { + position.position += boundary.length; + } else { + return "failure"; + } + if (position.position === input.length - 2 && bufferStartsWith(input, dd, position) || position.position === input.length - 4 && bufferStartsWith(input, ddcrlf, position)) { + return entryList; + } + if (input[position.position] !== 13 || input[position.position + 1] !== 10) { + return "failure"; + } + position.position += 2; + const result = parseMultipartFormDataHeaders(input, position); + if (result === "failure") { + return "failure"; + } + let { name, filename, contentType, encoding } = result; + position.position += 2; + let body; + { + const boundaryIndex = input.indexOf(boundary.subarray(2), position.position); + if (boundaryIndex === -1) { + return "failure"; + } + body = input.subarray(position.position, boundaryIndex - 4); + position.position += body.length; + if (encoding === "base64") { + body = Buffer.from(body.toString(), "base64"); + } + } + if (input[position.position] !== 13 || input[position.position + 1] !== 10) { + return "failure"; + } else { + position.position += 2; + } + let value; + if (filename !== null) { + contentType ??= "text/plain"; + if (!isAsciiString(contentType)) { + contentType = ""; + } + value = new File([body], filename, { type: contentType }); + } else { + value = utf8DecodeBytes(Buffer.from(body)); + } + assert2(isUSVString(name)); + assert2(typeof value === "string" && isUSVString(value) || isFileLike(value)); + entryList.push(makeEntry(name, value, filename)); + } + } + function parseMultipartFormDataHeaders(input, position) { + let name = null; + let filename = null; + let contentType = null; + let encoding = null; + while (true) { + if (input[position.position] === 13 && input[position.position + 1] === 10) { + if (name === null) { + return "failure"; + } + return { name, filename, contentType, encoding }; + } + let headerName = collectASequenceOfBytes( + (char) => char !== 10 && char !== 13 && char !== 58, + input, + position + ); + headerName = removeChars(headerName, true, true, (char) => char === 9 || char === 32); + if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) { + return "failure"; + } + if (input[position.position] !== 58) { + return "failure"; + } + position.position++; + collectASequenceOfBytes( + (char) => char === 32 || char === 9, + input, + position + ); + switch (bufferToLowerCasedHeaderName(headerName)) { + case "content-disposition": { + name = filename = null; + if (!bufferStartsWith(input, formDataNameBuffer, position)) { + return "failure"; + } + position.position += 17; + name = parseMultipartFormDataName(input, position); + if (name === null) { + return "failure"; + } + if (bufferStartsWith(input, filenameBuffer, position)) { + let check2 = position.position + filenameBuffer.length; + if (input[check2] === 42) { + position.position += 1; + check2 += 1; + } + if (input[check2] !== 61 || input[check2 + 1] !== 34) { + return "failure"; + } + position.position += 12; + filename = parseMultipartFormDataName(input, position); + if (filename === null) { + return "failure"; + } + } + break; + } + case "content-type": { + let headerValue = collectASequenceOfBytes( + (char) => char !== 10 && char !== 13, + input, + position + ); + headerValue = removeChars(headerValue, false, true, (char) => char === 9 || char === 32); + contentType = isomorphicDecode(headerValue); + break; + } + case "content-transfer-encoding": { + let headerValue = collectASequenceOfBytes( + (char) => char !== 10 && char !== 13, + input, + position + ); + headerValue = removeChars(headerValue, false, true, (char) => char === 9 || char === 32); + encoding = isomorphicDecode(headerValue); + break; + } + default: { + collectASequenceOfBytes( + (char) => char !== 10 && char !== 13, + input, + position + ); + } + } + if (input[position.position] !== 13 && input[position.position + 1] !== 10) { + return "failure"; + } else { + position.position += 2; + } + } + } + function parseMultipartFormDataName(input, position) { + assert2(input[position.position - 1] === 34); + let name = collectASequenceOfBytes( + (char) => char !== 10 && char !== 13 && char !== 34, + input, + position + ); + if (input[position.position] !== 34) { + return null; + } else { + position.position++; + } + name = new TextDecoder().decode(name).replace(/%0A/ig, "\n").replace(/%0D/ig, "\r").replace(/%22/g, '"'); + return name; + } + function collectASequenceOfBytes(condition, input, position) { + let start = position.position; + while (start < input.length && condition(input[start])) { + ++start; + } + return input.subarray(position.position, position.position = start); + } + function removeChars(buf, leading, trailing, predicate) { + let lead = 0; + let trail = buf.length - 1; + if (leading) { + while (lead < buf.length && predicate(buf[lead])) + lead++; + } + if (trailing) { + while (trail > 0 && predicate(buf[trail])) + trail--; + } + return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1); + } + function bufferStartsWith(buffer, start, position) { + if (buffer.length < start.length) { + return false; + } + for (let i = 0; i < start.length; i++) { + if (start[i] !== buffer[position.position + i]) { + return false; + } + } + return true; + } + module.exports = { + multipartFormDataParser, + validateBoundary + }; + } +}); + +// +var require_body = __commonJS({ + ""(exports, module) { + "use strict"; + var util = require_util(); + var { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody, + extractMimeType, + utf8DecodeBytes + } = require_util2(); + var { FormData } = require_formdata(); + var { kState } = require_symbols2(); + var { webidl } = require_webidl(); + var { Blob: Blob2 } = __require("node:buffer"); + var assert2 = __require("node:assert"); + var { isErrored, isDisturbed } = __require("node:stream"); + var { isArrayBuffer } = __require("node:util/types"); + var { serializeAMimeType } = require_data_url(); + var { multipartFormDataParser } = require_formdata_parser(); + var random; + try { + const crypto = __require("node:crypto"); + random = (max) => crypto.randomInt(0, max); + } catch { + random = (max) => Math.floor(Math.random(max)); + } + var textEncoder = new TextEncoder(); + function noop3() { + } + var hasFinalizationRegistry = globalThis.FinalizationRegistry && process.version.indexOf("v18") !== 0; + var streamRegistry; + if (hasFinalizationRegistry) { + streamRegistry = new FinalizationRegistry((weakRef) => { + const stream = weakRef.deref(); + if (stream && !stream.locked && !isDisturbed(stream) && !isErrored(stream)) { + stream.cancel("Response object has been garbage collected").catch(noop3); + } + }); + } + function extractBody(object, keepalive = false) { + let stream = null; + if (object instanceof ReadableStream) { + stream = object; + } else if (isBlobLike(object)) { + stream = object.stream(); + } else { + stream = new ReadableStream({ + async pull(controller) { + const buffer = typeof source === "string" ? textEncoder.encode(source) : source; + if (buffer.byteLength) { + controller.enqueue(buffer); + } + queueMicrotask(() => readableStreamClose(controller)); + }, + start() { + }, + type: "bytes" + }); + } + assert2(isReadableStreamLike(stream)); + let action = null; + let source = null; + let length = null; + let type = null; + if (typeof object === "string") { + source = object; + type = "text/plain;charset=UTF-8"; + } else if (object instanceof URLSearchParams) { + source = object.toString(); + type = "application/x-www-form-urlencoded;charset=UTF-8"; + } else if (isArrayBuffer(object)) { + source = new Uint8Array(object.slice()); + } else if (ArrayBuffer.isView(object)) { + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)); + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, "0")}`; + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const escape3 = (str) => str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); + const blobParts = []; + const rn = new Uint8Array([13, 10]); + length = 0; + let hasUnknownSizeValue = false; + for (const [name, value] of object) { + if (typeof value === "string") { + const chunk2 = textEncoder.encode(prefix + `; name="${escape3(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +`); + blobParts.push(chunk2); + length += chunk2.byteLength; + } else { + const chunk2 = textEncoder.encode(`${prefix}; name="${escape3(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape3(value.name)}"` : "") + `\r +Content-Type: ${value.type || "application/octet-stream"}\r +\r +`); + blobParts.push(chunk2, value, rn); + if (typeof value.size === "number") { + length += chunk2.byteLength + value.size + rn.byteLength; + } else { + hasUnknownSizeValue = true; + } + } + } + const chunk = textEncoder.encode(`--${boundary}--\r +`); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; + } + source = object; + action = async function* () { + for (const part of blobParts) { + if (part.stream) { + yield* part.stream(); + } else { + yield part; + } + } + }; + type = `multipart/form-data; boundary=${boundary}`; + } else if (isBlobLike(object)) { + source = object; + length = object.size; + if (object.type) { + type = object.type; + } + } else if (typeof object[Symbol.asyncIterator] === "function") { + if (keepalive) { + throw new TypeError("keepalive"); + } + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + "Response body object should not be disturbed or locked" + ); + } + stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); + } + if (typeof source === "string" || util.isBuffer(source)) { + length = Buffer.byteLength(source); + } + if (action != null) { + let iterator2; + stream = new ReadableStream({ + async start() { + iterator2 = action(object)[Symbol.asyncIterator](); + }, + async pull(controller) { + const { value, done } = await iterator2.next(); + if (done) { + queueMicrotask(() => { + controller.close(); + controller.byobRequest?.respond(0); + }); + } else { + if (!isErrored(stream)) { + const buffer = new Uint8Array(value); + if (buffer.byteLength) { + controller.enqueue(buffer); + } + } + } + return controller.desiredSize > 0; + }, + async cancel(reason) { + await iterator2.return(); + }, + type: "bytes" + }); + } + const body = { stream, source, length }; + return [body, type]; + } + function safelyExtractBody(object, keepalive = false) { + if (object instanceof ReadableStream) { + assert2(!util.isDisturbed(object), "The body has already been consumed."); + assert2(!object.locked, "The stream is locked."); + } + return extractBody(object, keepalive); + } + function cloneBody(instance, body) { + const [out1, out2] = body.stream.tee(); + body.stream = out1; + return { + stream: out2, + length: body.length, + source: body.source + }; + } + function throwIfAborted(state) { + if (state.aborted) { + throw new DOMException("The operation was aborted.", "AbortError"); + } + } + function bodyMixinMethods(instance) { + const methods = { + blob() { + return consumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this); + if (mimeType === null) { + mimeType = ""; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + return new Blob2([bytes], { type: mimeType }); + }, instance); + }, + arrayBuffer() { + return consumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer; + }, instance); + }, + text() { + return consumeBody(this, utf8DecodeBytes, instance); + }, + json() { + return consumeBody(this, parseJSONFromBytes, instance); + }, + formData() { + return consumeBody(this, (value) => { + const mimeType = bodyMimeType(this); + if (mimeType !== null) { + switch (mimeType.essence) { + case "multipart/form-data": { + const parsed = multipartFormDataParser(value, mimeType); + if (parsed === "failure") { + throw new TypeError("Failed to parse body as FormData."); + } + const fd = new FormData(); + fd[kState] = parsed; + return fd; + } + case "application/x-www-form-urlencoded": { + const entries = new URLSearchParams(value.toString()); + const fd = new FormData(); + for (const [name, value2] of entries) { + fd.append(name, value2); + } + return fd; + } + } + } + throw new TypeError( + 'Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".' + ); + }, instance); + }, + bytes() { + return consumeBody(this, (bytes) => { + return new Uint8Array(bytes); + }, instance); + } + }; + return methods; + } + function mixinBody(prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)); + } + async function consumeBody(object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance); + if (bodyUnusable(object)) { + throw new TypeError("Body is unusable: Body has already been read"); + } + throwIfAborted(object[kState]); + const promise = createDeferredPromise(); + const errorSteps = (error2) => promise.reject(error2); + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); + } + }; + if (object[kState].body == null) { + successSteps(Buffer.allocUnsafe(0)); + return promise.promise; + } + await fullyReadBody(object[kState].body, successSteps, errorSteps); + return promise.promise; + } + function bodyUnusable(object) { + const body = object[kState].body; + return body != null && (body.stream.locked || util.isDisturbed(body.stream)); + } + function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); + } + function bodyMimeType(requestOrResponse) { + const headers = requestOrResponse[kState].headersList; + const mimeType = extractMimeType(headers); + if (mimeType === "failure") { + return null; + } + return mimeType; + } + module.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody, + streamRegistry, + hasFinalizationRegistry, + bodyUnusable + }; + } +}); + +// +var require_client_h1 = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var util = require_util(); + var { channels } = require_diagnostics(); + var timers = require_timers(); + var { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError + } = require_errors(); + var { + kUrl, + kReset: kReset2, + kClient, + kParser, + kBlocking, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kMaxRequests, + kCounter, + kMaxResponseSize, + kOnError, + kResume, + kHTTPContext + } = require_symbols(); + var constants3 = require_constants2(); + var EMPTY_BUF = Buffer.alloc(0); + var FastBuffer = Buffer[Symbol.species]; + var addListener = util.addListener; + var removeAllListeners = util.removeAllListeners; + var extractBody; + async function lazyllhttp() { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; + let mod; + try { + mod = await WebAssembly.compile(require_llhttp_simd_wasm()); + } catch (e) { + mod = await WebAssembly.compile(llhttpWasmData || require_llhttp_wasm()); + } + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + wasm_on_url: (p, at, len) => { + return 0; + }, + wasm_on_status: (p, at, len) => { + assert2(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_begin: (p) => { + assert2(currentParser.ptr === p); + return currentParser.onMessageBegin() || 0; + }, + wasm_on_header_field: (p, at, len) => { + assert2(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_header_value: (p, at, len) => { + assert2(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert2(currentParser.ptr === p); + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0; + }, + wasm_on_body: (p, at, len) => { + assert2(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0; + }, + wasm_on_message_complete: (p) => { + assert2(currentParser.ptr === p); + return currentParser.onMessageComplete() || 0; + } + /* eslint-enable camelcase */ + } + }); + } + var llhttpInstance = null; + var llhttpPromise = lazyllhttp(); + llhttpPromise.catch(); + var currentParser = null; + var currentBufferRef = null; + var currentBufferSize = 0; + var currentBufferPtr = null; + var USE_NATIVE_TIMER = 0; + var USE_FAST_TIMER = 1; + var TIMEOUT_HEADERS = 2 | USE_FAST_TIMER; + var TIMEOUT_BODY = 4 | USE_FAST_TIMER; + var TIMEOUT_KEEP_ALIVE = 8 | USE_NATIVE_TIMER; + var Parser2 = class { + constructor(client, socket, { exports: exports2 }) { + assert2(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); + this.llhttp = exports2; + this.ptr = this.llhttp.llhttp_alloc(constants3.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = null; + this.statusText = ""; + this.upgrade = false; + this.headers = []; + this.headersSize = 0; + this.headersMaxSize = client[kMaxHeadersSize]; + this.shouldKeepAlive = false; + this.paused = false; + this.resume = this.resume.bind(this); + this.bytesRead = 0; + this.keepAlive = ""; + this.contentLength = ""; + this.connection = ""; + this.maxResponseSize = client[kMaxResponseSize]; + } + setTimeout(delay, type) { + if (delay !== this.timeoutValue || type & USE_FAST_TIMER ^ this.timeoutType & USE_FAST_TIMER) { + if (this.timeout) { + timers.clearTimeout(this.timeout); + this.timeout = null; + } + if (delay) { + if (type & USE_FAST_TIMER) { + this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this)); + } else { + this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this)); + this.timeout.unref(); + } + } + this.timeoutValue = delay; + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.timeoutType = type; + } + resume() { + if (this.socket.destroyed || !this.paused) { + return; + } + assert2(this.ptr != null); + assert2(currentParser == null); + this.llhttp.llhttp_resume(this.ptr); + assert2(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + this.paused = false; + this.execute(this.socket.read() || EMPTY_BUF); + this.readMore(); + } + readMore() { + while (!this.paused && this.ptr) { + const chunk = this.socket.read(); + if (chunk === null) { + break; + } + this.execute(chunk); + } + } + execute(data) { + assert2(this.ptr != null); + assert2(currentParser == null); + assert2(!this.paused); + const { socket, llhttp } = this; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); + try { + let ret; + try { + currentBufferRef = data; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); + } catch (err) { + throw err; + } finally { + currentParser = null; + currentBufferRef = null; + } + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; + if (ret !== constants3.ERROR.OK) { + const body = data.subarray(offset); + if (ret === constants3.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(body); + } else if (ret === constants3.ERROR.PAUSED) { + this.paused = true; + socket.unshift(body); + } else { + throw this.createError(ret, body); + } + } + } catch (err) { + util.destroy(socket, err); + } + } + finish() { + assert2(currentParser === null); + assert2(this.ptr != null); + assert2(!this.paused); + const { llhttp } = this; + let ret; + try { + currentParser = this; + ret = llhttp.llhttp_finish(this.ptr); + } finally { + currentParser = null; + } + if (ret === constants3.ERROR.OK) { + return null; + } + if (ret === constants3.ERROR.PAUSED || ret === constants3.ERROR.PAUSED_UPGRADE) { + this.paused = true; + return null; + } + return this.createError(ret, EMPTY_BUF); + } + createError(ret, data) { + const { llhttp, contentLength, bytesRead } = this; + if (contentLength && bytesRead !== parseInt(contentLength, 10)) { + return new ResponseContentLengthMismatchError(); + } + const ptr = llhttp.llhttp_get_error_reason(this.ptr); + let message = ""; + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); + message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")"; + } + return new HTTPParserError(message, constants3.ERROR[ret], data); + } + destroy() { + assert2(this.ptr != null); + assert2(currentParser == null); + this.llhttp.llhttp_free(this.ptr); + this.ptr = null; + this.timeout && timers.clearTimeout(this.timeout); + this.timeout = null; + this.timeoutValue = null; + this.timeoutType = null; + this.paused = false; + } + onStatus(buf) { + this.statusText = buf.toString(); + } + onMessageBegin() { + const { socket, client } = this; + if (socket.destroyed) { + return -1; + } + const request2 = client[kQueue][client[kRunningIdx]]; + if (!request2) { + return -1; + } + request2.onResponseStarted(); + } + onHeaderField(buf) { + const len = this.headers.length; + if ((len & 1) === 0) { + this.headers.push(buf); + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + this.trackHeader(buf.length); + } + onHeaderValue(buf) { + let len = this.headers.length; + if ((len & 1) === 1) { + this.headers.push(buf); + len += 1; + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); + } + const key = this.headers[len - 2]; + if (key.length === 10) { + const headerName = util.bufferToLowerCasedHeaderName(key); + if (headerName === "keep-alive") { + this.keepAlive += buf.toString(); + } else if (headerName === "connection") { + this.connection += buf.toString(); + } + } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === "content-length") { + this.contentLength += buf.toString(); + } + this.trackHeader(buf.length); + } + trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); + } + } + onUpgrade(head) { + const { upgrade, client, socket, headers, statusCode } = this; + assert2(upgrade); + assert2(client[kSocket] === socket); + assert2(!socket.destroyed); + assert2(!this.paused); + assert2((headers.length & 1) === 0); + const request2 = client[kQueue][client[kRunningIdx]]; + assert2(request2); + assert2(request2.upgrade || request2.method === "CONNECT"); + this.statusCode = null; + this.statusText = ""; + this.shouldKeepAlive = null; + this.headers = []; + this.headersSize = 0; + socket.unshift(head); + socket[kParser].destroy(); + socket[kParser] = null; + socket[kClient] = null; + socket[kError] = null; + removeAllListeners(socket); + client[kSocket] = null; + client[kHTTPContext] = null; + client[kQueue][client[kRunningIdx]++] = null; + client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); + try { + request2.onUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + client[kResume](); + } + onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this; + if (socket.destroyed) { + return -1; + } + const request2 = client[kQueue][client[kRunningIdx]]; + if (!request2) { + return -1; + } + assert2(!this.upgrade); + assert2(this.statusCode < 200); + if (statusCode === 100) { + util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket))); + return -1; + } + if (upgrade && !request2.upgrade) { + util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket))); + return -1; + } + assert2(this.timeoutType === TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD. + request2.method === "HEAD" && !socket[kReset2] && this.connection.toLowerCase() === "keep-alive"; + if (this.statusCode >= 200) { + const bodyTimeout = request2.bodyTimeout != null ? request2.bodyTimeout : client[kBodyTimeout]; + this.setTimeout(bodyTimeout, TIMEOUT_BODY); + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + if (request2.method === "CONNECT") { + assert2(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert2(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert2((this.headers.length & 1) === 0); + this.headers = []; + this.headersSize = 0; + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null; + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ); + if (timeout <= 0) { + socket[kReset2] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; + } + } else { + socket[kReset2] = true; + } + const pause = request2.onHeaders(statusCode, headers, this.resume, statusText) === false; + if (request2.aborted) { + return -1; + } + if (request2.method === "HEAD") { + return 1; + } + if (statusCode < 200) { + return 1; + } + if (socket[kBlocking]) { + socket[kBlocking] = false; + client[kResume](); + } + return pause ? constants3.ERROR.PAUSED : 0; + } + onBody(buf) { + const { client, socket, statusCode, maxResponseSize } = this; + if (socket.destroyed) { + return -1; + } + const request2 = client[kQueue][client[kRunningIdx]]; + assert2(request2); + assert2(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } + } + assert2(statusCode >= 200); + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()); + return -1; + } + this.bytesRead += buf.length; + if (request2.onData(buf) === false) { + return constants3.ERROR.PAUSED; + } + } + onMessageComplete() { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return; + } + assert2(statusCode >= 100); + assert2((this.headers.length & 1) === 0); + const request2 = client[kQueue][client[kRunningIdx]]; + assert2(request2); + this.statusCode = null; + this.statusText = ""; + this.bytesRead = 0; + this.contentLength = ""; + this.keepAlive = ""; + this.connection = ""; + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return; + } + if (request2.method !== "HEAD" && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + request2.onComplete(headers); + client[kQueue][client[kRunningIdx]++] = null; + if (socket[kWriting]) { + assert2(client[kRunning] === 0); + util.destroy(socket, new InformationalError("reset")); + return constants3.ERROR.PAUSED; + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError("reset")); + return constants3.ERROR.PAUSED; + } else if (socket[kReset2] && client[kRunning] === 0) { + util.destroy(socket, new InformationalError("reset")); + return constants3.ERROR.PAUSED; + } else if (client[kPipelining] == null || client[kPipelining] === 1) { + setImmediate(() => client[kResume]()); + } else { + client[kResume](); + } + } + }; + function onParserTimeout(parser2) { + const { socket, timeoutType, client, paused } = parser2.deref(); + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert2(!paused, "cannot be paused while waiting for headers"); + util.destroy(socket, new HeadersTimeoutError()); + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!paused) { + util.destroy(socket, new BodyTimeoutError()); + } + } else if (timeoutType === TIMEOUT_KEEP_ALIVE) { + assert2(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError("socket idle timeout")); + } + } + async function connectH1(client, socket) { + client[kSocket] = socket; + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise; + llhttpPromise = null; + } + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset2] = false; + socket[kBlocking] = false; + socket[kParser] = new Parser2(client, socket, llhttpInstance); + addListener(socket, "error", function(err) { + assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + const parser2 = this[kParser]; + if (err.code === "ECONNRESET" && parser2.statusCode && !parser2.shouldKeepAlive) { + const parserErr = parser2.finish(); + if (parserErr) { + this[kError] = parserErr; + this[kClient][kOnError](parserErr); + } + return; + } + this[kError] = err; + this[kClient][kOnError](err); + }); + addListener(socket, "readable", function() { + const parser2 = this[kParser]; + if (parser2) { + parser2.readMore(); + } + }); + addListener(socket, "end", function() { + const parser2 = this[kParser]; + if (parser2.statusCode && !parser2.shouldKeepAlive) { + const parserErr = parser2.finish(); + if (parserErr) { + util.destroy(this, parserErr); + } + return; + } + util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); + }); + addListener(socket, "close", function() { + const client2 = this[kClient]; + const parser2 = this[kParser]; + if (parser2) { + if (!this[kError] && parser2.statusCode && !parser2.shouldKeepAlive) { + this[kError] = parser2.finish() || this[kError]; + } + this[kParser].destroy(); + this[kParser] = null; + } + const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); + client2[kSocket] = null; + client2[kHTTPContext] = null; + if (client2.destroyed) { + assert2(client2[kPending] === 0); + const requests = client2[kQueue].splice(client2[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(client2, request2, err); + } + } else if (client2[kRunning] > 0 && err.code !== "UND_ERR_INFO") { + const request2 = client2[kQueue][client2[kRunningIdx]]; + client2[kQueue][client2[kRunningIdx]++] = null; + util.errorRequest(client2, request2, err); + } + client2[kPendingIdx] = client2[kRunningIdx]; + assert2(client2[kRunning] === 0); + client2.emit("disconnect", client2[kUrl], [client2], err); + client2[kResume](); + }); + let closed = false; + socket.on("close", () => { + closed = true; + }); + return { + version: "h1", + defaultPipelining: 1, + write(...args) { + return writeH1(client, ...args); + }, + resume() { + resumeH1(client); + }, + destroy(err, callback) { + if (closed) { + queueMicrotask(callback); + } else { + socket.destroy(err).on("close", callback); + } + }, + get destroyed() { + return socket.destroyed; + }, + busy(request2) { + if (socket[kWriting] || socket[kReset2] || socket[kBlocking]) { + return true; + } + if (request2) { + if (client[kRunning] > 0 && !request2.idempotent) { + return true; + } + if (client[kRunning] > 0 && (request2.upgrade || request2.method === "CONNECT")) { + return true; + } + if (client[kRunning] > 0 && util.bodyLength(request2.body) !== 0 && (util.isStream(request2.body) || util.isAsyncIterable(request2.body) || util.isFormDataLike(request2.body))) { + return true; + } + } + return false; + } + }; + } + function resumeH1(client) { + const socket = client[kSocket]; + if (socket && !socket.destroyed) { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref(); + socket[kNoRef] = true; + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref(); + socket[kNoRef] = false; + } + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE); + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request2 = client[kQueue][client[kRunningIdx]]; + const headersTimeout = request2.headersTimeout != null ? request2.headersTimeout : client[kHeadersTimeout]; + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); + } + } + } + } + function shouldSendContentLength(method) { + return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; + } + function writeH1(client, request2) { + const { method, path: path5, host, upgrade, blocking, reset } = request2; + let { body, headers, contentLength } = request2; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; + if (util.isFormDataLike(body)) { + if (!extractBody) { + extractBody = require_body().extractBody; + } + const [bodyStream, contentType] = extractBody(body); + if (request2.contentType == null) { + headers.push("content-type", contentType); + } + body = bodyStream.stream; + contentLength = bodyStream.length; + } else if (util.isBlobLike(body) && request2.contentType == null && body.type) { + headers.push("content-type", body.type); + } + if (body && typeof body.read === "function") { + body.read(0); + } + const bodyLength = util.bodyLength(body); + contentLength = bodyLength ?? contentLength; + if (contentLength === null) { + contentLength = request2.contentLength; + } + if (contentLength === 0 && !expectsPayload) { + contentLength = null; + } + if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength !== null && request2.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + util.errorRequest(client, request2, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + const socket = client[kSocket]; + const abort = (err) => { + if (request2.aborted || request2.completed) { + return; + } + util.errorRequest(client, request2, err || new RequestAbortedError()); + util.destroy(body); + util.destroy(socket, new InformationalError("aborted")); + }; + try { + request2.onConnect(abort); + } catch (err) { + util.errorRequest(client, request2, err); + } + if (request2.aborted) { + return false; + } + if (method === "HEAD") { + socket[kReset2] = true; + } + if (upgrade || method === "CONNECT") { + socket[kReset2] = true; + } + if (reset != null) { + socket[kReset2] = reset; + } + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset2] = true; + } + if (blocking) { + socket[kBlocking] = true; + } + let header = `${method} ${path5} HTTP/1.1\r +`; + if (typeof host === "string") { + header += `host: ${host}\r +`; + } else { + header += client[kHostHeader]; + } + if (upgrade) { + header += `connection: upgrade\r +upgrade: ${upgrade}\r +`; + } else if (client[kPipelining] && !socket[kReset2]) { + header += "connection: keep-alive\r\n"; + } else { + header += "connection: close\r\n"; + } + if (Array.isArray(headers)) { + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0]; + const val = headers[n + 1]; + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + header += `${key}: ${val[i]}\r +`; + } + } else { + header += `${key}: ${val}\r +`; + } + } + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request: request2, headers: header, socket }); + } + if (!body || bodyLength === 0) { + writeBuffer(abort, null, client, request2, socket, contentLength, header, expectsPayload); + } else if (util.isBuffer(body)) { + writeBuffer(abort, body, client, request2, socket, contentLength, header, expectsPayload); + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable(abort, body.stream(), client, request2, socket, contentLength, header, expectsPayload); + } else { + writeBlob(abort, body, client, request2, socket, contentLength, header, expectsPayload); + } + } else if (util.isStream(body)) { + writeStream(abort, body, client, request2, socket, contentLength, header, expectsPayload); + } else if (util.isIterable(body)) { + writeIterable(abort, body, client, request2, socket, contentLength, header, expectsPayload); + } else { + assert2(false); + } + return true; + } + function writeStream(abort, body, client, request2, socket, contentLength, header, expectsPayload) { + assert2(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); + let finished = false; + const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header }); + const onData = function(chunk) { + if (finished) { + return; + } + try { + if (!writer.write(chunk) && this.pause) { + this.pause(); + } + } catch (err) { + util.destroy(this, err); + } + }; + const onDrain = function() { + if (finished) { + return; + } + if (body.resume) { + body.resume(); + } + }; + const onClose = function() { + queueMicrotask(() => { + body.removeListener("error", onFinished); + }); + if (!finished) { + const err = new RequestAbortedError(); + queueMicrotask(() => onFinished(err)); + } + }; + const onFinished = function(err) { + if (finished) { + return; + } + finished = true; + assert2(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); + socket.off("drain", onDrain).off("error", onFinished); + body.removeListener("data", onData).removeListener("end", onFinished).removeListener("close", onClose); + if (!err) { + try { + writer.end(); + } catch (er) { + err = er; + } + } + writer.destroy(err); + if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { + util.destroy(body, err); + } else { + util.destroy(body); + } + }; + body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onClose); + if (body.resume) { + body.resume(); + } + socket.on("drain", onDrain).on("error", onFinished); + if (body.errorEmitted ?? body.errored) { + setImmediate(() => onFinished(body.errored)); + } else if (body.endEmitted ?? body.readableEnded) { + setImmediate(() => onFinished(null)); + } + if (body.closeEmitted ?? body.closed) { + setImmediate(onClose); + } + } + function writeBuffer(abort, body, client, request2, socket, contentLength, header, expectsPayload) { + try { + if (!body) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + assert2(contentLength === null, "no body must not have content length"); + socket.write(`${header}\r +`, "latin1"); + } + } else if (util.isBuffer(body)) { + assert2(contentLength === body.byteLength, "buffer body must have content length"); + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(body); + socket.uncork(); + request2.onBodySent(body); + if (!expectsPayload && request2.reset !== false) { + socket[kReset2] = true; + } + } + request2.onRequestSent(); + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeBlob(abort, body, client, request2, socket, contentLength, header, expectsPayload) { + assert2(contentLength === body.size, "blob body must have content length"); + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError(); + } + const buffer = Buffer.from(await body.arrayBuffer()); + socket.cork(); + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + socket.write(buffer); + socket.uncork(); + request2.onBodySent(buffer); + request2.onRequestSent(); + if (!expectsPayload && request2.reset !== false) { + socket[kReset2] = true; + } + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeIterable(abort, body, client, request2, socket, contentLength, header, expectsPayload) { + assert2(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); + } + } + const waitForDrain = () => new Promise((resolve5, reject) => { + assert2(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve5; + } + }); + socket.on("close", onDrain).on("drain", onDrain); + const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header }); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + if (!writer.write(chunk)) { + await waitForDrain(); + } + } + writer.end(); + } catch (err) { + writer.destroy(err); + } finally { + socket.off("close", onDrain).off("drain", onDrain); + } + } + var AsyncWriter = class { + constructor({ abort, socket, request: request2, contentLength, client, expectsPayload, header }) { + this.socket = socket; + this.request = request2; + this.contentLength = contentLength; + this.client = client; + this.bytesWritten = 0; + this.expectsPayload = expectsPayload; + this.header = header; + this.abort = abort; + socket[kWriting] = true; + } + write(chunk) { + const { socket, request: request2, contentLength, client, bytesWritten, expectsPayload, header } = this; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return false; + } + const len = Buffer.byteLength(chunk); + if (!len) { + return true; + } + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + socket.cork(); + if (bytesWritten === 0) { + if (!expectsPayload && request2.reset !== false) { + socket[kReset2] = true; + } + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r +`, "latin1"); + } else { + socket.write(`${header}content-length: ${contentLength}\r +\r +`, "latin1"); + } + } + if (contentLength === null) { + socket.write(`\r +${len.toString(16)}\r +`, "latin1"); + } + this.bytesWritten += len; + const ret = socket.write(chunk); + socket.uncork(); + request2.onBodySent(chunk); + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + } + return ret; + } + end() { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request: request2 } = this; + request2.onRequestSent(); + socket[kWriting] = false; + if (socket[kError]) { + throw socket[kError]; + } + if (socket.destroyed) { + return; + } + if (bytesWritten === 0) { + if (expectsPayload) { + socket.write(`${header}content-length: 0\r +\r +`, "latin1"); + } else { + socket.write(`${header}\r +`, "latin1"); + } + } else if (contentLength === null) { + socket.write("\r\n0\r\n\r\n", "latin1"); + } + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError(); + } else { + process.emitWarning(new RequestContentLengthMismatchError()); + } + } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh(); + } + } + client[kResume](); + } + destroy(err) { + const { socket, client, abort } = this; + socket[kWriting] = false; + if (err) { + assert2(client[kRunning] <= 1, "pipeline should only contain this request"); + abort(err); + } + } + }; + module.exports = connectH1; + } +}); + +// +var require_client_h2 = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { pipeline } = __require("node:stream"); + var util = require_util(); + var { + RequestContentLengthMismatchError, + RequestAbortedError, + SocketError, + InformationalError + } = require_errors(); + var { + kUrl, + kReset: kReset2, + kClient, + kRunning, + kPending, + kQueue, + kPendingIdx, + kRunningIdx, + kError, + kSocket, + kStrictContentLength, + kOnError, + kMaxConcurrentStreams, + kHTTP2Session, + kResume, + kSize, + kHTTPContext + } = require_symbols(); + var kOpenStreams = Symbol("open streams"); + var extractBody; + var h2ExperimentalWarned = false; + var http2; + try { + http2 = __require("node:http2"); + } catch { + http2 = { constants: {} }; + } + var { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } + } = http2; + function parseH2Headers(headers) { + const result = []; + for (const [name, value] of Object.entries(headers)) { + if (Array.isArray(value)) { + for (const subvalue of value) { + result.push(Buffer.from(name), Buffer.from(subvalue)); + } + } else { + result.push(Buffer.from(name), Buffer.from(value)); + } + } + return result; + } + async function connectH2(client, socket) { + client[kSocket] = socket; + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true; + process.emitWarning("H2 support is experimental, expect them to change at any time.", { + code: "UNDICI-H2" + }); + } + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kMaxConcurrentStreams] + }); + session[kOpenStreams] = 0; + session[kClient] = client; + session[kSocket] = socket; + util.addListener(session, "error", onHttp2SessionError); + util.addListener(session, "frameError", onHttp2FrameError); + util.addListener(session, "end", onHttp2SessionEnd); + util.addListener(session, "goaway", onHTTP2GoAway); + util.addListener(session, "close", function() { + const { [kClient]: client2 } = this; + const { [kSocket]: socket2 } = client2; + const err = this[kSocket][kError] || this[kError] || new SocketError("closed", util.getSocketInfo(socket2)); + client2[kHTTP2Session] = null; + if (client2.destroyed) { + assert2(client2[kPending] === 0); + const requests = client2[kQueue].splice(client2[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(client2, request2, err); + } + } + }); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + util.addListener(socket, "error", function(err) { + assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + this[kError] = err; + this[kClient][kOnError](err); + }); + util.addListener(socket, "end", function() { + util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); + }); + util.addListener(socket, "close", function() { + const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); + client[kSocket] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert2(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); + }); + let closed = false; + socket.on("close", () => { + closed = true; + }); + return { + version: "h2", + defaultPipelining: Infinity, + write(...args) { + return writeH2(client, ...args); + }, + resume() { + resumeH2(client); + }, + destroy(err, callback) { + if (closed) { + queueMicrotask(callback); + } else { + socket.destroy(err).on("close", callback); + } + }, + get destroyed() { + return socket.destroyed; + }, + busy() { + return false; + } + }; + } + function resumeH2(client) { + const socket = client[kSocket]; + if (socket?.destroyed === false) { + if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) { + socket.unref(); + client[kHTTP2Session].unref(); + } else { + socket.ref(); + client[kHTTP2Session].ref(); + } + } + } + function onHttp2SessionError(err) { + assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); + this[kSocket][kError] = err; + this[kClient][kOnError](err); + } + function onHttp2FrameError(type, code, id) { + if (id === 0) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`); + this[kSocket][kError] = err; + this[kClient][kOnError](err); + } + } + function onHttp2SessionEnd() { + const err = new SocketError("other side closed", util.getSocketInfo(this[kSocket])); + this.destroy(err); + util.destroy(this[kSocket], err); + } + function onHTTP2GoAway(code) { + const err = this[kError] || new SocketError(`HTTP/2: "GOAWAY" frame received with code ${code}`, util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (this[kHTTP2Session] != null) { + this[kHTTP2Session].destroy(err); + this[kHTTP2Session] = null; + } + util.destroy(this[kSocket], err); + if (client[kRunningIdx] < client[kQueue].length) { + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + client[kPendingIdx] = client[kRunningIdx]; + } + assert2(client[kRunning] === 0); + client.emit("disconnect", client[kUrl], [client], err); + client[kResume](); + } + function shouldSendContentLength(method) { + return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; + } + function writeH2(client, request2) { + const session = client[kHTTP2Session]; + const { method, path: path5, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2; + let { body } = request2; + if (upgrade) { + util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); + return false; + } + const headers = {}; + for (let n = 0; n < reqHeaders.length; n += 2) { + const key = reqHeaders[n + 0]; + const val = reqHeaders[n + 1]; + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (headers[key]) { + headers[key] += `,${val[i]}`; + } else { + headers[key] = val[i]; + } + } + } else { + headers[key] = val; + } + } + let stream; + const { hostname, port } = client[kUrl]; + headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ""}`; + headers[HTTP2_HEADER_METHOD] = method; + const abort = (err) => { + if (request2.aborted || request2.completed) { + return; + } + err = err || new RequestAbortedError(); + util.errorRequest(client, request2, err); + if (stream != null) { + util.destroy(stream, err); + } + util.destroy(body, err); + client[kQueue][client[kRunningIdx]++] = null; + client[kResume](); + }; + try { + request2.onConnect(abort); + } catch (err) { + util.errorRequest(client, request2, err); + } + if (request2.aborted) { + return false; + } + if (method === "CONNECT") { + session.ref(); + stream = session.request(headers, { endStream: false, signal }); + if (stream.id && !stream.pending) { + request2.onUpgrade(null, null, stream); + ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; + } else { + stream.once("ready", () => { + request2.onUpgrade(null, null, stream); + ++session[kOpenStreams]; + client[kQueue][client[kRunningIdx]++] = null; + }); + } + stream.once("close", () => { + session[kOpenStreams] -= 1; + if (session[kOpenStreams] === 0) + session.unref(); + }); + return true; + } + headers[HTTP2_HEADER_PATH] = path5; + headers[HTTP2_HEADER_SCHEME] = "https"; + const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; + if (body && typeof body.read === "function") { + body.read(0); + } + let contentLength = util.bodyLength(body); + if (util.isFormDataLike(body)) { + extractBody ??= require_body().extractBody; + const [bodyStream, contentType] = extractBody(body); + headers["content-type"] = contentType; + body = bodyStream.stream; + contentLength = bodyStream.length; + } + if (contentLength == null) { + contentLength = request2.contentLength; + } + if (contentLength === 0 || !expectsPayload) { + contentLength = null; + } + if (shouldSendContentLength(method) && contentLength > 0 && request2.contentLength != null && request2.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + util.errorRequest(client, request2, new RequestContentLengthMismatchError()); + return false; + } + process.emitWarning(new RequestContentLengthMismatchError()); + } + if (contentLength != null) { + assert2(body, "no body must not have content length"); + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; + } + session.ref(); + const shouldEndStream = method === "GET" || method === "HEAD" || body === null; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = "100-continue"; + stream = session.request(headers, { endStream: shouldEndStream, signal }); + stream.once("continue", writeBodyH2); + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }); + writeBodyH2(); + } + ++session[kOpenStreams]; + stream.once("response", (headers2) => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2; + request2.onResponseStarted(); + if (request2.aborted) { + const err = new RequestAbortedError(); + util.errorRequest(client, request2, err); + util.destroy(stream, err); + return; + } + if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) { + stream.pause(); + } + stream.on("data", (chunk) => { + if (request2.onData(chunk) === false) { + stream.pause(); + } + }); + }); + stream.once("end", () => { + if (stream.state?.state == null || stream.state.state < 6) { + request2.onComplete([]); + } + if (session[kOpenStreams] === 0) { + session.unref(); + } + abort(new InformationalError("HTTP/2: stream half-closed (remote)")); + client[kQueue][client[kRunningIdx]++] = null; + client[kPendingIdx] = client[kRunningIdx]; + client[kResume](); + }); + stream.once("close", () => { + session[kOpenStreams] -= 1; + if (session[kOpenStreams] === 0) { + session.unref(); + } + }); + stream.once("error", function(err) { + abort(err); + }); + stream.once("frameError", (type, code) => { + abort(new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)); + }); + return true; + function writeBodyH2() { + if (!body || contentLength === 0) { + writeBuffer( + abort, + stream, + null, + client, + request2, + client[kSocket], + contentLength, + expectsPayload + ); + } else if (util.isBuffer(body)) { + writeBuffer( + abort, + stream, + body, + client, + request2, + client[kSocket], + contentLength, + expectsPayload + ); + } else if (util.isBlobLike(body)) { + if (typeof body.stream === "function") { + writeIterable( + abort, + stream, + body.stream(), + client, + request2, + client[kSocket], + contentLength, + expectsPayload + ); + } else { + writeBlob( + abort, + stream, + body, + client, + request2, + client[kSocket], + contentLength, + expectsPayload + ); + } + } else if (util.isStream(body)) { + writeStream( + abort, + client[kSocket], + expectsPayload, + stream, + body, + client, + request2, + contentLength + ); + } else if (util.isIterable(body)) { + writeIterable( + abort, + stream, + body, + client, + request2, + client[kSocket], + contentLength, + expectsPayload + ); + } else { + assert2(false); + } + } + } + function writeBuffer(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) { + try { + if (body != null && util.isBuffer(body)) { + assert2(contentLength === body.byteLength, "buffer body must have content length"); + h2stream.cork(); + h2stream.write(body); + h2stream.uncork(); + h2stream.end(); + request2.onBodySent(body); + } + if (!expectsPayload) { + socket[kReset2] = true; + } + request2.onRequestSent(); + client[kResume](); + } catch (error2) { + abort(error2); + } + } + function writeStream(abort, socket, expectsPayload, h2stream, body, client, request2, contentLength) { + assert2(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(pipe, err); + abort(err); + } else { + util.removeAllListeners(pipe); + request2.onRequestSent(); + if (!expectsPayload) { + socket[kReset2] = true; + } + client[kResume](); + } + } + ); + util.addListener(pipe, "data", onPipeData); + function onPipeData(chunk) { + request2.onBodySent(chunk); + } + } + async function writeBlob(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) { + assert2(contentLength === body.size, "blob body must have content length"); + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError(); + } + const buffer = Buffer.from(await body.arrayBuffer()); + h2stream.cork(); + h2stream.write(buffer); + h2stream.uncork(); + h2stream.end(); + request2.onBodySent(buffer); + request2.onRequestSent(); + if (!expectsPayload) { + socket[kReset2] = true; + } + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeIterable(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) { + assert2(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); + let callback = null; + function onDrain() { + if (callback) { + const cb = callback; + callback = null; + cb(); + } + } + const waitForDrain = () => new Promise((resolve5, reject) => { + assert2(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve5; + } + }); + h2stream.on("close", onDrain).on("drain", onDrain); + try { + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError]; + } + const res = h2stream.write(chunk); + request2.onBodySent(chunk); + if (!res) { + await waitForDrain(); + } + } + h2stream.end(); + request2.onRequestSent(); + if (!expectsPayload) { + socket[kReset2] = true; + } + client[kResume](); + } catch (err) { + abort(err); + } finally { + h2stream.off("close", onDrain).off("drain", onDrain); + } + } + module.exports = connectH2; + } +}); + +// +var require_redirect_handler = __commonJS({ + ""(exports, module) { + "use strict"; + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var assert2 = __require("node:assert"); + var { InvalidArgumentError } = require_errors(); + var EE = __require("node:events"); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var kBody = Symbol("body"); + var BodyAsyncIterable = class { + constructor(body) { + this[kBody] = body; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert2(!this[kBodyUsed], "disturbed"); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + var RedirectHandler = class { + constructor(dispatch, maxRedirections, opts, handler2) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + util.validateHandler(handler2, opts.method, opts.upgrade); + this.dispatch = dispatch; + this.location = null; + this.abort = null; + this.opts = { ...opts, maxRedirections: 0 }; + this.maxRedirections = maxRedirections; + this.handler = handler2; + this.history = []; + this.redirectionLimitReached = false; + if (util.isStream(this.opts.body)) { + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body.on("data", function() { + assert2(false); + }); + } + if (typeof this.opts.body.readableDidRead !== "boolean") { + this.opts.body[kBodyUsed] = false; + EE.prototype.on.call(this.opts.body, "data", function() { + this[kBodyUsed] = true; + }); + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } else if (this.opts.body && typeof this.opts.body !== "string" && !ArrayBuffer.isView(this.opts.body) && util.isIterable(this.opts.body)) { + this.opts.body = new BodyAsyncIterable(this.opts.body); + } + } + onConnect(abort) { + this.abort = abort; + this.handler.onConnect(abort, { history: this.history }); + } + onUpgrade(statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket); + } + onError(error2) { + this.handler.onError(error2); + } + onHeaders(statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) ? null : parseLocation(statusCode, headers); + if (this.opts.throwOnMaxRedirect && this.history.length >= this.maxRedirections) { + if (this.request) { + this.request.abort(new Error("max redirects")); + } + this.redirectionLimitReached = true; + this.abort(new Error("max redirects")); + return; + } + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); + } + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText); + } + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); + const path5 = search ? `${pathname}${search}` : pathname; + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); + this.opts.path = path5; + this.opts.origin = origin; + this.opts.maxRedirections = 0; + this.opts.query = null; + if (statusCode === 303 && this.opts.method !== "HEAD") { + this.opts.method = "GET"; + this.opts.body = null; + } + } + onData(chunk) { + if (this.location) { + } else { + return this.handler.onData(chunk); + } + } + onComplete(trailers) { + if (this.location) { + this.location = null; + this.abort = null; + this.dispatch(this.opts, this); + } else { + this.handler.onComplete(trailers); + } + } + onBodySent(chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk); + } + } + }; + function parseLocation(statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null; + } + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].length === 8 && util.headerNameToString(headers[i]) === "location") { + return headers[i + 1]; + } + } + } + function shouldRemoveHeader(header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === "host"; + } + if (removeContent && util.headerNameToString(header).startsWith("content-")) { + return true; + } + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + const name = util.headerNameToString(header); + return name === "authorization" || name === "cookie" || name === "proxy-authorization"; + } + return false; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]); + } + } + } else if (headers && typeof headers === "object") { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]); + } + } + } else { + assert2(headers == null, "headers must be an object or an array"); + } + return ret; + } + module.exports = RedirectHandler; + } +}); + +// +var require_redirect_interceptor = __commonJS({ + ""(exports, module) { + "use strict"; + var RedirectHandler = require_redirect_handler(); + function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept(opts, handler2) { + const { maxRedirections = defaultMaxRedirections } = opts; + if (!maxRedirections) { + return dispatch(opts, handler2); + } + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler2); + opts = { ...opts, maxRedirections: 0 }; + return dispatch(opts, redirectHandler); + }; + }; + } + module.exports = createRedirectInterceptor; + } +}); + +// +var require_client = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var net = __require("node:net"); + var http = __require("node:http"); + var util = require_util(); + var { channels } = require_diagnostics(); + var Request = require_request(); + var DispatcherBase = require_dispatcher_base(); + var { + InvalidArgumentError, + InformationalError, + ClientDestroyedError + } = require_errors(); + var buildConnector = require_connect(); + var { + kUrl, + kServerName, + kClient, + kBusy, + kConnect, + kResuming, + kRunning, + kPending, + kSize, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kOnError, + kHTTPContext, + kMaxConcurrentStreams, + kResume + } = require_symbols(); + var connectH1 = require_client_h1(); + var connectH2 = require_client_h2(); + var deprecatedInterceptorWarned = false; + var kClosedResolve = Symbol("kClosedResolve"); + var noop3 = () => { + }; + function getPipelining(client) { + return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1; + } + var Client = class extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../../types/client.js').Client.Options} options + */ + constructor(url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect: connect2, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + maxConcurrentStreams, + allowH2, + webSocket + } = {}) { + super({ webSocket }); + if (keepAlive !== void 0) { + throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); + } + if (socketTimeout !== void 0) { + throw new InvalidArgumentError("unsupported socketTimeout, use headersTimeout & bodyTimeout instead"); + } + if (requestTimeout !== void 0) { + throw new InvalidArgumentError("unsupported requestTimeout, use headersTimeout & bodyTimeout instead"); + } + if (idleTimeout !== void 0) { + throw new InvalidArgumentError("unsupported idleTimeout, use keepAliveTimeout instead"); + } + if (maxKeepAliveTimeout !== void 0) { + throw new InvalidArgumentError("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead"); + } + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError("invalid maxHeaderSize"); + } + if (socketPath != null && typeof socketPath !== "string") { + throw new InvalidArgumentError("invalid socketPath"); + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError("invalid connectTimeout"); + } + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveTimeout"); + } + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError("invalid keepAliveMaxTimeout"); + } + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold"); + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError("headersTimeout must be a positive integer or zero"); + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero"); + } + if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError("maxRequestsPerClient must be a positive number"); + } + if (localAddress != null && (typeof localAddress !== "string" || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError("localAddress must be valid string IP address"); + } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError("maxResponseSize must be a positive number"); + } + if (autoSelectFamilyAttemptTimeout != null && (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)) { + throw new InvalidArgumentError("autoSelectFamilyAttemptTimeout must be a positive number"); + } + if (allowH2 != null && typeof allowH2 !== "boolean") { + throw new InvalidArgumentError("allowH2 must be a valid boolean value"); + } + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError("maxConcurrentStreams must be a positive integer, greater than 0"); + } + if (typeof connect2 !== "function") { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect2 + }); + } + if (interceptors?.Client && Array.isArray(interceptors.Client)) { + this[kInterceptors] = interceptors.Client; + if (!deprecatedInterceptorWarned) { + deprecatedInterceptorWarned = true; + process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.", { + code: "UNDICI-CLIENT-INTERCEPTOR-DEPRECATED" + }); + } + } else { + this[kInterceptors] = [createRedirectInterceptor({ maxRedirections })]; + } + this[kUrl] = util.parseOrigin(url); + this[kConnector] = connect2; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold; + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; + this[kServerName] = null; + this[kLocalAddress] = localAddress != null ? localAddress : null; + this[kResuming] = 0; + this[kNeedDrain] = 0; + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRedirections] = maxRedirections; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100; + this[kHTTPContext] = null; + this[kQueue] = []; + this[kRunningIdx] = 0; + this[kPendingIdx] = 0; + this[kResume] = (sync) => resume(this, sync); + this[kOnError] = (err) => onError(this, err); + } + get pipelining() { + return this[kPipelining]; + } + set pipelining(value) { + this[kPipelining] = value; + this[kResume](true); + } + get [kPending]() { + return this[kQueue].length - this[kPendingIdx]; + } + get [kRunning]() { + return this[kPendingIdx] - this[kRunningIdx]; + } + get [kSize]() { + return this[kQueue].length - this[kRunningIdx]; + } + get [kConnected]() { + return !!this[kHTTPContext] && !this[kConnecting] && !this[kHTTPContext].destroyed; + } + get [kBusy]() { + return Boolean( + this[kHTTPContext]?.busy(null) || this[kSize] >= (getPipelining(this) || 1) || this[kPending] > 0 + ); + } + /* istanbul ignore: only used for test */ + [kConnect](cb) { + connect(this); + this.once("connect", cb); + } + [kDispatch](opts, handler2) { + const origin = opts.origin || this[kUrl].origin; + const request2 = new Request(origin, opts, handler2); + this[kQueue].push(request2); + if (this[kResuming]) { + } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) { + this[kResuming] = 1; + queueMicrotask(() => resume(this)); + } else { + this[kResume](true); + } + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2; + } + return this[kNeedDrain] < 2; + } + async [kClose]() { + return new Promise((resolve5) => { + if (this[kSize]) { + this[kClosedResolve] = resolve5; + } else { + resolve5(null); + } + }); + } + async [kDestroy](err) { + return new Promise((resolve5) => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(this, request2, err); + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; + } + resolve5(null); + }; + if (this[kHTTPContext]) { + this[kHTTPContext].destroy(err, callback); + this[kHTTPContext] = null; + } else { + queueMicrotask(callback); + } + this[kResume](); + }); + } + }; + var createRedirectInterceptor = require_redirect_interceptor(); + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { + assert2(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(client, request2, err); + } + assert2(client[kSize] === 0); + } + } + async function connect(client) { + assert2(!client[kConnecting]); + assert2(!client[kHTTPContext]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === "[") { + const idx = hostname.indexOf("]"); + assert2(idx !== -1); + const ip = hostname.substring(1, idx); + assert2(net.isIP(ip)); + hostname = ip; + } + client[kConnecting] = true; + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }); + } + try { + const socket = await new Promise((resolve5, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket2) => { + if (err) { + reject(err); + } else { + resolve5(socket2); + } + }); + }); + if (client.destroyed) { + util.destroy(socket.on("error", noop3), new ClientDestroyedError()); + return; + } + assert2(socket); + try { + client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); + } catch (err) { + socket.destroy().on("error", noop3); + throw err; + } + client[kConnecting] = false; + socket[kCounter] = 0; + socket[kMaxRequests] = client[kMaxRequests]; + socket[kClient] = client; + socket[kError] = null; + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }); + } + client.emit("connect", client[kUrl], [client]); + } catch (err) { + if (client.destroyed) { + return; + } + client[kConnecting] = false; + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + version: client[kHTTPContext]?.version, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }); + } + if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { + assert2(client[kRunning] === 0); + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request2 = client[kQueue][client[kPendingIdx]++]; + util.errorRequest(client, request2, err); + } + } else { + onError(client, err); + } + client.emit("connectionError", client[kUrl], [client], err); + } + client[kResume](); + } + function emitDrain(client) { + client[kNeedDrain] = 0; + client.emit("drain", client[kUrl], [client]); + } + function resume(client, sync) { + if (client[kResuming] === 2) { + return; + } + client[kResuming] = 2; + _resume(client, sync); + client[kResuming] = 0; + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]); + client[kPendingIdx] -= client[kRunningIdx]; + client[kRunningIdx] = 0; + } + } + function _resume(client, sync) { + while (true) { + if (client.destroyed) { + assert2(client[kPending] === 0); + return; + } + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve](); + client[kClosedResolve] = null; + return; + } + if (client[kHTTPContext]) { + client[kHTTPContext].resume(); + } + if (client[kBusy]) { + client[kNeedDrain] = 2; + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1; + queueMicrotask(() => emitDrain(client)); + } else { + emitDrain(client); + } + continue; + } + if (client[kPending] === 0) { + return; + } + if (client[kRunning] >= (getPipelining(client) || 1)) { + return; + } + const request2 = client[kQueue][client[kPendingIdx]]; + if (client[kUrl].protocol === "https:" && client[kServerName] !== request2.servername) { + if (client[kRunning] > 0) { + return; + } + client[kServerName] = request2.servername; + client[kHTTPContext]?.destroy(new InformationalError("servername changed"), () => { + client[kHTTPContext] = null; + resume(client); + }); + } + if (client[kConnecting]) { + return; + } + if (!client[kHTTPContext]) { + connect(client); + return; + } + if (client[kHTTPContext].destroyed) { + return; + } + if (client[kHTTPContext].busy(request2)) { + return; + } + if (!request2.aborted && client[kHTTPContext].write(request2)) { + client[kPendingIdx]++; + } else { + client[kQueue].splice(client[kPendingIdx], 1); + } + } + } + module.exports = Client; + } +}); + +// +var require_fixed_queue = __commonJS({ + ""(exports, module) { + "use strict"; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + isEmpty() { + return this.top === this.bottom; + } + isFull() { + return (this.top + 1 & kMask) === this.bottom; + } + push(data) { + this.list[this.top] = data; + this.top = this.top + 1 & kMask; + } + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === void 0) + return null; + this.list[this.bottom] = void 0; + this.bottom = this.bottom + 1 & kMask; + return nextItem; + } + }; + module.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + isEmpty() { + return this.head.isEmpty(); + } + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; + } + return next; + } + }; + } +}); + +// +var require_pool_stats = __commonJS({ + ""(exports, module) { + var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); + var kPool = Symbol("pool"); + var PoolStats = class { + constructor(pool) { + this[kPool] = pool; + } + get connected() { + return this[kPool][kConnected]; + } + get free() { + return this[kPool][kFree]; + } + get pending() { + return this[kPool][kPending]; + } + get queued() { + return this[kPool][kQueued]; + } + get running() { + return this[kPool][kRunning]; + } + get size() { + return this[kPool][kSize]; + } + }; + module.exports = PoolStats; + } +}); + +// +var require_pool_base = __commonJS({ + ""(exports, module) { + "use strict"; + var DispatcherBase = require_dispatcher_base(); + var FixedQueue = require_fixed_queue(); + var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); + var PoolStats = require_pool_stats(); + var kClients = Symbol("clients"); + var kNeedDrain = Symbol("needDrain"); + var kQueue = Symbol("queue"); + var kClosedResolve = Symbol("closed resolve"); + var kOnDrain = Symbol("onDrain"); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kGetDispatcher = Symbol("get dispatcher"); + var kAddClient = Symbol("add client"); + var kRemoveClient = Symbol("remove client"); + var kStats = Symbol("stats"); + var PoolBase = class extends DispatcherBase { + constructor(opts) { + super(opts); + this[kQueue] = new FixedQueue(); + this[kClients] = []; + this[kQueued] = 0; + const pool = this; + this[kOnDrain] = function onDrain(origin, targets) { + const queue = pool[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + pool[kQueued]--; + needDrain = !this.dispatch(item.opts, item.handler); + } + this[kNeedDrain] = needDrain; + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false; + pool.emit("drain", origin, [pool, ...targets]); + } + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); + } + }; + this[kOnConnect] = (origin, targets) => { + pool.emit("connect", origin, [pool, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit("disconnect", origin, [pool, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit("connectionError", origin, [pool, ...targets], err); + }; + this[kStats] = new PoolStats(this); + } + get [kBusy]() { + return this[kNeedDrain]; + } + get [kConnected]() { + return this[kClients].filter((client) => client[kConnected]).length; + } + get [kFree]() { + return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]).length; + } + get [kPending]() { + let ret = this[kQueued]; + for (const { [kPending]: pending } of this[kClients]) { + ret += pending; + } + return ret; + } + get [kRunning]() { + let ret = 0; + for (const { [kRunning]: running } of this[kClients]) { + ret += running; + } + return ret; + } + get [kSize]() { + let ret = this[kQueued]; + for (const { [kSize]: size } of this[kClients]) { + ret += size; + } + return ret; + } + get stats() { + return this[kStats]; + } + async [kClose]() { + if (this[kQueue].isEmpty()) { + await Promise.all(this[kClients].map((c) => c.close())); + } else { + await new Promise((resolve5) => { + this[kClosedResolve] = resolve5; + }); + } + } + async [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onError(err); + } + await Promise.all(this[kClients].map((c) => c.destroy(err))); + } + [kDispatch](opts, handler2) { + const dispatcher = this[kGetDispatcher](); + if (!dispatcher) { + this[kNeedDrain] = true; + this[kQueue].push({ opts, handler: handler2 }); + this[kQueued]++; + } else if (!dispatcher.dispatch(opts, handler2)) { + dispatcher[kNeedDrain] = true; + this[kNeedDrain] = !this[kGetDispatcher](); + } + return !this[kNeedDrain]; + } + [kAddClient](client) { + client.on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].push(client); + if (this[kNeedDrain]) { + queueMicrotask(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]); + } + }); + } + return this; + } + [kRemoveClient](client) { + client.close(() => { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + }); + this[kNeedDrain] = this[kClients].some((dispatcher) => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true); + } + }; + module.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + }; + } +}); + +// +var require_pool = __commonJS({ + ""(exports, module) { + "use strict"; + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher + } = require_pool_base(); + var Client = require_client(); + var { + InvalidArgumentError + } = require_errors(); + var util = require_util(); + var { kUrl, kInterceptors } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = Symbol("options"); + var kConnections = Symbol("connections"); + var kFactory = Symbol("factory"); + function defaultFactory(origin, opts) { + return new Client(origin, opts); + } + var Pool = class extends PoolBase { + constructor(origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError("invalid connections"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (typeof connect !== "function") { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0, + ...connect + }); + } + super(options); + this[kInterceptors] = options.interceptors?.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : []; + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kFactory] = factory; + this.on("connectionError", (origin2, targets, error2) => { + for (const target of targets) { + const idx = this[kClients].indexOf(target); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + } + }); + } + [kGetDispatcher]() { + for (const client of this[kClients]) { + if (!client[kNeedDrain]) { + return client; + } + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + const dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + return dispatcher; + } + } + }; + module.exports = Pool; + } +}); + +// +var require_balanced_pool = __commonJS({ + ""(exports, module) { + "use strict"; + var { + BalancedPoolMissingUpstreamError, + InvalidArgumentError + } = require_errors(); + var { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher + } = require_pool_base(); + var Pool = require_pool(); + var { kUrl, kInterceptors } = require_symbols(); + var { parseOrigin } = require_util(); + var kFactory = Symbol("factory"); + var kOptions = Symbol("options"); + var kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor"); + var kCurrentWeight = Symbol("kCurrentWeight"); + var kIndex = Symbol("kIndex"); + var kWeight = Symbol("kWeight"); + var kMaxWeightPerServer = Symbol("kMaxWeightPerServer"); + var kErrorPenalty = Symbol("kErrorPenalty"); + function getGreatestCommonDivisor(a, b) { + if (a === 0) + return b; + while (b !== 0) { + const t = b; + b = a % b; + a = t; + } + return a; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var BalancedPool = class extends PoolBase { + constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super(); + this[kOptions] = opts; + this[kIndex] = -1; + this[kCurrentWeight] = 0; + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; + this[kErrorPenalty] = this[kOptions].errorPenalty || 15; + if (!Array.isArray(upstreams)) { + upstreams = [upstreams]; + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + this[kInterceptors] = opts.interceptors?.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) ? opts.interceptors.BalancedPool : []; + this[kFactory] = factory; + for (const upstream of upstreams) { + this.addUpstream(upstream); + } + this._updateBalancedPoolStats(); + } + addUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + if (this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true)) { + return this; + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); + this[kAddClient](pool); + pool.on("connect", () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]); + }); + pool.on("connectionError", () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + }); + pool.on("disconnect", (...args) => { + const err = args[2]; + if (err && err.code === "UND_ERR_SOCKET") { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); + this._updateBalancedPoolStats(); + } + }); + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer]; + } + this._updateBalancedPoolStats(); + return this; + } + _updateBalancedPoolStats() { + let result = 0; + for (let i = 0; i < this[kClients].length; i++) { + result = getGreatestCommonDivisor(this[kClients][i][kWeight], result); + } + this[kGreatestCommonDivisor] = result; + } + removeUpstream(upstream) { + const upstreamOrigin = parseOrigin(upstream).origin; + const pool = this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true); + if (pool) { + this[kRemoveClient](pool); + } + return this; + } + get upstreams() { + return this[kClients].filter((dispatcher) => dispatcher.closed !== true && dispatcher.destroyed !== true).map((p) => p[kUrl].origin); + } + [kGetDispatcher]() { + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError(); + } + const dispatcher = this[kClients].find((dispatcher2) => !dispatcher2[kNeedDrain] && dispatcher2.closed !== true && dispatcher2.destroyed !== true); + if (!dispatcher) { + return; + } + const allClientsBusy = this[kClients].map((pool) => pool[kNeedDrain]).reduce((a, b) => a && b, true); + if (allClientsBusy) { + return; + } + let counter = 0; + let maxWeightIndex = this[kClients].findIndex((pool) => !pool[kNeedDrain]); + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const pool = this[kClients][this[kIndex]]; + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex]; + } + if (this[kIndex] === 0) { + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; + } + } + if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { + return pool; + } + } + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; + } + }; + module.exports = BalancedPool; + } +}); + +// +var require_agent = __commonJS({ + ""(exports, module) { + "use strict"; + var { InvalidArgumentError } = require_errors(); + var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); + var util = require_util(); + var createRedirectInterceptor = require_redirect_interceptor(); + var kOnConnect = Symbol("onConnect"); + var kOnDisconnect = Symbol("onDisconnect"); + var kOnConnectionError = Symbol("onConnectionError"); + var kMaxRedirections = Symbol("maxRedirections"); + var kOnDrain = Symbol("onDrain"); + var kFactory = Symbol("factory"); + var kOptions = Symbol("options"); + function defaultFactory(origin, opts) { + return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); + } + var Agent = class extends DispatcherBase { + constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + if (typeof factory !== "function") { + throw new InvalidArgumentError("factory must be a function."); + } + if (connect != null && typeof connect !== "function" && typeof connect !== "object") { + throw new InvalidArgumentError("connect must be a function or an object"); + } + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError("maxRedirections must be a positive number"); + } + super(options); + if (connect && typeof connect !== "function") { + connect = { ...connect }; + } + this[kInterceptors] = options.interceptors?.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ maxRedirections })]; + this[kOptions] = { ...util.deepClone(options), connect }; + this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0; + this[kMaxRedirections] = maxRedirections; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kOnDrain] = (origin, targets) => { + this.emit("drain", origin, [this, ...targets]); + }; + this[kOnConnect] = (origin, targets) => { + this.emit("connect", origin, [this, ...targets]); + }; + this[kOnDisconnect] = (origin, targets, err) => { + this.emit("disconnect", origin, [this, ...targets], err); + }; + this[kOnConnectionError] = (origin, targets, err) => { + this.emit("connectionError", origin, [this, ...targets], err); + }; + } + get [kRunning]() { + let ret = 0; + for (const client of this[kClients].values()) { + ret += client[kRunning]; + } + return ret; + } + [kDispatch](opts, handler2) { + let key; + if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { + key = String(opts.origin); + } else { + throw new InvalidArgumentError("opts.origin must be a non-empty string or URL."); + } + let dispatcher = this[kClients].get(key); + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]).on("drain", this[kOnDrain]).on("connect", this[kOnConnect]).on("disconnect", this[kOnDisconnect]).on("connectionError", this[kOnConnectionError]); + this[kClients].set(key, dispatcher); + } + return dispatcher.dispatch(opts, handler2); + } + async [kClose]() { + const closePromises = []; + for (const client of this[kClients].values()) { + closePromises.push(client.close()); + } + this[kClients].clear(); + await Promise.all(closePromises); + } + async [kDestroy](err) { + const destroyPromises = []; + for (const client of this[kClients].values()) { + destroyPromises.push(client.destroy(err)); + } + this[kClients].clear(); + await Promise.all(destroyPromises); + } + }; + module.exports = Agent; + } +}); + +// +var require_proxy_agent = __commonJS({ + ""(exports, module) { + "use strict"; + var { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols(); + var { URL: URL3 } = __require("node:url"); + var Agent = require_agent(); + var Pool = require_pool(); + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require_errors(); + var buildConnector = require_connect(); + var Client = require_client(); + var kAgent = Symbol("proxy agent"); + var kClient = Symbol("proxy client"); + var kProxyHeaders = Symbol("proxy headers"); + var kRequestTls = Symbol("request tls settings"); + var kProxyTls = Symbol("proxy tls settings"); + var kConnectEndpoint = Symbol("connect endpoint function"); + var kTunnelProxy = Symbol("tunnel proxy"); + function defaultProtocolPort(protocol) { + return protocol === "https:" ? 443 : 80; + } + function defaultFactory(origin, opts) { + return new Pool(origin, opts); + } + var noop3 = () => { + }; + function defaultAgentFactory(origin, opts) { + if (opts.connections === 1) { + return new Client(origin, opts); + } + return new Pool(origin, opts); + } + var Http1ProxyWrapper = class extends DispatcherBase { + #client; + constructor(proxyUrl, { headers = {}, connect, factory }) { + super(); + if (!proxyUrl) { + throw new InvalidArgumentError("Proxy URL is mandatory"); + } + this[kProxyHeaders] = headers; + if (factory) { + this.#client = factory(proxyUrl, { connect }); + } else { + this.#client = new Client(proxyUrl, { connect }); + } + } + [kDispatch](opts, handler2) { + const onHeaders = handler2.onHeaders; + handler2.onHeaders = function(statusCode, data, resume) { + if (statusCode === 407) { + if (typeof handler2.onError === "function") { + handler2.onError(new InvalidArgumentError("Proxy Authentication Required (407)")); + } + return; + } + if (onHeaders) + onHeaders.call(this, statusCode, data, resume); + }; + const { + origin, + path: path5 = "/", + headers = {} + } = opts; + opts.path = origin + path5; + if (!("host" in headers) && !("Host" in headers)) { + const { host } = new URL3(origin); + headers.host = host; + } + opts.headers = { ...this[kProxyHeaders], ...headers }; + return this.#client[kDispatch](opts, handler2); + } + async [kClose]() { + return this.#client.close(); + } + async [kDestroy](err) { + return this.#client.destroy(err); + } + }; + var ProxyAgent2 = class extends DispatcherBase { + constructor(opts) { + super(); + if (!opts || typeof opts === "object" && !(opts instanceof URL3) && !opts.uri) { + throw new InvalidArgumentError("Proxy uri is mandatory"); + } + const { clientFactory = defaultFactory } = opts; + if (typeof clientFactory !== "function") { + throw new InvalidArgumentError("Proxy opts.clientFactory must be a function."); + } + const { proxyTunnel = true } = opts; + const url = this.#getUrl(opts); + const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url; + this[kProxy] = { uri: href, protocol }; + this[kInterceptors] = opts.interceptors?.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) ? opts.interceptors.ProxyAgent : []; + this[kRequestTls] = opts.requestTls; + this[kProxyTls] = opts.proxyTls; + this[kProxyHeaders] = opts.headers || {}; + this[kTunnelProxy] = proxyTunnel; + if (opts.auth && opts.token) { + throw new InvalidArgumentError("opts.auth cannot be used in combination with opts.token"); + } else if (opts.auth) { + this[kProxyHeaders]["proxy-authorization"] = `Basic ${opts.auth}`; + } else if (opts.token) { + this[kProxyHeaders]["proxy-authorization"] = opts.token; + } else if (username && password) { + this[kProxyHeaders]["proxy-authorization"] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString("base64")}`; + } + const connect = buildConnector({ ...opts.proxyTls }); + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); + const agentFactory = opts.factory || defaultAgentFactory; + const factory = (origin2, options) => { + const { protocol: protocol2 } = new URL3(origin2); + if (!this[kTunnelProxy] && protocol2 === "http:" && this[kProxy].protocol === "http:") { + return new Http1ProxyWrapper(this[kProxy].uri, { + headers: this[kProxyHeaders], + connect, + factory: agentFactory + }); + } + return agentFactory(origin2, options); + }; + this[kClient] = clientFactory(url, { connect }); + this[kAgent] = new Agent({ + ...opts, + factory, + connect: async (opts2, callback) => { + let requestedPath = opts2.host; + if (!opts2.port) { + requestedPath += `:${defaultProtocolPort(opts2.protocol)}`; + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedPath, + signal: opts2.signal, + headers: { + ...this[kProxyHeaders], + host: opts2.host + }, + servername: this[kProxyTls]?.servername || proxyHostname + }); + if (statusCode !== 200) { + socket.on("error", noop3).destroy(); + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); + } + if (opts2.protocol !== "https:") { + callback(null, socket); + return; + } + let servername; + if (this[kRequestTls]) { + servername = this[kRequestTls].servername; + } else { + servername = opts2.servername; + } + this[kConnectEndpoint]({ ...opts2, servername, httpSocket: socket }, callback); + } catch (err) { + if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { + callback(new SecureProxyConnectionError(err)); + } else { + callback(err); + } + } + } + }); + } + dispatch(opts, handler2) { + const headers = buildHeaders(opts.headers); + throwIfProxyAuthIsSent(headers); + if (headers && !("host" in headers) && !("Host" in headers)) { + const { host } = new URL3(opts.origin); + headers.host = host; + } + return this[kAgent].dispatch( + { + ...opts, + headers + }, + handler2 + ); + } + /** + * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts + * @returns {URL} + */ + #getUrl(opts) { + if (typeof opts === "string") { + return new URL3(opts); + } else if (opts instanceof URL3) { + return opts; + } else { + return new URL3(opts.uri); + } + } + async [kClose]() { + await this[kAgent].close(); + await this[kClient].close(); + } + async [kDestroy]() { + await this[kAgent].destroy(); + await this[kClient].destroy(); + } + }; + function buildHeaders(headers) { + if (Array.isArray(headers)) { + const headersPair = {}; + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; + } + function throwIfProxyAuthIsSent(headers) { + const existProxyAuth = headers && Object.keys(headers).find((key) => key.toLowerCase() === "proxy-authorization"); + if (existProxyAuth) { + throw new InvalidArgumentError("Proxy-Authorization should be sent in ProxyAgent constructor"); + } + } + module.exports = ProxyAgent2; + } +}); + +// +var require_env_http_proxy_agent = __commonJS({ + ""(exports, module) { + "use strict"; + var DispatcherBase = require_dispatcher_base(); + var { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require_symbols(); + var ProxyAgent2 = require_proxy_agent(); + var Agent = require_agent(); + var DEFAULT_PORTS = { + "http:": 80, + "https:": 443 + }; + var experimentalWarned = false; + var EnvHttpProxyAgent = class extends DispatcherBase { + #noProxyValue = null; + #noProxyEntries = null; + #opts = null; + constructor(opts = {}) { + super(); + this.#opts = opts; + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.", { + code: "UNDICI-EHPA" + }); + } + const { httpProxy, httpsProxy, noProxy, ...agentOpts } = opts; + this[kNoProxyAgent] = new Agent(agentOpts); + const HTTP_PROXY = httpProxy ?? process.env.http_proxy ?? process.env.HTTP_PROXY; + if (HTTP_PROXY) { + this[kHttpProxyAgent] = new ProxyAgent2({ ...agentOpts, uri: HTTP_PROXY }); + } else { + this[kHttpProxyAgent] = this[kNoProxyAgent]; + } + const HTTPS_PROXY = httpsProxy ?? process.env.https_proxy ?? process.env.HTTPS_PROXY; + if (HTTPS_PROXY) { + this[kHttpsProxyAgent] = new ProxyAgent2({ ...agentOpts, uri: HTTPS_PROXY }); + } else { + this[kHttpsProxyAgent] = this[kHttpProxyAgent]; + } + this.#parseNoProxy(); + } + [kDispatch](opts, handler2) { + const url = new URL(opts.origin); + const agent = this.#getProxyAgentForUrl(url); + return agent.dispatch(opts, handler2); + } + async [kClose]() { + await this[kNoProxyAgent].close(); + if (!this[kHttpProxyAgent][kClosed]) { + await this[kHttpProxyAgent].close(); + } + if (!this[kHttpsProxyAgent][kClosed]) { + await this[kHttpsProxyAgent].close(); + } + } + async [kDestroy](err) { + await this[kNoProxyAgent].destroy(err); + if (!this[kHttpProxyAgent][kDestroyed]) { + await this[kHttpProxyAgent].destroy(err); + } + if (!this[kHttpsProxyAgent][kDestroyed]) { + await this[kHttpsProxyAgent].destroy(err); + } + } + #getProxyAgentForUrl(url) { + let { protocol, host: hostname, port } = url; + hostname = hostname.replace(/:\d*$/, "").toLowerCase(); + port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0; + if (!this.#shouldProxy(hostname, port)) { + return this[kNoProxyAgent]; + } + if (protocol === "https:") { + return this[kHttpsProxyAgent]; + } + return this[kHttpProxyAgent]; + } + #shouldProxy(hostname, port) { + if (this.#noProxyChanged) { + this.#parseNoProxy(); + } + if (this.#noProxyEntries.length === 0) { + return true; + } + if (this.#noProxyValue === "*") { + return false; + } + for (let i = 0; i < this.#noProxyEntries.length; i++) { + const entry = this.#noProxyEntries[i]; + if (entry.port && entry.port !== port) { + continue; + } + if (!/^[.*]/.test(entry.hostname)) { + if (hostname === entry.hostname) { + return false; + } + } else { + if (hostname.endsWith(entry.hostname.replace(/^\*/, ""))) { + return false; + } + } + } + return true; + } + #parseNoProxy() { + const noProxyValue = this.#opts.noProxy ?? this.#noProxyEnv; + const noProxySplit = noProxyValue.split(/[,\s]/); + const noProxyEntries = []; + for (let i = 0; i < noProxySplit.length; i++) { + const entry = noProxySplit[i]; + if (!entry) { + continue; + } + const parsed = entry.match(/^(.+):(\d+)$/); + noProxyEntries.push({ + hostname: (parsed ? parsed[1] : entry).toLowerCase(), + port: parsed ? Number.parseInt(parsed[2], 10) : 0 + }); + } + this.#noProxyValue = noProxyValue; + this.#noProxyEntries = noProxyEntries; + } + get #noProxyChanged() { + if (this.#opts.noProxy !== void 0) { + return false; + } + return this.#noProxyValue !== this.#noProxyEnv; + } + get #noProxyEnv() { + return process.env.no_proxy ?? process.env.NO_PROXY ?? ""; + } + }; + module.exports = EnvHttpProxyAgent; + } +}); + +// +var require_retry_handler = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { kRetryHandlerDefaultRetry } = require_symbols(); + var { RequestRetryError } = require_errors(); + var { + isDisturbed, + parseHeaders, + parseRangeHeader, + wrapRequestBody + } = require_util(); + function calculateRetryAfterHeader(retryAfter) { + const current = Date.now(); + return new Date(retryAfter).getTime() - current; + } + var RetryHandler = class _RetryHandler { + constructor(opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts; + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {}; + this.dispatch = handlers.dispatch; + this.handler = handlers.handler; + this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) }; + this.abort = null; + this.aborted = false; + this.retryOpts = { + retry: retryFn ?? _RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1e3, + // 30s, + minTimeout: minTimeout ?? 500, + // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ["GET", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE"], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + "ECONNRESET", + "ECONNREFUSED", + "ENOTFOUND", + "ENETDOWN", + "ENETUNREACH", + "EHOSTDOWN", + "EHOSTUNREACH", + "EPIPE", + "UND_ERR_SOCKET" + ] + }; + this.retryCount = 0; + this.retryCountCheckpoint = 0; + this.start = 0; + this.end = null; + this.etag = null; + this.resume = null; + this.handler.onConnect((reason) => { + this.aborted = true; + if (this.abort) { + this.abort(reason); + } else { + this.reason = reason; + } + }); + } + onRequestSent() { + if (this.handler.onRequestSent) { + this.handler.onRequestSent(); + } + } + onUpgrade(statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket); + } + } + onConnect(abort) { + if (this.aborted) { + abort(this.reason); + } else { + this.abort = abort; + } + } + onBodySent(chunk) { + if (this.handler.onBodySent) + return this.handler.onBodySent(chunk); + } + static [kRetryHandlerDefaultRetry](err, { state, opts }, cb) { + const { statusCode, code, headers } = err; + const { method, retryOptions } = opts; + const { + maxRetries, + minTimeout, + maxTimeout, + timeoutFactor, + statusCodes, + errorCodes, + methods + } = retryOptions; + const { counter } = state; + if (code && code !== "UND_ERR_REQ_RETRY" && !errorCodes.includes(code)) { + cb(err); + return; + } + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err); + return; + } + if (statusCode != null && Array.isArray(statusCodes) && !statusCodes.includes(statusCode)) { + cb(err); + return; + } + if (counter > maxRetries) { + cb(err); + return; + } + let retryAfterHeader = headers?.["retry-after"]; + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader); + retryAfterHeader = Number.isNaN(retryAfterHeader) ? calculateRetryAfterHeader(retryAfterHeader) : retryAfterHeader * 1e3; + } + const retryTimeout = retryAfterHeader > 0 ? Math.min(retryAfterHeader, maxTimeout) : Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout); + setTimeout(() => cb(null), retryTimeout); + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders); + this.retryCount += 1; + if (statusCode >= 300) { + if (this.retryOpts.statusCodes.includes(statusCode) === false) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ); + } else { + this.abort( + new RequestRetryError("Request failed", statusCode, { + headers, + data: { + count: this.retryCount + } + }) + ); + return false; + } + } + if (this.resume != null) { + this.resume = null; + if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) { + this.abort( + new RequestRetryError("server does not support the range header and the payload was partially consumed", statusCode, { + headers, + data: { count: this.retryCount } + }) + ); + return false; + } + const contentRange = parseRangeHeader(headers["content-range"]); + if (!contentRange) { + this.abort( + new RequestRetryError("Content-Range mismatch", statusCode, { + headers, + data: { count: this.retryCount } + }) + ); + return false; + } + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError("ETag mismatch", statusCode, { + headers, + data: { count: this.retryCount } + }) + ); + return false; + } + const { start, size, end = size - 1 } = contentRange; + assert2(this.start === start, "content-range mismatch"); + assert2(this.end == null || this.end === end, "content-range mismatch"); + this.resume = resume; + return true; + } + if (this.end == null) { + if (statusCode === 206) { + const range2 = parseRangeHeader(headers["content-range"]); + if (range2 == null) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ); + } + const { start, size, end = size - 1 } = range2; + assert2( + start != null && Number.isFinite(start), + "content-range mismatch" + ); + assert2(end != null && Number.isFinite(end), "invalid content-length"); + this.start = start; + this.end = end; + } + if (this.end == null) { + const contentLength = headers["content-length"]; + this.end = contentLength != null ? Number(contentLength) - 1 : null; + } + assert2(Number.isFinite(this.start)); + assert2( + this.end == null || Number.isFinite(this.end), + "invalid content-length" + ); + this.resume = resume; + this.etag = headers.etag != null ? headers.etag : null; + if (this.etag != null && this.etag.startsWith("W/")) { + this.etag = null; + } + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ); + } + const err = new RequestRetryError("Request failed", statusCode, { + headers, + data: { count: this.retryCount } + }); + this.abort(err); + return false; + } + onData(chunk) { + this.start += chunk.length; + return this.handler.onData(chunk); + } + onComplete(rawTrailers) { + this.retryCount = 0; + return this.handler.onComplete(rawTrailers); + } + onError(err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err); + } + if (this.retryCount - this.retryCountCheckpoint > 0) { + this.retryCount = this.retryCountCheckpoint + (this.retryCount - this.retryCountCheckpoint); + } else { + this.retryCount += 1; + } + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ); + function onRetry(err2) { + if (err2 != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err2); + } + if (this.start !== 0) { + const headers = { range: `bytes=${this.start}-${this.end ?? ""}` }; + if (this.etag != null) { + headers["if-match"] = this.etag; + } + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + ...headers + } + }; + } + try { + this.retryCountCheckpoint = this.retryCount; + this.dispatch(this.opts, this); + } catch (err3) { + this.handler.onError(err3); + } + } + } + }; + module.exports = RetryHandler; + } +}); + +// +var require_retry_agent = __commonJS({ + ""(exports, module) { + "use strict"; + var Dispatcher = require_dispatcher(); + var RetryHandler = require_retry_handler(); + var RetryAgent = class extends Dispatcher { + #agent = null; + #options = null; + constructor(agent, options = {}) { + super(options); + this.#agent = agent; + this.#options = options; + } + dispatch(opts, handler2) { + const retry = new RetryHandler({ + ...opts, + retryOptions: this.#options + }, { + dispatch: this.#agent.dispatch.bind(this.#agent), + handler: handler2 + }); + return this.#agent.dispatch(opts, retry); + } + close() { + return this.#agent.close(); + } + destroy() { + return this.#agent.destroy(); + } + }; + module.exports = RetryAgent; + } +}); + +// +var require_readable = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { Readable } = __require("node:stream"); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors(); + var util = require_util(); + var { ReadableStreamFrom } = require_util(); + var kConsume = Symbol("kConsume"); + var kReading = Symbol("kReading"); + var kBody = Symbol("kBody"); + var kAbort = Symbol("kAbort"); + var kContentType = Symbol("kContentType"); + var kContentLength = Symbol("kContentLength"); + var noop3 = () => { + }; + var BodyReadable = class extends Readable { + constructor({ + resume, + abort, + contentType = "", + contentLength, + highWaterMark = 64 * 1024 + // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }); + this._readableState.dataEmitted = false; + this[kAbort] = abort; + this[kConsume] = null; + this[kBody] = null; + this[kContentType] = contentType; + this[kContentLength] = contentLength; + this[kReading] = false; + } + destroy(err) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (err) { + this[kAbort](); + } + return super.destroy(err); + } + _destroy(err, callback) { + if (!this[kReading]) { + setImmediate(() => { + callback(err); + }); + } else { + callback(err); + } + } + on(ev, ...args) { + if (ev === "data" || ev === "readable") { + this[kReading] = true; + } + return super.on(ev, ...args); + } + addListener(ev, ...args) { + return this.on(ev, ...args); + } + off(ev, ...args) { + const ret = super.off(ev, ...args); + if (ev === "data" || ev === "readable") { + this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0; + } + return ret; + } + removeListener(ev, ...args) { + return this.off(ev, ...args); + } + push(chunk) { + if (this[kConsume] && chunk !== null) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; + } + return super.push(chunk); + } + // https://fetch.spec.whatwg.org/#dom-body-text + async text() { + return consume(this, "text"); + } + // https://fetch.spec.whatwg.org/#dom-body-json + async json() { + return consume(this, "json"); + } + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob() { + return consume(this, "blob"); + } + // https://fetch.spec.whatwg.org/#dom-body-bytes + async bytes() { + return consume(this, "bytes"); + } + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer() { + return consume(this, "arrayBuffer"); + } + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData() { + throw new NotSupportedError(); + } + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed() { + return util.isDisturbed(this); + } + // https://fetch.spec.whatwg.org/#dom-body-body + get body() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + this[kBody].getReader(); + assert2(this[kBody].locked); + } + } + return this[kBody]; + } + async dump(opts) { + let limit = Number.isFinite(opts?.limit) ? opts.limit : 128 * 1024; + const signal = opts?.signal; + if (signal != null && (typeof signal !== "object" || !("aborted" in signal))) { + throw new InvalidArgumentError("signal must be an AbortSignal"); + } + signal?.throwIfAborted(); + if (this._readableState.closeEmitted) { + return null; + } + return await new Promise((resolve5, reject) => { + if (this[kContentLength] > limit) { + this.destroy(new AbortError()); + } + const onAbort = () => { + this.destroy(signal.reason ?? new AbortError()); + }; + signal?.addEventListener("abort", onAbort); + this.on("close", function() { + signal?.removeEventListener("abort", onAbort); + if (signal?.aborted) { + reject(signal.reason ?? new AbortError()); + } else { + resolve5(null); + } + }).on("error", noop3).on("data", function(chunk) { + limit -= chunk.length; + if (limit <= 0) { + this.destroy(); + } + }).resume(); + }); + } + }; + function isLocked(self) { + return self[kBody] && self[kBody].locked === true || self[kConsume]; + } + function isUnusable(self) { + return util.isDisturbed(self) || isLocked(self); + } + async function consume(stream, type) { + assert2(!stream[kConsume]); + return new Promise((resolve5, reject) => { + if (isUnusable(stream)) { + const rState = stream._readableState; + if (rState.destroyed && rState.closeEmitted === false) { + stream.on("error", (err) => { + reject(err); + }).on("close", () => { + reject(new TypeError("unusable")); + }); + } else { + reject(rState.errored ?? new TypeError("unusable")); + } + } else { + queueMicrotask(() => { + stream[kConsume] = { + type, + stream, + resolve: resolve5, + reject, + length: 0, + body: [] + }; + stream.on("error", function(err) { + consumeFinish(this[kConsume], err); + }).on("close", function() { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()); + } + }); + consumeStart(stream[kConsume]); + }); + } + }); + } + function consumeStart(consume2) { + if (consume2.body === null) { + return; + } + const { _readableState: state } = consume2.stream; + if (state.bufferIndex) { + const start = state.bufferIndex; + const end = state.buffer.length; + for (let n = start; n < end; n++) { + consumePush(consume2, state.buffer[n]); + } + } else { + for (const chunk of state.buffer) { + consumePush(consume2, chunk); + } + } + if (state.endEmitted) { + consumeEnd(this[kConsume]); + } else { + consume2.stream.on("end", function() { + consumeEnd(this[kConsume]); + }); + } + consume2.stream.resume(); + while (consume2.stream.read() != null) { + } + } + function chunksDecode(chunks, length) { + if (chunks.length === 0 || length === 0) { + return ""; + } + const buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, length); + const bufferLength = buffer.length; + const start = bufferLength > 2 && buffer[0] === 239 && buffer[1] === 187 && buffer[2] === 191 ? 3 : 0; + return buffer.utf8Slice(start, bufferLength); + } + function chunksConcat(chunks, length) { + if (chunks.length === 0 || length === 0) { + return new Uint8Array(0); + } + if (chunks.length === 1) { + return new Uint8Array(chunks[0]); + } + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + const chunk = chunks[i]; + buffer.set(chunk, offset); + offset += chunk.length; + } + return buffer; + } + function consumeEnd(consume2) { + const { type, body, resolve: resolve5, stream, length } = consume2; + try { + if (type === "text") { + resolve5(chunksDecode(body, length)); + } else if (type === "json") { + resolve5(JSON.parse(chunksDecode(body, length))); + } else if (type === "arrayBuffer") { + resolve5(chunksConcat(body, length).buffer); + } else if (type === "blob") { + resolve5(new Blob(body, { type: stream[kContentType] })); + } else if (type === "bytes") { + resolve5(chunksConcat(body, length)); + } + consumeFinish(consume2); + } catch (err) { + stream.destroy(err); + } + } + function consumePush(consume2, chunk) { + consume2.length += chunk.length; + consume2.body.push(chunk); + } + function consumeFinish(consume2, err) { + if (consume2.body === null) { + return; + } + if (err) { + consume2.reject(err); + } else { + consume2.resolve(); + } + consume2.type = null; + consume2.stream = null; + consume2.resolve = null; + consume2.reject = null; + consume2.length = 0; + consume2.body = null; + } + module.exports = { Readable: BodyReadable, chunksDecode }; + } +}); + +// +var require_util3 = __commonJS({ + ""(exports, module) { + var assert2 = __require("node:assert"); + var { + ResponseStatusCodeError + } = require_errors(); + var { chunksDecode } = require_readable(); + var CHUNK_LIMIT = 128 * 1024; + async function getResolveErrorBodyCallback({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert2(body); + let chunks = []; + let length = 0; + try { + for await (const chunk of body) { + chunks.push(chunk); + length += chunk.length; + if (length > CHUNK_LIMIT) { + chunks = []; + length = 0; + break; + } + } + } catch { + chunks = []; + length = 0; + } + const message = `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`; + if (statusCode === 204 || !contentType || !length) { + queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers))); + return; + } + const stackTraceLimit = Error.stackTraceLimit; + Error.stackTraceLimit = 0; + let payload; + try { + if (isContentTypeApplicationJson(contentType)) { + payload = JSON.parse(chunksDecode(chunks, length)); + } else if (isContentTypeText(contentType)) { + payload = chunksDecode(chunks, length); + } + } catch { + } finally { + Error.stackTraceLimit = stackTraceLimit; + } + queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers, payload))); + } + var isContentTypeApplicationJson = (contentType) => { + return contentType.length > 15 && contentType[11] === "/" && contentType[0] === "a" && contentType[1] === "p" && contentType[2] === "p" && contentType[3] === "l" && contentType[4] === "i" && contentType[5] === "c" && contentType[6] === "a" && contentType[7] === "t" && contentType[8] === "i" && contentType[9] === "o" && contentType[10] === "n" && contentType[12] === "j" && contentType[13] === "s" && contentType[14] === "o" && contentType[15] === "n"; + }; + var isContentTypeText = (contentType) => { + return contentType.length > 4 && contentType[4] === "/" && contentType[0] === "t" && contentType[1] === "e" && contentType[2] === "x" && contentType[3] === "t"; + }; + module.exports = { + getResolveErrorBodyCallback, + isContentTypeApplicationJson, + isContentTypeText + }; + } +}); + +// +var require_api_request = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { Readable } = require_readable(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource: AsyncResource4 } = __require("node:async_hooks"); + var RequestHandler = class extends AsyncResource4 { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) { + throw new InvalidArgumentError("invalid highWaterMark"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_REQUEST"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.method = method; + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.res = null; + this.abort = null; + this.body = body; + this.trailers = {}; + this.context = null; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError; + this.highWaterMark = highWaterMark; + this.signal = signal; + this.reason = null; + this.removeAbortListener = null; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + if (this.signal) { + if (this.signal.aborted) { + this.reason = this.signal.reason ?? new RequestAbortedError(); + } else { + this.removeAbortListener = util.addAbortListener(this.signal, () => { + this.reason = this.signal.reason ?? new RequestAbortedError(); + if (this.res) { + util.destroy(this.res.on("error", util.nop), this.reason); + } else if (this.abort) { + this.abort(this.reason); + } + if (this.removeAbortListener) { + this.res?.off("close", this.removeAbortListener); + this.removeAbortListener(); + this.removeAbortListener = null; + } + }); + } + } + } + onConnect(abort, context3) { + if (this.reason) { + abort(this.reason); + return; + } + assert2(this.callback); + this.abort = abort; + this.context = context3; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context: context3, responseHeaders, highWaterMark } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + const contentLength = parsedHeaders["content-length"]; + const res = new Readable({ + resume, + abort, + contentType, + contentLength: this.method !== "HEAD" && contentLength ? Number(contentLength) : null, + highWaterMark + }); + if (this.removeAbortListener) { + res.on("close", this.removeAbortListener); + } + this.callback = null; + this.res = res; + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ); + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body: res, + context: context3 + }); + } + } + } + onData(chunk) { + return this.res.push(chunk); + } + onComplete(trailers) { + util.parseHeaders(trailers, this.trailers); + this.res.push(null); + } + onError(err) { + const { res, callback, body, opaque } = this; + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (res) { + this.res = null; + queueMicrotask(() => { + util.destroy(res, err); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + if (this.removeAbortListener) { + res?.off("close", this.removeAbortListener); + this.removeAbortListener(); + this.removeAbortListener = null; + } + } + }; + function request2(opts, callback) { + if (callback === void 0) { + return new Promise((resolve5, reject) => { + request2.call(this, opts, (err, data) => { + return err ? reject(err) : resolve5(data); + }); + }); + } + try { + this.dispatch(opts, new RequestHandler(opts, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module.exports = request2; + module.exports.RequestHandler = RequestHandler; + } +}); + +// +var require_abort_signal = __commonJS({ + ""(exports, module) { + var { addAbortListener } = require_util(); + var { RequestAbortedError } = require_errors(); + var kListener = Symbol("kListener"); + var kSignal = Symbol("kSignal"); + function abort(self) { + if (self.abort) { + self.abort(self[kSignal]?.reason); + } else { + self.reason = self[kSignal]?.reason ?? new RequestAbortedError(); + } + removeSignal(self); + } + function addSignal(self, signal) { + self.reason = null; + self[kSignal] = null; + self[kListener] = null; + if (!signal) { + return; + } + if (signal.aborted) { + abort(self); + return; + } + self[kSignal] = signal; + self[kListener] = () => { + abort(self); + }; + addAbortListener(self[kSignal], self[kListener]); + } + function removeSignal(self) { + if (!self[kSignal]) { + return; + } + if ("removeEventListener" in self[kSignal]) { + self[kSignal].removeEventListener("abort", self[kListener]); + } else { + self[kSignal].removeListener("abort", self[kListener]); + } + self[kSignal] = null; + self[kListener] = null; + } + module.exports = { + addSignal, + removeSignal + }; + } +}); + +// +var require_api_stream = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { finished, PassThrough } = __require("node:stream"); + var { InvalidArgumentError, InvalidReturnValueError } = require_errors(); + var util = require_util(); + var { getResolveErrorBodyCallback } = require_util3(); + var { AsyncResource: AsyncResource4 } = __require("node:async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var StreamHandler = class extends AsyncResource4 { + constructor(opts, factory, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts; + try { + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + if (typeof factory !== "function") { + throw new InvalidArgumentError("invalid factory"); + } + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_STREAM"); + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on("error", util.nop), err); + } + throw err; + } + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.factory = factory; + this.callback = callback; + this.res = null; + this.abort = null; + this.context = null; + this.trailers = null; + this.body = body; + this.onInfo = onInfo || null; + this.throwOnError = throwOnError || false; + if (util.isStream(body)) { + body.on("error", (err) => { + this.onError(err); + }); + } + addSignal(this, signal); + } + onConnect(abort, context3) { + if (this.reason) { + abort(this.reason); + return; + } + assert2(this.callback); + this.abort = abort; + this.context = context3; + } + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context: context3, callback, responseHeaders } = this; + const headers = responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }); + } + return; + } + this.factory = null; + let res; + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; + const contentType = parsedHeaders["content-type"]; + res = new PassThrough(); + this.callback = null; + this.runInAsyncScope( + getResolveErrorBodyCallback, + null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ); + } else { + if (factory === null) { + return; + } + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context: context3 + }); + if (!res || typeof res.write !== "function" || typeof res.end !== "function" || typeof res.on !== "function") { + throw new InvalidReturnValueError("expected Writable"); + } + finished(res, { readable: false }, (err) => { + const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; + this.res = null; + if (err || !res2.readable) { + util.destroy(res2, err); + } + this.callback = null; + this.runInAsyncScope(callback2, null, err || null, { opaque: opaque2, trailers }); + if (err) { + abort(); + } + }); + } + res.on("drain", resume); + this.res = res; + const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState?.needDrain; + return needDrain !== true; + } + onData(chunk) { + const { res } = this; + return res ? res.write(chunk) : true; + } + onComplete(trailers) { + const { res } = this; + removeSignal(this); + if (!res) { + return; + } + this.trailers = util.parseHeaders(trailers); + res.end(); + } + onError(err) { + const { res, callback, opaque, body } = this; + removeSignal(this); + this.factory = null; + if (res) { + this.res = null; + util.destroy(res, err); + } else if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + if (body) { + this.body = null; + util.destroy(body, err); + } + } + }; + function stream(opts, factory, callback) { + if (callback === void 0) { + return new Promise((resolve5, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve5(data); + }); + }); + } + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module.exports = stream; + } +}); + +// +var require_api_pipeline = __commonJS({ + ""(exports, module) { + "use strict"; + var { + Readable, + Duplex, + PassThrough + } = __require("node:stream"); + var { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError + } = require_errors(); + var util = require_util(); + var { AsyncResource: AsyncResource4 } = __require("node:async_hooks"); + var { addSignal, removeSignal } = require_abort_signal(); + var assert2 = __require("node:assert"); + var kResume = Symbol("resume"); + var PipelineRequest = class extends Readable { + constructor() { + super({ autoDestroy: true }); + this[kResume] = null; + } + _read() { + const { [kResume]: resume } = this; + if (resume) { + this[kResume] = null; + resume(); + } + } + _destroy(err, callback) { + this._read(); + callback(err); + } + }; + var PipelineResponse = class extends Readable { + constructor(resume) { + super({ autoDestroy: true }); + this[kResume] = resume; + } + _read() { + this[kResume](); + } + _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + callback(err); + } + }; + var PipelineHandler = class extends AsyncResource4 { + constructor(opts, handler2) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof handler2 !== "function") { + throw new InvalidArgumentError("invalid handler"); + } + const { signal, method, opaque, onInfo, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + if (method === "CONNECT") { + throw new InvalidArgumentError("invalid method"); + } + if (onInfo && typeof onInfo !== "function") { + throw new InvalidArgumentError("invalid onInfo callback"); + } + super("UNDICI_PIPELINE"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.handler = handler2; + this.abort = null; + this.context = null; + this.onInfo = onInfo || null; + this.req = new PipelineRequest().on("error", util.nop); + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this; + if (body?.resume) { + body.resume(); + } + }, + write: (chunk, encoding, callback) => { + const { req } = this; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback(); + } else { + req[kResume] = callback; + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this; + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (abort && err) { + abort(); + } + util.destroy(body, err); + util.destroy(req, err); + util.destroy(res, err); + removeSignal(this); + callback(err); + } + }).on("prefinish", () => { + const { req } = this; + req.push(null); + }); + this.res = null; + addSignal(this, signal); + } + onConnect(abort, context3) { + const { ret, res } = this; + if (this.reason) { + abort(this.reason); + return; + } + assert2(!res, "pipeline cannot be retried"); + assert2(!ret.destroyed); + this.abort = abort; + this.context = context3; + } + onHeaders(statusCode, rawHeaders, resume) { + const { opaque, handler: handler2, context: context3 } = this; + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.onInfo({ statusCode, headers }); + } + return; + } + this.res = new PipelineResponse(resume); + let body; + try { + this.handler = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + body = this.runInAsyncScope(handler2, null, { + statusCode, + headers, + opaque, + body: this.res, + context: context3 + }); + } catch (err) { + this.res.on("error", util.nop); + throw err; + } + if (!body || typeof body.on !== "function") { + throw new InvalidReturnValueError("expected Readable"); + } + body.on("data", (chunk) => { + const { ret, body: body2 } = this; + if (!ret.push(chunk) && body2.pause) { + body2.pause(); + } + }).on("error", (err) => { + const { ret } = this; + util.destroy(ret, err); + }).on("end", () => { + const { ret } = this; + ret.push(null); + }).on("close", () => { + const { ret } = this; + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()); + } + }); + this.body = body; + } + onData(chunk) { + const { res } = this; + return res.push(chunk); + } + onComplete(trailers) { + const { res } = this; + res.push(null); + } + onError(err) { + const { ret } = this; + this.handler = null; + util.destroy(ret, err); + } + }; + function pipeline(opts, handler2) { + try { + const pipelineHandler = new PipelineHandler(opts, handler2); + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); + return pipelineHandler.ret; + } catch (err) { + return new PassThrough().destroy(err); + } + } + module.exports = pipeline; + } +}); + +// +var require_api_upgrade = __commonJS({ + ""(exports, module) { + "use strict"; + var { InvalidArgumentError, SocketError } = require_errors(); + var { AsyncResource: AsyncResource4 } = __require("node:async_hooks"); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var assert2 = __require("node:assert"); + var UpgradeHandler = class extends AsyncResource4 { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_UPGRADE"); + this.responseHeaders = responseHeaders || null; + this.opaque = opaque || null; + this.callback = callback; + this.abort = null; + this.context = null; + addSignal(this, signal); + } + onConnect(abort, context3) { + if (this.reason) { + abort(this.reason); + return; + } + assert2(this.callback); + this.abort = abort; + this.context = null; + } + onHeaders() { + throw new SocketError("bad upgrade", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + assert2(statusCode === 101); + const { callback, opaque, context: context3 } = this; + removeSignal(this); + this.callback = null; + const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context: context3 + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function upgrade(opts, callback) { + if (callback === void 0) { + return new Promise((resolve5, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve5(data); + }); + }); + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback); + this.dispatch({ + ...opts, + method: opts.method || "GET", + upgrade: opts.protocol || "Websocket" + }, upgradeHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module.exports = upgrade; + } +}); + +// +var require_api_connect = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { AsyncResource: AsyncResource4 } = __require("node:async_hooks"); + var { InvalidArgumentError, SocketError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var ConnectHandler = class extends AsyncResource4 { + constructor(opts, callback) { + if (!opts || typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (typeof callback !== "function") { + throw new InvalidArgumentError("invalid callback"); + } + const { signal, opaque, responseHeaders } = opts; + if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") { + throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); + } + super("UNDICI_CONNECT"); + this.opaque = opaque || null; + this.responseHeaders = responseHeaders || null; + this.callback = callback; + this.abort = null; + addSignal(this, signal); + } + onConnect(abort, context3) { + if (this.reason) { + abort(this.reason); + return; + } + assert2(this.callback); + this.abort = abort; + this.context = context3; + } + onHeaders() { + throw new SocketError("bad connect", null); + } + onUpgrade(statusCode, rawHeaders, socket) { + const { callback, opaque, context: context3 } = this; + removeSignal(this); + this.callback = null; + let headers = rawHeaders; + if (headers != null) { + headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders); + } + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context: context3 + }); + } + onError(err) { + const { callback, opaque } = this; + removeSignal(this); + if (callback) { + this.callback = null; + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }); + }); + } + } + }; + function connect(opts, callback) { + if (callback === void 0) { + return new Promise((resolve5, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve5(data); + }); + }); + } + try { + const connectHandler = new ConnectHandler(opts, callback); + this.dispatch({ ...opts, method: "CONNECT" }, connectHandler); + } catch (err) { + if (typeof callback !== "function") { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module.exports = connect; + } +}); + +// +var require_api = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports.request = require_api_request(); + module.exports.stream = require_api_stream(); + module.exports.pipeline = require_api_pipeline(); + module.exports.upgrade = require_api_upgrade(); + module.exports.connect = require_api_connect(); + } +}); + +// +var require_mock_errors = __commonJS({ + ""(exports, module) { + "use strict"; + var { UndiciError } = require_errors(); + var kMockNotMatchedError = Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED"); + var MockNotMatchedError = class _MockNotMatchedError extends UndiciError { + constructor(message) { + super(message); + Error.captureStackTrace(this, _MockNotMatchedError); + this.name = "MockNotMatchedError"; + this.message = message || "The request does not match any registered mock dispatches"; + this.code = "UND_MOCK_ERR_MOCK_NOT_MATCHED"; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kMockNotMatchedError] === true; + } + [kMockNotMatchedError] = true; + }; + module.exports = { + MockNotMatchedError + }; + } +}); + +// +var require_mock_symbols = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = { + kAgent: Symbol("agent"), + kOptions: Symbol("options"), + kFactory: Symbol("factory"), + kDispatches: Symbol("dispatches"), + kDispatchKey: Symbol("dispatch key"), + kDefaultHeaders: Symbol("default headers"), + kDefaultTrailers: Symbol("default trailers"), + kContentLength: Symbol("content length"), + kMockAgent: Symbol("mock agent"), + kMockAgentSet: Symbol("mock agent set"), + kMockAgentGet: Symbol("mock agent get"), + kMockDispatch: Symbol("mock dispatch"), + kClose: Symbol("close"), + kOriginalClose: Symbol("original agent close"), + kOrigin: Symbol("origin"), + kIsMockActive: Symbol("is mock active"), + kNetConnect: Symbol("net connect"), + kGetNetConnect: Symbol("get net connect"), + kConnected: Symbol("connected") + }; + } +}); + +// +var require_mock_utils = __commonJS({ + ""(exports, module) { + "use strict"; + var { MockNotMatchedError } = require_mock_errors(); + var { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect + } = require_mock_symbols(); + var { buildURL } = require_util(); + var { STATUS_CODES } = __require("node:http"); + var { + types: { + isPromise: isPromise2 + } + } = __require("node:util"); + function matchValue(match2, value) { + if (typeof match2 === "string") { + return match2 === value; + } + if (match2 instanceof RegExp) { + return match2.test(value); + } + if (typeof match2 === "function") { + return match2(value) === true; + } + return false; + } + function lowerCaseEntries(headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue]; + }) + ); + } + function getHeaderByName(headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1]; + } + } + return void 0; + } else if (typeof headers.get === "function") { + return headers.get(key); + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; + } + } + function buildHeadersFromArray(headers) { + const clone = headers.slice(); + const entries = []; + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]); + } + return Object.fromEntries(entries); + } + function matchHeaders(mockDispatch2, headers) { + if (typeof mockDispatch2.headers === "function") { + if (Array.isArray(headers)) { + headers = buildHeadersFromArray(headers); + } + return mockDispatch2.headers(headers ? lowerCaseEntries(headers) : {}); + } + if (typeof mockDispatch2.headers === "undefined") { + return true; + } + if (typeof headers !== "object" || typeof mockDispatch2.headers !== "object") { + return false; + } + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch2.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName); + if (!matchValue(matchHeaderValue, headerValue)) { + return false; + } + } + return true; + } + function safeUrl(path5) { + if (typeof path5 !== "string") { + return path5; + } + const pathSegments = path5.split("?"); + if (pathSegments.length !== 2) { + return path5; + } + const qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [...pathSegments, qp.toString()].join("?"); + } + function matchKey(mockDispatch2, { path: path5, method, body, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path5); + const methodMatch = matchValue(mockDispatch2.method, method); + const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true; + const headersMatch = matchHeaders(mockDispatch2, headers); + return pathMatch && methodMatch && bodyMatch && headersMatch; + } + function getResponseData2(data) { + if (Buffer.isBuffer(data)) { + return data; + } else if (data instanceof Uint8Array) { + return data; + } else if (data instanceof ArrayBuffer) { + return data; + } else if (typeof data === "object") { + return JSON.stringify(data); + } else { + return data.toString(); + } + } + function getMockDispatch(mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path; + const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath; + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path5 }) => matchValue(safeUrl(path5), resolvedPath)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}' on path '${resolvedPath}'`); + } + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== "undefined" ? matchValue(body, key.body) : true); + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}' on path '${resolvedPath}'`); + } + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch2) => matchHeaders(mockDispatch2, key.headers)); + if (matchedMockDispatches.length === 0) { + const headers = typeof key.headers === "object" ? JSON.stringify(key.headers) : key.headers; + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${headers}' on path '${resolvedPath}'`); + } + return matchedMockDispatches[0]; + } + function addMockDispatch(mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; + const replyData = typeof data === "function" ? { callback: data } : { ...data }; + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; + mockDispatches.push(newMockDispatch); + return newMockDispatch; + } + function deleteMockDispatch(mockDispatches, key) { + const index = mockDispatches.findIndex((dispatch) => { + if (!dispatch.consumed) { + return false; + } + return matchKey(dispatch, key); + }); + if (index !== -1) { + mockDispatches.splice(index, 1); + } + } + function buildKey(opts) { + const { path: path5, method, body, headers, query: query2 } = opts; + return { + path: path5, + method, + body, + headers, + query: query2 + }; + } + function generateKeyValues(data) { + const keys = Object.keys(data); + const result = []; + for (let i = 0; i < keys.length; ++i) { + const key = keys[i]; + const value = data[key]; + const name = Buffer.from(`${key}`); + if (Array.isArray(value)) { + for (let j = 0; j < value.length; ++j) { + result.push(name, Buffer.from(`${value[j]}`)); + } + } else { + result.push(name, Buffer.from(`${value}`)); + } + } + return result; + } + function getStatusText(statusCode) { + return STATUS_CODES[statusCode] || "unknown"; + } + async function getResponse(body) { + const buffers = []; + for await (const data of body) { + buffers.push(data); + } + return Buffer.concat(buffers).toString("utf8"); + } + function mockDispatch(opts, handler2) { + const key = buildKey(opts); + const mockDispatch2 = getMockDispatch(this[kDispatches], key); + mockDispatch2.timesInvoked++; + if (mockDispatch2.data.callback) { + mockDispatch2.data = { ...mockDispatch2.data, ...mockDispatch2.data.callback(opts) }; + } + const { data: { statusCode, data, headers, trailers, error: error2 }, delay, persist } = mockDispatch2; + const { timesInvoked, times } = mockDispatch2; + mockDispatch2.consumed = !persist && timesInvoked >= times; + mockDispatch2.pending = timesInvoked < times; + if (error2 !== null) { + deleteMockDispatch(this[kDispatches], key); + handler2.onError(error2); + return true; + } + if (typeof delay === "number" && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); + } + function handleReply(mockDispatches, _data = data) { + const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + const body = typeof _data === "function" ? _data({ ...opts, headers: optsHeaders }) : _data; + if (isPromise2(body)) { + body.then((newData) => handleReply(mockDispatches, newData)); + return; + } + const responseData = getResponseData2(body); + const responseHeaders = generateKeyValues(headers); + const responseTrailers = generateKeyValues(trailers); + handler2.onConnect?.((err) => handler2.onError(err), null); + handler2.onHeaders?.(statusCode, responseHeaders, resume, getStatusText(statusCode)); + handler2.onData?.(Buffer.from(responseData)); + handler2.onComplete?.(responseTrailers); + deleteMockDispatch(mockDispatches, key); + } + function resume() { + } + return true; + } + function buildMockDispatch() { + const agent = this[kMockAgent]; + const origin = this[kOrigin]; + const originalDispatch = this[kOriginalDispatch]; + return function dispatch(opts, handler2) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler2); + } catch (error2) { + if (error2 instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect](); + if (netConnect === false) { + throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler2); + } else { + throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`); + } + } else { + throw error2; + } + } + } else { + originalDispatch.call(this, opts, handler2); + } + }; + } + function checkNetConnect(netConnect, origin) { + const url = new URL(origin); + if (netConnect === true) { + return true; + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true; + } + return false; + } + function buildMockOptions(opts) { + if (opts) { + const { agent, ...mockOptions } = opts; + return mockOptions; + } + } + module.exports = { + getResponseData: getResponseData2, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName, + buildHeadersFromArray + }; + } +}); + +// +var require_mock_interceptor = __commonJS({ + ""(exports, module) { + "use strict"; + var { getResponseData: getResponseData2, buildKey, addMockDispatch } = require_mock_utils(); + var { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch + } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + var { buildURL } = require_util(); + var MockScope = class { + constructor(mockDispatch) { + this[kMockDispatch] = mockDispatch; + } + /** + * Delay a reply by a set amount in ms. + */ + delay(waitInMs) { + if (typeof waitInMs !== "number" || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError("waitInMs must be a valid integer > 0"); + } + this[kMockDispatch].delay = waitInMs; + return this; + } + /** + * For a defined reply, never mark as consumed. + */ + persist() { + this[kMockDispatch].persist = true; + return this; + } + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times(repeatTimes) { + if (typeof repeatTimes !== "number" || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError("repeatTimes must be a valid integer > 0"); + } + this[kMockDispatch].times = repeatTimes; + return this; + } + }; + var MockInterceptor = class { + constructor(opts, mockDispatches) { + if (typeof opts !== "object") { + throw new InvalidArgumentError("opts must be an object"); + } + if (typeof opts.path === "undefined") { + throw new InvalidArgumentError("opts.path must be defined"); + } + if (typeof opts.method === "undefined") { + opts.method = "GET"; + } + if (typeof opts.path === "string") { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query); + } else { + const parsedURL = new URL(opts.path, "data://"); + opts.path = parsedURL.pathname + parsedURL.search; + } + } + if (typeof opts.method === "string") { + opts.method = opts.method.toUpperCase(); + } + this[kDispatchKey] = buildKey(opts); + this[kDispatches] = mockDispatches; + this[kDefaultHeaders] = {}; + this[kDefaultTrailers] = {}; + this[kContentLength] = false; + } + createMockScopeDispatchData({ statusCode, data, responseOptions }) { + const responseData = getResponseData2(data); + const contentLength = this[kContentLength] ? { "content-length": responseData.length } : {}; + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }; + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; + return { statusCode, data, headers, trailers }; + } + validateReplyParameters(replyParameters) { + if (typeof replyParameters.statusCode === "undefined") { + throw new InvalidArgumentError("statusCode must be defined"); + } + if (typeof replyParameters.responseOptions !== "object" || replyParameters.responseOptions === null) { + throw new InvalidArgumentError("responseOptions must be an object"); + } + } + /** + * Mock an undici request with a defined reply. + */ + reply(replyOptionsCallbackOrStatusCode) { + if (typeof replyOptionsCallbackOrStatusCode === "function") { + const wrappedDefaultsCallback = (opts) => { + const resolvedData = replyOptionsCallbackOrStatusCode(opts); + if (typeof resolvedData !== "object" || resolvedData === null) { + throw new InvalidArgumentError("reply options callback must return an object"); + } + const replyParameters2 = { data: "", responseOptions: {}, ...resolvedData }; + this.validateReplyParameters(replyParameters2); + return { + ...this.createMockScopeDispatchData(replyParameters2) + }; + }; + const newMockDispatch2 = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback); + return new MockScope(newMockDispatch2); + } + const replyParameters = { + statusCode: replyOptionsCallbackOrStatusCode, + data: arguments[1] === void 0 ? "" : arguments[1], + responseOptions: arguments[2] === void 0 ? {} : arguments[2] + }; + this.validateReplyParameters(replyParameters); + const dispatchData = this.createMockScopeDispatchData(replyParameters); + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData); + return new MockScope(newMockDispatch); + } + /** + * Mock an undici request with a defined error. + */ + replyWithError(error2) { + if (typeof error2 === "undefined") { + throw new InvalidArgumentError("error must be defined"); + } + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error: error2 }); + return new MockScope(newMockDispatch); + } + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders(headers) { + if (typeof headers === "undefined") { + throw new InvalidArgumentError("headers must be defined"); + } + this[kDefaultHeaders] = headers; + return this; + } + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers(trailers) { + if (typeof trailers === "undefined") { + throw new InvalidArgumentError("trailers must be defined"); + } + this[kDefaultTrailers] = trailers; + return this; + } + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength() { + this[kContentLength] = true; + return this; + } + }; + module.exports.MockInterceptor = MockInterceptor; + module.exports.MockScope = MockScope; + } +}); + +// +var require_mock_client = __commonJS({ + ""(exports, module) { + "use strict"; + var { promisify } = __require("node:util"); + var Client = require_client(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockClient = class extends Client { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module.exports = MockClient; + } +}); + +// +var require_mock_pool = __commonJS({ + ""(exports, module) { + "use strict"; + var { promisify } = __require("node:util"); + var Pool = require_pool(); + var { buildMockDispatch } = require_mock_utils(); + var { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected + } = require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockPool = class extends Pool { + constructor(origin, opts) { + super(origin, opts); + if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kDispatches] = []; + this[kConnected] = 1; + this[kOriginalDispatch] = this.dispatch; + this[kOriginalClose] = this.close.bind(this); + this.dispatch = buildMockDispatch.call(this); + this.close = this[kClose]; + } + get [Symbols.kConnected]() { + return this[kConnected]; + } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept(opts) { + return new MockInterceptor(opts, this[kDispatches]); + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module.exports = MockPool; + } +}); + +// +var require_pluralizer = __commonJS({ + ""(exports, module) { + "use strict"; + var singulars = { + pronoun: "it", + is: "is", + was: "was", + this: "this" + }; + var plurals = { + pronoun: "they", + is: "are", + was: "were", + this: "these" + }; + module.exports = class Pluralizer { + constructor(singular, plural) { + this.singular = singular; + this.plural = plural; + } + pluralize(count) { + const one = count === 1; + const keys = one ? singulars : plurals; + const noun = one ? this.singular : this.plural; + return { ...keys, count, noun }; + } + }; + } +}); + +// +var require_pending_interceptors_formatter = __commonJS({ + ""(exports, module) { + "use strict"; + var { Transform } = __require("node:stream"); + var { Console } = __require("node:console"); + var PERSISTENT = process.versions.icu ? "\u2705" : "Y "; + var NOT_PERSISTENT = process.versions.icu ? "\u274C" : "N "; + module.exports = class PendingInterceptorsFormatter { + constructor({ disableColors } = {}) { + this.transform = new Transform({ + transform(chunk, _enc, cb) { + cb(null, chunk); + } + }); + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }); + } + format(pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path: path5, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path5, + "Status code": statusCode, + Persistent: persist ? PERSISTENT : NOT_PERSISTENT, + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }) + ); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); + } + }; + } +}); + +// +var require_mock_agent = __commonJS({ + ""(exports, module) { + "use strict"; + var { kClients } = require_symbols(); + var Agent = require_agent(); + var { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory + } = require_mock_symbols(); + var MockClient = require_mock_client(); + var MockPool = require_mock_pool(); + var { matchValue, buildMockOptions } = require_mock_utils(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var Dispatcher = require_dispatcher(); + var Pluralizer = require_pluralizer(); + var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); + var MockAgent = class extends Dispatcher { + constructor(opts) { + super(opts); + this[kNetConnect] = true; + this[kIsMockActive] = true; + if (opts?.agent && typeof opts.agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument opts.agent must implement Agent"); + } + const agent = opts?.agent ? opts.agent : new Agent(opts); + this[kAgent] = agent; + this[kClients] = agent[kClients]; + this[kOptions] = buildMockOptions(opts); + } + get(origin) { + let dispatcher = this[kMockAgentGet](origin); + if (!dispatcher) { + dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + } + return dispatcher; + } + dispatch(opts, handler2) { + this.get(opts.origin); + return this[kAgent].dispatch(opts, handler2); + } + async close() { + await this[kAgent].close(); + this[kClients].clear(); + } + deactivate() { + this[kIsMockActive] = false; + } + activate() { + this[kIsMockActive] = true; + } + enableNetConnect(matcher) { + if (typeof matcher === "string" || typeof matcher === "function" || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher); + } else { + this[kNetConnect] = [matcher]; + } + } else if (typeof matcher === "undefined") { + this[kNetConnect] = true; + } else { + throw new InvalidArgumentError("Unsupported matcher. Must be one of String|Function|RegExp."); + } + } + disableNetConnect() { + this[kNetConnect] = false; + } + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive() { + return this[kIsMockActive]; + } + [kMockAgentSet](origin, dispatcher) { + this[kClients].set(origin, dispatcher); + } + [kFactory](origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]); + return this[kOptions] && this[kOptions].connections === 1 ? new MockClient(origin, mockOptions) : new MockPool(origin, mockOptions); + } + [kMockAgentGet](origin) { + const client = this[kClients].get(origin); + if (client) { + return client; + } + if (typeof origin !== "string") { + const dispatcher = this[kFactory]("http://localhost:9999"); + this[kMockAgentSet](origin, dispatcher); + return dispatcher; + } + for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) { + if (nonExplicitDispatcher && typeof keyMatcher !== "string" && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher); + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; + return dispatcher; + } + } + } + [kGetNetConnect]() { + return this[kNetConnect]; + } + pendingInterceptors() { + const mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()).flatMap(([origin, scope]) => scope[kDispatches].map((dispatch) => ({ ...dispatch, origin }))).filter(({ pending }) => pending); + } + assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + const pluralizer = new Pluralizer("interceptor", "interceptors").pluralize(pending.length); + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()); + } + }; + module.exports = MockAgent; + } +}); + +// +var require_global2 = __commonJS({ + ""(exports, module) { + "use strict"; + var globalDispatcher = Symbol.for("undici.globalDispatcher.1"); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + if (getGlobalDispatcher() === void 0) { + setGlobalDispatcher(new Agent()); + } + function setGlobalDispatcher(agent) { + if (!agent || typeof agent.dispatch !== "function") { + throw new InvalidArgumentError("Argument agent must implement Agent"); + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }); + } + function getGlobalDispatcher() { + return globalThis[globalDispatcher]; + } + module.exports = { + setGlobalDispatcher, + getGlobalDispatcher + }; + } +}); + +// +var require_decorator_handler = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = class DecoratorHandler { + #handler; + constructor(handler2) { + if (typeof handler2 !== "object" || handler2 === null) { + throw new TypeError("handler must be an object"); + } + this.#handler = handler2; + } + onConnect(...args) { + return this.#handler.onConnect?.(...args); + } + onError(...args) { + return this.#handler.onError?.(...args); + } + onUpgrade(...args) { + return this.#handler.onUpgrade?.(...args); + } + onResponseStarted(...args) { + return this.#handler.onResponseStarted?.(...args); + } + onHeaders(...args) { + return this.#handler.onHeaders?.(...args); + } + onData(...args) { + return this.#handler.onData?.(...args); + } + onComplete(...args) { + return this.#handler.onComplete?.(...args); + } + onBodySent(...args) { + return this.#handler.onBodySent?.(...args); + } + }; + } +}); + +// +var require_redirect = __commonJS({ + ""(exports, module) { + "use strict"; + var RedirectHandler = require_redirect_handler(); + module.exports = (opts) => { + const globalMaxRedirections = opts?.maxRedirections; + return (dispatch) => { + return function redirectInterceptor(opts2, handler2) { + const { maxRedirections = globalMaxRedirections, ...baseOpts } = opts2; + if (!maxRedirections) { + return dispatch(opts2, handler2); + } + const redirectHandler = new RedirectHandler( + dispatch, + maxRedirections, + opts2, + handler2 + ); + return dispatch(baseOpts, redirectHandler); + }; + }; + }; + } +}); + +// +var require_retry = __commonJS({ + ""(exports, module) { + "use strict"; + var RetryHandler = require_retry_handler(); + module.exports = (globalOpts) => { + return (dispatch) => { + return function retryInterceptor(opts, handler2) { + return dispatch( + opts, + new RetryHandler( + { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } }, + { + handler: handler2, + dispatch + } + ) + ); + }; + }; + }; + } +}); + +// +var require_dump = __commonJS({ + ""(exports, module) { + "use strict"; + var util = require_util(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var DecoratorHandler = require_decorator_handler(); + var DumpHandler = class extends DecoratorHandler { + #maxSize = 1024 * 1024; + #abort = null; + #dumped = false; + #aborted = false; + #size = 0; + #reason = null; + #handler = null; + constructor({ maxSize }, handler2) { + super(handler2); + if (maxSize != null && (!Number.isFinite(maxSize) || maxSize < 1)) { + throw new InvalidArgumentError("maxSize must be a number greater than 0"); + } + this.#maxSize = maxSize ?? this.#maxSize; + this.#handler = handler2; + } + onConnect(abort) { + this.#abort = abort; + this.#handler.onConnect(this.#customAbort.bind(this)); + } + #customAbort(reason) { + this.#aborted = true; + this.#reason = reason; + } + // TODO: will require adjustment after new hooks are out + onHeaders(statusCode, rawHeaders, resume, statusMessage) { + const headers = util.parseHeaders(rawHeaders); + const contentLength = headers["content-length"]; + if (contentLength != null && contentLength > this.#maxSize) { + throw new RequestAbortedError( + `Response size (${contentLength}) larger than maxSize (${this.#maxSize})` + ); + } + if (this.#aborted) { + return true; + } + return this.#handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ); + } + onError(err) { + if (this.#dumped) { + return; + } + err = this.#reason ?? err; + this.#handler.onError(err); + } + onData(chunk) { + this.#size = this.#size + chunk.length; + if (this.#size >= this.#maxSize) { + this.#dumped = true; + if (this.#aborted) { + this.#handler.onError(this.#reason); + } else { + this.#handler.onComplete([]); + } + } + return true; + } + onComplete(trailers) { + if (this.#dumped) { + return; + } + if (this.#aborted) { + this.#handler.onError(this.reason); + return; + } + this.#handler.onComplete(trailers); + } + }; + function createDumpInterceptor({ maxSize: defaultMaxSize } = { + maxSize: 1024 * 1024 + }) { + return (dispatch) => { + return function Intercept(opts, handler2) { + const { dumpMaxSize = defaultMaxSize } = opts; + const dumpHandler = new DumpHandler( + { maxSize: dumpMaxSize }, + handler2 + ); + return dispatch(opts, dumpHandler); + }; + }; + } + module.exports = createDumpInterceptor; + } +}); + +// +var require_dns = __commonJS({ + ""(exports, module) { + "use strict"; + var { isIP } = __require("node:net"); + var { lookup } = __require("node:dns"); + var DecoratorHandler = require_decorator_handler(); + var { InvalidArgumentError, InformationalError } = require_errors(); + var maxInt = Math.pow(2, 31) - 1; + var DNSInstance = class { + #maxTTL = 0; + #maxItems = 0; + #records = /* @__PURE__ */ new Map(); + dualStack = true; + affinity = null; + lookup = null; + pick = null; + constructor(opts) { + this.#maxTTL = opts.maxTTL; + this.#maxItems = opts.maxItems; + this.dualStack = opts.dualStack; + this.affinity = opts.affinity; + this.lookup = opts.lookup ?? this.#defaultLookup; + this.pick = opts.pick ?? this.#defaultPick; + } + get full() { + return this.#records.size === this.#maxItems; + } + runLookup(origin, opts, cb) { + const ips = this.#records.get(origin.hostname); + if (ips == null && this.full) { + cb(null, origin.origin); + return; + } + const newOpts = { + affinity: this.affinity, + dualStack: this.dualStack, + lookup: this.lookup, + pick: this.pick, + ...opts.dns, + maxTTL: this.#maxTTL, + maxItems: this.#maxItems + }; + if (ips == null) { + this.lookup(origin, newOpts, (err, addresses) => { + if (err || addresses == null || addresses.length === 0) { + cb(err ?? new InformationalError("No DNS entries found")); + return; + } + this.setRecords(origin, addresses); + const records = this.#records.get(origin.hostname); + const ip = this.pick( + origin, + records, + newOpts.affinity + ); + let port; + if (typeof ip.port === "number") { + port = `:${ip.port}`; + } else if (origin.port !== "") { + port = `:${origin.port}`; + } else { + port = ""; + } + cb( + null, + `${origin.protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}` + ); + }); + } else { + const ip = this.pick( + origin, + ips, + newOpts.affinity + ); + if (ip == null) { + this.#records.delete(origin.hostname); + this.runLookup(origin, opts, cb); + return; + } + let port; + if (typeof ip.port === "number") { + port = `:${ip.port}`; + } else if (origin.port !== "") { + port = `:${origin.port}`; + } else { + port = ""; + } + cb( + null, + `${origin.protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}` + ); + } + } + #defaultLookup(origin, opts, cb) { + lookup( + origin.hostname, + { + all: true, + family: this.dualStack === false ? this.affinity : 0, + order: "ipv4first" + }, + (err, addresses) => { + if (err) { + return cb(err); + } + const results = /* @__PURE__ */ new Map(); + for (const addr of addresses) { + results.set(`${addr.address}:${addr.family}`, addr); + } + cb(null, results.values()); + } + ); + } + #defaultPick(origin, hostnameRecords, affinity) { + let ip = null; + const { records, offset } = hostnameRecords; + let family; + if (this.dualStack) { + if (affinity == null) { + if (offset == null || offset === maxInt) { + hostnameRecords.offset = 0; + affinity = 4; + } else { + hostnameRecords.offset++; + affinity = (hostnameRecords.offset & 1) === 1 ? 6 : 4; + } + } + if (records[affinity] != null && records[affinity].ips.length > 0) { + family = records[affinity]; + } else { + family = records[affinity === 4 ? 6 : 4]; + } + } else { + family = records[affinity]; + } + if (family == null || family.ips.length === 0) { + return ip; + } + if (family.offset == null || family.offset === maxInt) { + family.offset = 0; + } else { + family.offset++; + } + const position = family.offset % family.ips.length; + ip = family.ips[position] ?? null; + if (ip == null) { + return ip; + } + if (Date.now() - ip.timestamp > ip.ttl) { + family.ips.splice(position, 1); + return this.pick(origin, hostnameRecords, affinity); + } + return ip; + } + setRecords(origin, addresses) { + const timestamp = Date.now(); + const records = { records: { 4: null, 6: null } }; + for (const record of addresses) { + record.timestamp = timestamp; + if (typeof record.ttl === "number") { + record.ttl = Math.min(record.ttl, this.#maxTTL); + } else { + record.ttl = this.#maxTTL; + } + const familyRecords = records.records[record.family] ?? { ips: [] }; + familyRecords.ips.push(record); + records.records[record.family] = familyRecords; + } + this.#records.set(origin.hostname, records); + } + getHandler(meta, opts) { + return new DNSDispatchHandler(this, meta, opts); + } + }; + var DNSDispatchHandler = class extends DecoratorHandler { + #state = null; + #opts = null; + #dispatch = null; + #handler = null; + #origin = null; + constructor(state, { origin, handler: handler2, dispatch }, opts) { + super(handler2); + this.#origin = origin; + this.#handler = handler2; + this.#opts = { ...opts }; + this.#state = state; + this.#dispatch = dispatch; + } + onError(err) { + switch (err.code) { + case "ETIMEDOUT": + case "ECONNREFUSED": { + if (this.#state.dualStack) { + this.#state.runLookup(this.#origin, this.#opts, (err2, newOrigin) => { + if (err2) { + return this.#handler.onError(err2); + } + const dispatchOpts = { + ...this.#opts, + origin: newOrigin + }; + this.#dispatch(dispatchOpts, this); + }); + return; + } + this.#handler.onError(err); + return; + } + case "ENOTFOUND": + this.#state.deleteRecord(this.#origin); + default: + this.#handler.onError(err); + break; + } + } + }; + module.exports = (interceptorOpts) => { + if (interceptorOpts?.maxTTL != null && (typeof interceptorOpts?.maxTTL !== "number" || interceptorOpts?.maxTTL < 0)) { + throw new InvalidArgumentError("Invalid maxTTL. Must be a positive number"); + } + if (interceptorOpts?.maxItems != null && (typeof interceptorOpts?.maxItems !== "number" || interceptorOpts?.maxItems < 1)) { + throw new InvalidArgumentError( + "Invalid maxItems. Must be a positive number and greater than zero" + ); + } + if (interceptorOpts?.affinity != null && interceptorOpts?.affinity !== 4 && interceptorOpts?.affinity !== 6) { + throw new InvalidArgumentError("Invalid affinity. Must be either 4 or 6"); + } + if (interceptorOpts?.dualStack != null && typeof interceptorOpts?.dualStack !== "boolean") { + throw new InvalidArgumentError("Invalid dualStack. Must be a boolean"); + } + if (interceptorOpts?.lookup != null && typeof interceptorOpts?.lookup !== "function") { + throw new InvalidArgumentError("Invalid lookup. Must be a function"); + } + if (interceptorOpts?.pick != null && typeof interceptorOpts?.pick !== "function") { + throw new InvalidArgumentError("Invalid pick. Must be a function"); + } + const dualStack = interceptorOpts?.dualStack ?? true; + let affinity; + if (dualStack) { + affinity = interceptorOpts?.affinity ?? null; + } else { + affinity = interceptorOpts?.affinity ?? 4; + } + const opts = { + maxTTL: interceptorOpts?.maxTTL ?? 1e4, + // Expressed in ms + lookup: interceptorOpts?.lookup ?? null, + pick: interceptorOpts?.pick ?? null, + dualStack, + affinity, + maxItems: interceptorOpts?.maxItems ?? Infinity + }; + const instance = new DNSInstance(opts); + return (dispatch) => { + return function dnsInterceptor(origDispatchOpts, handler2) { + const origin = origDispatchOpts.origin.constructor === URL ? origDispatchOpts.origin : new URL(origDispatchOpts.origin); + if (isIP(origin.hostname) !== 0) { + return dispatch(origDispatchOpts, handler2); + } + instance.runLookup(origin, origDispatchOpts, (err, newOrigin) => { + if (err) { + return handler2.onError(err); + } + let dispatchOpts = null; + dispatchOpts = { + ...origDispatchOpts, + servername: origin.hostname, + // For SNI on TLS + origin: newOrigin, + headers: { + host: origin.hostname, + ...origDispatchOpts.headers + } + }; + dispatch( + dispatchOpts, + instance.getHandler({ origin, dispatch, handler: handler2 }, origDispatchOpts) + ); + }); + return true; + }; + }; + }; + } +}); + +// +var require_headers = __commonJS({ + ""(exports, module) { + "use strict"; + var { kConstruct } = require_symbols(); + var { kEnumerableProperty } = require_util(); + var { + iteratorMixin, + isValidHeaderName, + isValidHeaderValue + } = require_util2(); + var { webidl } = require_webidl(); + var assert2 = __require("node:assert"); + var util = __require("node:util"); + var kHeadersMap = Symbol("headers map"); + var kHeadersSortedMap = Symbol("headers map sorted"); + function isHTTPWhiteSpaceCharCode(code) { + return code === 10 || code === 13 || code === 9 || code === 32; + } + function headerValueNormalize(potentialValue) { + let i = 0; + let j = potentialValue.length; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) + --j; + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) + ++i; + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j); + } + function fill(headers, object) { + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i]; + if (header.length !== 2) { + throw webidl.errors.exception({ + header: "Headers constructor", + message: `expected name/value pair to be length 2, found ${header.length}.` + }); + } + appendHeader(headers, header[0], header[1]); + } + } else if (typeof object === "object" && object !== null) { + const keys = Object.keys(object); + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]); + } + } else { + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + } + } + function appendHeader(headers, name, value) { + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.append", + value, + type: "header value" + }); + } + if (getHeadersGuard(headers) === "immutable") { + throw new TypeError("immutable"); + } + return getHeadersList(headers).append(name, value, false); + } + function compareHeaderName(a, b) { + return a[0] < b[0] ? -1 : 1; + } + var HeadersList = class _HeadersList { + /** @type {[string, string][]|null} */ + cookies = null; + constructor(init) { + if (init instanceof _HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]); + this[kHeadersSortedMap] = init[kHeadersSortedMap]; + this.cookies = init.cookies === null ? null : [...init.cookies]; + } else { + this[kHeadersMap] = new Map(init); + this[kHeadersSortedMap] = null; + } + } + /** + * @see https://fetch.spec.whatwg.org/#header-list-contains + * @param {string} name + * @param {boolean} isLowerCase + */ + contains(name, isLowerCase) { + return this[kHeadersMap].has(isLowerCase ? name : name.toLowerCase()); + } + clear() { + this[kHeadersMap].clear(); + this[kHeadersSortedMap] = null; + this.cookies = null; + } + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-append + * @param {string} name + * @param {string} value + * @param {boolean} isLowerCase + */ + append(name, value, isLowerCase) { + this[kHeadersSortedMap] = null; + const lowercaseName = isLowerCase ? name : name.toLowerCase(); + const exists2 = this[kHeadersMap].get(lowercaseName); + if (exists2) { + const delimiter = lowercaseName === "cookie" ? "; " : ", "; + this[kHeadersMap].set(lowercaseName, { + name: exists2.name, + value: `${exists2.value}${delimiter}${value}` + }); + } else { + this[kHeadersMap].set(lowercaseName, { name, value }); + } + if (lowercaseName === "set-cookie") { + (this.cookies ??= []).push(value); + } + } + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-set + * @param {string} name + * @param {string} value + * @param {boolean} isLowerCase + */ + set(name, value, isLowerCase) { + this[kHeadersSortedMap] = null; + const lowercaseName = isLowerCase ? name : name.toLowerCase(); + if (lowercaseName === "set-cookie") { + this.cookies = [value]; + } + this[kHeadersMap].set(lowercaseName, { name, value }); + } + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-delete + * @param {string} name + * @param {boolean} isLowerCase + */ + delete(name, isLowerCase) { + this[kHeadersSortedMap] = null; + if (!isLowerCase) + name = name.toLowerCase(); + if (name === "set-cookie") { + this.cookies = null; + } + this[kHeadersMap].delete(name); + } + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-get + * @param {string} name + * @param {boolean} isLowerCase + * @returns {string | null} + */ + get(name, isLowerCase) { + return this[kHeadersMap].get(isLowerCase ? name : name.toLowerCase())?.value ?? null; + } + *[Symbol.iterator]() { + for (const { 0: name, 1: { value } } of this[kHeadersMap]) { + yield [name, value]; + } + } + get entries() { + const headers = {}; + if (this[kHeadersMap].size !== 0) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value; + } + } + return headers; + } + rawValues() { + return this[kHeadersMap].values(); + } + get entriesList() { + const headers = []; + if (this[kHeadersMap].size !== 0) { + for (const { 0: lowerName, 1: { name, value } } of this[kHeadersMap]) { + if (lowerName === "set-cookie") { + for (const cookie of this.cookies) { + headers.push([name, cookie]); + } + } else { + headers.push([name, value]); + } + } + } + return headers; + } + // https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set + toSortedArray() { + const size = this[kHeadersMap].size; + const array = new Array(size); + if (size <= 32) { + if (size === 0) { + return array; + } + const iterator2 = this[kHeadersMap][Symbol.iterator](); + const firstValue = iterator2.next().value; + array[0] = [firstValue[0], firstValue[1].value]; + assert2(firstValue[1].value !== null); + for (let i = 1, j = 0, right2 = 0, left2 = 0, pivot = 0, x, value; i < size; ++i) { + value = iterator2.next().value; + x = array[i] = [value[0], value[1].value]; + assert2(x[1] !== null); + left2 = 0; + right2 = i; + while (left2 < right2) { + pivot = left2 + (right2 - left2 >> 1); + if (array[pivot][0] <= x[0]) { + left2 = pivot + 1; + } else { + right2 = pivot; + } + } + if (i !== pivot) { + j = i; + while (j > left2) { + array[j] = array[--j]; + } + array[left2] = x; + } + } + if (!iterator2.next().done) { + throw new TypeError("Unreachable"); + } + return array; + } else { + let i = 0; + for (const { 0: name, 1: { value } } of this[kHeadersMap]) { + array[i++] = [name, value]; + assert2(value !== null); + } + return array.sort(compareHeaderName); + } + } + }; + var Headers2 = class _Headers { + #guard; + #headersList; + constructor(init = void 0) { + webidl.util.markAsUncloneable(this); + if (init === kConstruct) { + return; + } + this.#headersList = new HeadersList(); + this.#guard = "none"; + if (init !== void 0) { + init = webidl.converters.HeadersInit(init, "Headers contructor", "init"); + fill(this, init); + } + } + // https://fetch.spec.whatwg.org/#dom-headers-append + append(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, "Headers.append"); + const prefix = "Headers.append"; + name = webidl.converters.ByteString(name, prefix, "name"); + value = webidl.converters.ByteString(value, prefix, "value"); + return appendHeader(this, name, value); + } + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, "Headers.delete"); + const prefix = "Headers.delete"; + name = webidl.converters.ByteString(name, prefix, "name"); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: "Headers.delete", + value: name, + type: "header name" + }); + } + if (this.#guard === "immutable") { + throw new TypeError("immutable"); + } + if (!this.#headersList.contains(name, false)) { + return; + } + this.#headersList.delete(name, false); + } + // https://fetch.spec.whatwg.org/#dom-headers-get + get(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, "Headers.get"); + const prefix = "Headers.get"; + name = webidl.converters.ByteString(name, prefix, "name"); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: "header name" + }); + } + return this.#headersList.get(name, false); + } + // https://fetch.spec.whatwg.org/#dom-headers-has + has(name) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 1, "Headers.has"); + const prefix = "Headers.has"; + name = webidl.converters.ByteString(name, prefix, "name"); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: "header name" + }); + } + return this.#headersList.contains(name, false); + } + // https://fetch.spec.whatwg.org/#dom-headers-set + set(name, value) { + webidl.brandCheck(this, _Headers); + webidl.argumentLengthCheck(arguments, 2, "Headers.set"); + const prefix = "Headers.set"; + name = webidl.converters.ByteString(name, prefix, "name"); + value = webidl.converters.ByteString(value, prefix, "value"); + value = headerValueNormalize(value); + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix, + value: name, + type: "header name" + }); + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix, + value, + type: "header value" + }); + } + if (this.#guard === "immutable") { + throw new TypeError("immutable"); + } + this.#headersList.set(name, value, false); + } + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie() { + webidl.brandCheck(this, _Headers); + const list = this.#headersList.cookies; + if (list) { + return [...list]; + } + return []; + } + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap]() { + if (this.#headersList[kHeadersSortedMap]) { + return this.#headersList[kHeadersSortedMap]; + } + const headers = []; + const names = this.#headersList.toSortedArray(); + const cookies = this.#headersList.cookies; + if (cookies === null || cookies.length === 1) { + return this.#headersList[kHeadersSortedMap] = names; + } + for (let i = 0; i < names.length; ++i) { + const { 0: name, 1: value } = names[i]; + if (name === "set-cookie") { + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]); + } + } else { + headers.push([name, value]); + } + } + return this.#headersList[kHeadersSortedMap] = headers; + } + [util.inspect.custom](depth, options) { + options.depth ??= depth; + return `Headers ${util.formatWithOptions(options, this.#headersList.entries)}`; + } + static getHeadersGuard(o) { + return o.#guard; + } + static setHeadersGuard(o, guard) { + o.#guard = guard; + } + static getHeadersList(o) { + return o.#headersList; + } + static setHeadersList(o, list) { + o.#headersList = list; + } + }; + var { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers2; + Reflect.deleteProperty(Headers2, "getHeadersGuard"); + Reflect.deleteProperty(Headers2, "setHeadersGuard"); + Reflect.deleteProperty(Headers2, "getHeadersList"); + Reflect.deleteProperty(Headers2, "setHeadersList"); + iteratorMixin("Headers", Headers2, kHeadersSortedMap, 0, 1); + Object.defineProperties(Headers2.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Headers", + configurable: true + }, + [util.inspect.custom]: { + enumerable: false + } + }); + webidl.converters.HeadersInit = function(V, prefix, argument) { + if (webidl.util.Type(V) === "Object") { + const iterator2 = Reflect.get(V, Symbol.iterator); + if (!util.types.isProxy(V) && iterator2 === Headers2.prototype.entries) { + try { + return getHeadersList(V).entriesList; + } catch { + } + } + if (typeof iterator2 === "function") { + return webidl.converters["sequence>"](V, prefix, argument, iterator2.bind(V)); + } + return webidl.converters["record"](V, prefix, argument); + } + throw webidl.errors.conversionFailed({ + prefix: "Headers constructor", + argument: "Argument 1", + types: ["sequence>", "record"] + }); + }; + module.exports = { + fill, + // for test. + compareHeaderName, + Headers: Headers2, + HeadersList, + getHeadersGuard, + setHeadersGuard, + setHeadersList, + getHeadersList + }; + } +}); + +// +var require_response = __commonJS({ + ""(exports, module) { + "use strict"; + var { Headers: Headers2, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers(); + var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body(); + var util = require_util(); + var nodeUtil = __require("node:util"); + var { kEnumerableProperty } = util; + var { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode, + environmentSettingsObject: relevantRealm + } = require_util2(); + var { + redirectStatusSet, + nullBodyStatus + } = require_constants3(); + var { kState, kHeaders } = require_symbols2(); + var { webidl } = require_webidl(); + var { FormData } = require_formdata(); + var { URLSerializer } = require_data_url(); + var { kConstruct } = require_symbols(); + var assert2 = __require("node:assert"); + var { types: types3 } = __require("node:util"); + var textEncoder = new TextEncoder("utf-8"); + var Response = class _Response { + // Creates network error Response. + static error() { + const responseObject = fromInnerResponse(makeNetworkError(), "immutable"); + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response-json + static json(data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, "Response.json"); + if (init !== null) { + init = webidl.converters.ResponseInit(init); + } + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ); + const body = extractBody(bytes); + const responseObject = fromInnerResponse(makeResponse({}), "response"); + initializeResponse(responseObject, init, { body: body[0], type: "application/json" }); + return responseObject; + } + // Creates a redirect Response that redirects to url with status status. + static redirect(url, status = 302) { + webidl.argumentLengthCheck(arguments, 1, "Response.redirect"); + url = webidl.converters.USVString(url); + status = webidl.converters["unsigned short"](status); + let parsedURL; + try { + parsedURL = new URL(url, relevantRealm.settingsObject.baseUrl); + } catch (err) { + throw new TypeError(`Failed to parse URL from ${url}`, { cause: err }); + } + if (!redirectStatusSet.has(status)) { + throw new RangeError(`Invalid status code ${status}`); + } + const responseObject = fromInnerResponse(makeResponse({}), "immutable"); + responseObject[kState].status = status; + const value = isomorphicEncode(URLSerializer(parsedURL)); + responseObject[kState].headersList.append("location", value, true); + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response + constructor(body = null, init = {}) { + webidl.util.markAsUncloneable(this); + if (body === kConstruct) { + return; + } + if (body !== null) { + body = webidl.converters.BodyInit(body); + } + init = webidl.converters.ResponseInit(init); + this[kState] = makeResponse({}); + this[kHeaders] = new Headers2(kConstruct); + setHeadersGuard(this[kHeaders], "response"); + setHeadersList(this[kHeaders], this[kState].headersList); + let bodyWithType = null; + if (body != null) { + const [extractedBody, type] = extractBody(body); + bodyWithType = { body: extractedBody, type }; + } + initializeResponse(this, init, bodyWithType); + } + // Returns response’s type, e.g., "cors". + get type() { + webidl.brandCheck(this, _Response); + return this[kState].type; + } + // Returns response’s URL, if it has one; otherwise the empty string. + get url() { + webidl.brandCheck(this, _Response); + const urlList = this[kState].urlList; + const url = urlList[urlList.length - 1] ?? null; + if (url === null) { + return ""; + } + return URLSerializer(url, true); + } + // Returns whether response was obtained through a redirect. + get redirected() { + webidl.brandCheck(this, _Response); + return this[kState].urlList.length > 1; + } + // Returns response’s status. + get status() { + webidl.brandCheck(this, _Response); + return this[kState].status; + } + // Returns whether response’s status is an ok status. + get ok() { + webidl.brandCheck(this, _Response); + return this[kState].status >= 200 && this[kState].status <= 299; + } + // Returns response’s status message. + get statusText() { + webidl.brandCheck(this, _Response); + return this[kState].statusText; + } + // Returns response’s headers as Headers. + get headers() { + webidl.brandCheck(this, _Response); + return this[kHeaders]; + } + get body() { + webidl.brandCheck(this, _Response); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Response); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + // Returns a clone of response. + clone() { + webidl.brandCheck(this, _Response); + if (bodyUnusable(this)) { + throw webidl.errors.exception({ + header: "Response.clone", + message: "Body has already been consumed." + }); + } + const clonedResponse = cloneResponse(this[kState]); + if (hasFinalizationRegistry && this[kState].body?.stream) { + streamRegistry.register(this, new WeakRef(this[kState].body.stream)); + } + return fromInnerResponse(clonedResponse, getHeadersGuard(this[kHeaders])); + } + [nodeUtil.inspect.custom](depth, options) { + if (options.depth === null) { + options.depth = 2; + } + options.colors ??= true; + const properties = { + status: this.status, + statusText: this.statusText, + headers: this.headers, + body: this.body, + bodyUsed: this.bodyUsed, + ok: this.ok, + redirected: this.redirected, + type: this.type, + url: this.url + }; + return `Response ${nodeUtil.formatWithOptions(options, properties)}`; + } + }; + mixinBody(Response); + Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Response", + configurable: true + } + }); + Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty + }); + function cloneResponse(response) { + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ); + } + const newResponse = makeResponse({ ...response, body: null }); + if (response.body != null) { + newResponse.body = cloneBody(newResponse, response.body); + } + return newResponse; + } + function makeResponse(init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: "default", + status: 200, + timingInfo: null, + cacheState: "", + statusText: "", + ...init, + headersList: init?.headersList ? new HeadersList(init?.headersList) : new HeadersList(), + urlList: init?.urlList ? [...init.urlList] : [] + }; + } + function makeNetworkError(reason) { + const isError = isErrorLike(reason); + return makeResponse({ + type: "error", + status: 0, + error: isError ? reason : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === "AbortError" + }); + } + function isNetworkError(response) { + return ( + // A network error is a response whose type is "error", + response.type === "error" && // status is 0 + response.status === 0 + ); + } + function makeFilteredResponse(response, state) { + state = { + internalResponse: response, + ...state + }; + return new Proxy(response, { + get(target, p) { + return p in state ? state[p] : target[p]; + }, + set(target, p, value) { + assert2(!(p in state)); + target[p] = value; + return true; + } + }); + } + function filterResponse(response, type) { + if (type === "basic") { + return makeFilteredResponse(response, { + type: "basic", + headersList: response.headersList + }); + } else if (type === "cors") { + return makeFilteredResponse(response, { + type: "cors", + headersList: response.headersList + }); + } else if (type === "opaque") { + return makeFilteredResponse(response, { + type: "opaque", + urlList: Object.freeze([]), + status: 0, + statusText: "", + body: null + }); + } else if (type === "opaqueredirect") { + return makeFilteredResponse(response, { + type: "opaqueredirect", + status: 0, + statusText: "", + headersList: [], + body: null + }); + } else { + assert2(false); + } + } + function makeAppropriateNetworkError(fetchParams, err = null) { + assert2(isCancelled(fetchParams)); + return isAborted(fetchParams) ? makeNetworkError(Object.assign(new DOMException("The operation was aborted.", "AbortError"), { cause: err })) : makeNetworkError(Object.assign(new DOMException("Request was cancelled."), { cause: err })); + } + function initializeResponse(response, init, body) { + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); + } + if ("statusText" in init && init.statusText != null) { + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError("Invalid statusText"); + } + } + if ("status" in init && init.status != null) { + response[kState].status = init.status; + } + if ("statusText" in init && init.statusText != null) { + response[kState].statusText = init.statusText; + } + if ("headers" in init && init.headers != null) { + fill(response[kHeaders], init.headers); + } + if (body) { + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: "Response constructor", + message: `Invalid response status code ${response.status}` + }); + } + response[kState].body = body.body; + if (body.type != null && !response[kState].headersList.contains("content-type", true)) { + response[kState].headersList.append("content-type", body.type, true); + } + } + } + function fromInnerResponse(innerResponse, guard) { + const response = new Response(kConstruct); + response[kState] = innerResponse; + response[kHeaders] = new Headers2(kConstruct); + setHeadersList(response[kHeaders], innerResponse.headersList); + setHeadersGuard(response[kHeaders], guard); + if (hasFinalizationRegistry && innerResponse.body?.stream) { + streamRegistry.register(response, new WeakRef(innerResponse.body.stream)); + } + return response; + } + webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream + ); + webidl.converters.FormData = webidl.interfaceConverter( + FormData + ); + webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams + ); + webidl.converters.XMLHttpRequestBodyInit = function(V, prefix, name) { + if (typeof V === "string") { + return webidl.converters.USVString(V, prefix, name); + } + if (isBlobLike(V)) { + return webidl.converters.Blob(V, prefix, name, { strict: false }); + } + if (ArrayBuffer.isView(V) || types3.isArrayBuffer(V)) { + return webidl.converters.BufferSource(V, prefix, name); + } + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, prefix, name, { strict: false }); + } + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V, prefix, name); + } + return webidl.converters.DOMString(V, prefix, name); + }; + webidl.converters.BodyInit = function(V, prefix, argument) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V, prefix, argument); + } + if (V?.[Symbol.asyncIterator]) { + return V; + } + return webidl.converters.XMLHttpRequestBodyInit(V, prefix, argument); + }; + webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: "status", + converter: webidl.converters["unsigned short"], + defaultValue: () => 200 + }, + { + key: "statusText", + converter: webidl.converters.ByteString, + defaultValue: () => "" + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + } + ]); + module.exports = { + isNetworkError, + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse, + fromInnerResponse + }; + } +}); + +// +var require_dispatcher_weakref = __commonJS({ + ""(exports, module) { + "use strict"; + var { kConnected, kSize } = require_symbols(); + var CompatWeakRef = class { + constructor(value) { + this.value = value; + } + deref() { + return this.value[kConnected] === 0 && this.value[kSize] === 0 ? void 0 : this.value; + } + }; + var CompatFinalizer = class { + constructor(finalizer) { + this.finalizer = finalizer; + } + register(dispatcher, key) { + if (dispatcher.on) { + dispatcher.on("disconnect", () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key); + } + }); + } + } + unregister(key) { + } + }; + module.exports = function() { + if (process.env.NODE_V8_COVERAGE && process.version.startsWith("v18")) { + process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"); + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + }; + } + return { WeakRef, FinalizationRegistry }; + }; + } +}); + +// +var require_request2 = __commonJS({ + ""(exports, module) { + "use strict"; + var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body(); + var { Headers: Headers2, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers(); + var { FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref()(); + var util = require_util(); + var nodeUtil = __require("node:util"); + var { + isValidHTTPToken, + sameOrigin, + environmentSettingsObject + } = require_util2(); + var { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex + } = require_constants3(); + var { kEnumerableProperty, normalizedMethodRecordsBase, normalizedMethodRecords } = util; + var { kHeaders, kSignal, kState, kDispatcher } = require_symbols2(); + var { webidl } = require_webidl(); + var { URLSerializer } = require_data_url(); + var { kConstruct } = require_symbols(); + var assert2 = __require("node:assert"); + var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __require("node:events"); + var kAbortController = Symbol("abortController"); + var requestFinalizer = new FinalizationRegistry2(({ signal, abort }) => { + signal.removeEventListener("abort", abort); + }); + var dependentControllerMap = /* @__PURE__ */ new WeakMap(); + function buildAbort(acRef) { + return abort; + function abort() { + const ac = acRef.deref(); + if (ac !== void 0) { + requestFinalizer.unregister(abort); + this.removeEventListener("abort", abort); + ac.abort(this.reason); + const controllerList = dependentControllerMap.get(ac.signal); + if (controllerList !== void 0) { + if (controllerList.size !== 0) { + for (const ref of controllerList) { + const ctrl = ref.deref(); + if (ctrl !== void 0) { + ctrl.abort(this.reason); + } + } + controllerList.clear(); + } + dependentControllerMap.delete(ac.signal); + } + } + } + } + var patchMethodWarning = false; + var Request = class _Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor(input, init = {}) { + webidl.util.markAsUncloneable(this); + if (input === kConstruct) { + return; + } + const prefix = "Request constructor"; + webidl.argumentLengthCheck(arguments, 1, prefix); + input = webidl.converters.RequestInfo(input, prefix, "input"); + init = webidl.converters.RequestInit(init, prefix, "init"); + let request2 = null; + let fallbackMode = null; + const baseUrl2 = environmentSettingsObject.settingsObject.baseUrl; + let signal = null; + if (typeof input === "string") { + this[kDispatcher] = init.dispatcher; + let parsedURL; + try { + parsedURL = new URL(input, baseUrl2); + } catch (err) { + throw new TypeError("Failed to parse URL from " + input, { cause: err }); + } + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + "Request cannot be constructed from a URL that includes credentials: " + input + ); + } + request2 = makeRequest({ urlList: [parsedURL] }); + fallbackMode = "cors"; + } else { + this[kDispatcher] = init.dispatcher || input[kDispatcher]; + assert2(input instanceof _Request); + request2 = input[kState]; + signal = input[kSignal]; + } + const origin = environmentSettingsObject.settingsObject.origin; + let window2 = "client"; + if (request2.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request2.window, origin)) { + window2 = request2.window; + } + if (init.window != null) { + throw new TypeError(`'window' option '${window2}' must be null`); + } + if ("window" in init) { + window2 = "no-window"; + } + request2 = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request2.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request2.headersList, + // unsafe-request flag Set. + unsafeRequest: request2.unsafeRequest, + // client This’s relevant settings object. + client: environmentSettingsObject.settingsObject, + // window window. + window: window2, + // priority request’s priority. + priority: request2.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request2.origin, + // referrer request’s referrer. + referrer: request2.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request2.referrerPolicy, + // mode request’s mode. + mode: request2.mode, + // credentials mode request’s credentials mode. + credentials: request2.credentials, + // cache mode request’s cache mode. + cache: request2.cache, + // redirect mode request’s redirect mode. + redirect: request2.redirect, + // integrity metadata request’s integrity metadata. + integrity: request2.integrity, + // keepalive request’s keepalive. + keepalive: request2.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request2.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request2.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request2.urlList] + }); + const initHasKey = Object.keys(init).length !== 0; + if (initHasKey) { + if (request2.mode === "navigate") { + request2.mode = "same-origin"; + } + request2.reloadNavigation = false; + request2.historyNavigation = false; + request2.origin = "client"; + request2.referrer = "client"; + request2.referrerPolicy = ""; + request2.url = request2.urlList[request2.urlList.length - 1]; + request2.urlList = [request2.url]; + } + if (init.referrer !== void 0) { + const referrer = init.referrer; + if (referrer === "") { + request2.referrer = "no-referrer"; + } else { + let parsedReferrer; + try { + parsedReferrer = new URL(referrer, baseUrl2); + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }); + } + if (parsedReferrer.protocol === "about:" && parsedReferrer.hostname === "client" || origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl)) { + request2.referrer = "client"; + } else { + request2.referrer = parsedReferrer; + } + } + } + if (init.referrerPolicy !== void 0) { + request2.referrerPolicy = init.referrerPolicy; + } + let mode; + if (init.mode !== void 0) { + mode = init.mode; + } else { + mode = fallbackMode; + } + if (mode === "navigate") { + throw webidl.errors.exception({ + header: "Request constructor", + message: "invalid request mode navigate." + }); + } + if (mode != null) { + request2.mode = mode; + } + if (init.credentials !== void 0) { + request2.credentials = init.credentials; + } + if (init.cache !== void 0) { + request2.cache = init.cache; + } + if (request2.cache === "only-if-cached" && request2.mode !== "same-origin") { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ); + } + if (init.redirect !== void 0) { + request2.redirect = init.redirect; + } + if (init.integrity != null) { + request2.integrity = String(init.integrity); + } + if (init.keepalive !== void 0) { + request2.keepalive = Boolean(init.keepalive); + } + if (init.method !== void 0) { + let method = init.method; + const mayBeNormalized = normalizedMethodRecords[method]; + if (mayBeNormalized !== void 0) { + request2.method = mayBeNormalized; + } else { + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`); + } + const upperCase = method.toUpperCase(); + if (forbiddenMethodsSet.has(upperCase)) { + throw new TypeError(`'${method}' HTTP method is unsupported.`); + } + method = normalizedMethodRecordsBase[upperCase] ?? method; + request2.method = method; + } + if (!patchMethodWarning && request2.method === "patch") { + process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.", { + code: "UNDICI-FETCH-patch" + }); + patchMethodWarning = true; + } + } + if (init.signal !== void 0) { + signal = init.signal; + } + this[kState] = request2; + const ac = new AbortController(); + this[kSignal] = ac.signal; + if (signal != null) { + if (!signal || typeof signal.aborted !== "boolean" || typeof signal.addEventListener !== "function") { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ); + } + if (signal.aborted) { + ac.abort(signal.reason); + } else { + this[kAbortController] = ac; + const acRef = new WeakRef(ac); + const abort = buildAbort(acRef); + try { + if (typeof getMaxListeners === "function" && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(1500, signal); + } else if (getEventListeners(signal, "abort").length >= defaultMaxListeners) { + setMaxListeners(1500, signal); + } + } catch { + } + util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { signal, abort }, abort); + } + } + this[kHeaders] = new Headers2(kConstruct); + setHeadersList(this[kHeaders], request2.headersList); + setHeadersGuard(this[kHeaders], "request"); + if (mode === "no-cors") { + if (!corsSafeListedMethodsSet.has(request2.method)) { + throw new TypeError( + `'${request2.method} is unsupported in no-cors mode.` + ); + } + setHeadersGuard(this[kHeaders], "request-no-cors"); + } + if (initHasKey) { + const headersList = getHeadersList(this[kHeaders]); + const headers = init.headers !== void 0 ? init.headers : new HeadersList(headersList); + headersList.clear(); + if (headers instanceof HeadersList) { + for (const { name, value } of headers.rawValues()) { + headersList.append(name, value, false); + } + headersList.cookies = headers.cookies; + } else { + fillHeaders(this[kHeaders], headers); + } + } + const inputBody = input instanceof _Request ? input[kState].body : null; + if ((init.body != null || inputBody != null) && (request2.method === "GET" || request2.method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body."); + } + let initBody = null; + if (init.body != null) { + const [extractedBody, contentType] = extractBody( + init.body, + request2.keepalive + ); + initBody = extractedBody; + if (contentType && !getHeadersList(this[kHeaders]).contains("content-type", true)) { + this[kHeaders].append("content-type", contentType); + } + } + const inputOrInitBody = initBody ?? inputBody; + if (inputOrInitBody != null && inputOrInitBody.source == null) { + if (initBody != null && init.duplex == null) { + throw new TypeError("RequestInit: duplex option is required when sending a body."); + } + if (request2.mode !== "same-origin" && request2.mode !== "cors") { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ); + } + request2.useCORSPreflightFlag = true; + } + let finalBody = inputOrInitBody; + if (initBody == null && inputBody != null) { + if (bodyUnusable(input)) { + throw new TypeError( + "Cannot construct a Request with a Request object that has already been used." + ); + } + const identityTransform = new TransformStream(); + inputBody.stream.pipeThrough(identityTransform); + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + }; + } + this[kState].body = finalBody; + } + // Returns request’s HTTP method, which is "GET" by default. + get method() { + webidl.brandCheck(this, _Request); + return this[kState].method; + } + // Returns the URL of request as a string. + get url() { + webidl.brandCheck(this, _Request); + return URLSerializer(this[kState].url); + } + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers() { + webidl.brandCheck(this, _Request); + return this[kHeaders]; + } + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination() { + webidl.brandCheck(this, _Request); + return this[kState].destination; + } + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer() { + webidl.brandCheck(this, _Request); + if (this[kState].referrer === "no-referrer") { + return ""; + } + if (this[kState].referrer === "client") { + return "about:client"; + } + return this[kState].referrer.toString(); + } + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy() { + webidl.brandCheck(this, _Request); + return this[kState].referrerPolicy; + } + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode() { + webidl.brandCheck(this, _Request); + return this[kState].mode; + } + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials() { + return this[kState].credentials; + } + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache() { + webidl.brandCheck(this, _Request); + return this[kState].cache; + } + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect() { + webidl.brandCheck(this, _Request); + return this[kState].redirect; + } + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity() { + webidl.brandCheck(this, _Request); + return this[kState].integrity; + } + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive() { + webidl.brandCheck(this, _Request); + return this[kState].keepalive; + } + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].reloadNavigation; + } + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-forward navigation). + get isHistoryNavigation() { + webidl.brandCheck(this, _Request); + return this[kState].historyNavigation; + } + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal() { + webidl.brandCheck(this, _Request); + return this[kSignal]; + } + get body() { + webidl.brandCheck(this, _Request); + return this[kState].body ? this[kState].body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Request); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream); + } + get duplex() { + webidl.brandCheck(this, _Request); + return "half"; + } + // Returns a clone of request. + clone() { + webidl.brandCheck(this, _Request); + if (bodyUnusable(this)) { + throw new TypeError("unusable"); + } + const clonedRequest = cloneRequest(this[kState]); + const ac = new AbortController(); + if (this.signal.aborted) { + ac.abort(this.signal.reason); + } else { + let list = dependentControllerMap.get(this.signal); + if (list === void 0) { + list = /* @__PURE__ */ new Set(); + dependentControllerMap.set(this.signal, list); + } + const acRef = new WeakRef(ac); + list.add(acRef); + util.addAbortListener( + ac.signal, + buildAbort(acRef) + ); + } + return fromInnerRequest(clonedRequest, ac.signal, getHeadersGuard(this[kHeaders])); + } + [nodeUtil.inspect.custom](depth, options) { + if (options.depth === null) { + options.depth = 2; + } + options.colors ??= true; + const properties = { + method: this.method, + url: this.url, + headers: this.headers, + destination: this.destination, + referrer: this.referrer, + referrerPolicy: this.referrerPolicy, + mode: this.mode, + credentials: this.credentials, + cache: this.cache, + redirect: this.redirect, + integrity: this.integrity, + keepalive: this.keepalive, + isReloadNavigation: this.isReloadNavigation, + isHistoryNavigation: this.isHistoryNavigation, + signal: this.signal + }; + return `Request ${nodeUtil.formatWithOptions(options, properties)}`; + } + }; + mixinBody(Request); + function makeRequest(init) { + return { + method: init.method ?? "GET", + localURLsOnly: init.localURLsOnly ?? false, + unsafeRequest: init.unsafeRequest ?? false, + body: init.body ?? null, + client: init.client ?? null, + reservedClient: init.reservedClient ?? null, + replacesClientId: init.replacesClientId ?? "", + window: init.window ?? "client", + keepalive: init.keepalive ?? false, + serviceWorkers: init.serviceWorkers ?? "all", + initiator: init.initiator ?? "", + destination: init.destination ?? "", + priority: init.priority ?? null, + origin: init.origin ?? "client", + policyContainer: init.policyContainer ?? "client", + referrer: init.referrer ?? "client", + referrerPolicy: init.referrerPolicy ?? "", + mode: init.mode ?? "no-cors", + useCORSPreflightFlag: init.useCORSPreflightFlag ?? false, + credentials: init.credentials ?? "same-origin", + useCredentials: init.useCredentials ?? false, + cache: init.cache ?? "default", + redirect: init.redirect ?? "follow", + integrity: init.integrity ?? "", + cryptoGraphicsNonceMetadata: init.cryptoGraphicsNonceMetadata ?? "", + parserMetadata: init.parserMetadata ?? "", + reloadNavigation: init.reloadNavigation ?? false, + historyNavigation: init.historyNavigation ?? false, + userActivation: init.userActivation ?? false, + taintedOrigin: init.taintedOrigin ?? false, + redirectCount: init.redirectCount ?? 0, + responseTainting: init.responseTainting ?? "basic", + preventNoCacheCacheControlHeaderModification: init.preventNoCacheCacheControlHeaderModification ?? false, + done: init.done ?? false, + timingAllowFailed: init.timingAllowFailed ?? false, + urlList: init.urlList, + url: init.urlList[0], + headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList() + }; + } + function cloneRequest(request2) { + const newRequest = makeRequest({ ...request2, body: null }); + if (request2.body != null) { + newRequest.body = cloneBody(newRequest, request2.body); + } + return newRequest; + } + function fromInnerRequest(innerRequest, signal, guard) { + const request2 = new Request(kConstruct); + request2[kState] = innerRequest; + request2[kSignal] = signal; + request2[kHeaders] = new Headers2(kConstruct); + setHeadersList(request2[kHeaders], innerRequest.headersList); + setHeadersGuard(request2[kHeaders], guard); + return request2; + } + Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "Request", + configurable: true + } + }); + webidl.converters.Request = webidl.interfaceConverter( + Request + ); + webidl.converters.RequestInfo = function(V, prefix, argument) { + if (typeof V === "string") { + return webidl.converters.USVString(V, prefix, argument); + } + if (V instanceof Request) { + return webidl.converters.Request(V, prefix, argument); + } + return webidl.converters.USVString(V, prefix, argument); + }; + webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal + ); + webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: "method", + converter: webidl.converters.ByteString + }, + { + key: "headers", + converter: webidl.converters.HeadersInit + }, + { + key: "body", + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: "referrer", + converter: webidl.converters.USVString + }, + { + key: "referrerPolicy", + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: "mode", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: "credentials", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: "cache", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: "redirect", + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: "integrity", + converter: webidl.converters.DOMString + }, + { + key: "keepalive", + converter: webidl.converters.boolean + }, + { + key: "signal", + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + "RequestInit", + "signal", + { strict: false } + ) + ) + }, + { + key: "window", + converter: webidl.converters.any + }, + { + key: "duplex", + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + }, + { + key: "dispatcher", + // undici specific option + converter: webidl.converters.any + } + ]); + module.exports = { Request, makeRequest, fromInnerRequest, cloneRequest }; + } +}); + +// +var require_fetch = __commonJS({ + ""(exports, module) { + "use strict"; + var { + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse, + fromInnerResponse + } = require_response(); + var { HeadersList } = require_headers(); + var { Request, cloneRequest } = require_request2(); + var zlib = __require("node:zlib"); + var { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme, + clampAndCoarsenConnectionTimingInfo, + simpleRangeHeaderValue, + buildContentRange, + createInflate, + extractMimeType + } = require_util2(); + var { kState, kDispatcher } = require_symbols2(); + var assert2 = __require("node:assert"); + var { safelyExtractBody, extractBody } = require_body(); + var { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet + } = require_constants3(); + var EE = __require("node:events"); + var { Readable, pipeline, finished } = __require("node:stream"); + var { addAbortListener, isErrored, isReadable, bufferToLowerCasedHeaderName } = require_util(); + var { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require_data_url(); + var { getGlobalDispatcher } = require_global2(); + var { webidl } = require_webidl(); + var { STATUS_CODES } = __require("node:http"); + var GET_OR_HEAD = ["GET", "HEAD"]; + var defaultUserAgent = typeof __UNDICI_IS_NODE__ !== "undefined" || typeof esbuildDetection !== "undefined" ? "node" : "undici"; + var resolveObjectURL; + var Fetch = class extends EE { + constructor(dispatcher) { + super(); + this.dispatcher = dispatcher; + this.connection = null; + this.dump = false; + this.state = "ongoing"; + } + terminate(reason) { + if (this.state !== "ongoing") { + return; + } + this.state = "terminated"; + this.connection?.destroy(reason); + this.emit("terminated", reason); + } + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort(error2) { + if (this.state !== "ongoing") { + return; + } + this.state = "aborted"; + if (!error2) { + error2 = new DOMException("The operation was aborted.", "AbortError"); + } + this.serializedAbortReason = error2; + this.connection?.destroy(error2); + this.emit("terminated", error2); + } + }; + function handleFetchDone(response) { + finalizeAndReportTiming(response, "fetch"); + } + function fetch3(input, init = void 0) { + webidl.argumentLengthCheck(arguments, 1, "globalThis.fetch"); + let p = createDeferredPromise(); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + const request2 = requestObject[kState]; + if (requestObject.signal.aborted) { + abortFetch(p, request2, null, requestObject.signal.reason); + return p.promise; + } + const globalObject = request2.client.globalObject; + if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") { + request2.serviceWorkers = "none"; + } + let responseObject = null; + let locallyAborted = false; + let controller = null; + addAbortListener( + requestObject.signal, + () => { + locallyAborted = true; + assert2(controller != null); + controller.abort(requestObject.signal.reason); + const realResponse = responseObject?.deref(); + abortFetch(p, request2, realResponse, requestObject.signal.reason); + } + ); + const processResponse = (response) => { + if (locallyAborted) { + return; + } + if (response.aborted) { + abortFetch(p, request2, responseObject, controller.serializedAbortReason); + return; + } + if (response.type === "error") { + p.reject(new TypeError("fetch failed", { cause: response.error })); + return; + } + responseObject = new WeakRef(fromInnerResponse(response, "immutable")); + p.resolve(responseObject.deref()); + p = null; + }; + controller = fetching({ + request: request2, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: requestObject[kDispatcher] + // undici + }); + return p.promise; + } + function finalizeAndReportTiming(response, initiatorType = "other") { + if (response.type === "error" && response.aborted) { + return; + } + if (!response.urlList?.length) { + return; + } + const originalURL = response.urlList[0]; + let timingInfo = response.timingInfo; + let cacheState = response.cacheState; + if (!urlIsHttpHttpsScheme(originalURL)) { + return; + } + if (timingInfo === null) { + return; + } + if (!response.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }); + cacheState = ""; + } + timingInfo.endTime = coarsenedSharedCurrentTime(); + response.timingInfo = timingInfo; + markResourceTiming( + timingInfo, + originalURL.href, + initiatorType, + globalThis, + cacheState + ); + } + var markResourceTiming = performance.markResourceTiming; + function abortFetch(p, request2, responseObject, error2) { + if (p) { + p.reject(error2); + } + if (request2.body != null && isReadable(request2.body?.stream)) { + request2.body.stream.cancel(error2).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + if (responseObject == null) { + return; + } + const response = responseObject[kState]; + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error2).catch((err) => { + if (err.code === "ERR_INVALID_STATE") { + return; + } + throw err; + }); + } + } + function fetching({ + request: request2, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher = getGlobalDispatcher() + // undici + }) { + assert2(dispatcher); + let taskDestination = null; + let crossOriginIsolatedCapability = false; + if (request2.client != null) { + taskDestination = request2.client.globalObject; + crossOriginIsolatedCapability = request2.client.crossOriginIsolatedCapability; + } + const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); + const timingInfo = createOpaqueTimingInfo({ + startTime: currentTime + }); + const fetchParams = { + controller: new Fetch(dispatcher), + request: request2, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + }; + assert2(!request2.body || request2.body.stream); + if (request2.window === "client") { + request2.window = request2.client?.globalObject?.constructor?.name === "Window" ? request2.client : "no-window"; + } + if (request2.origin === "client") { + request2.origin = request2.client.origin; + } + if (request2.policyContainer === "client") { + if (request2.client != null) { + request2.policyContainer = clonePolicyContainer( + request2.client.policyContainer + ); + } else { + request2.policyContainer = makePolicyContainer(); + } + } + if (!request2.headersList.contains("accept", true)) { + const value = "*/*"; + request2.headersList.append("accept", value, true); + } + if (!request2.headersList.contains("accept-language", true)) { + request2.headersList.append("accept-language", "*", true); + } + if (request2.priority === null) { + } + if (subresourceSet.has(request2.destination)) { + } + mainFetch(fetchParams).catch((err) => { + fetchParams.controller.terminate(err); + }); + return fetchParams.controller; + } + async function mainFetch(fetchParams, recursive = false) { + const request2 = fetchParams.request; + let response = null; + if (request2.localURLsOnly && !urlIsLocal(requestCurrentURL(request2))) { + response = makeNetworkError("local URLs only"); + } + tryUpgradeRequestToAPotentiallyTrustworthyURL(request2); + if (requestBadPort(request2) === "blocked") { + response = makeNetworkError("bad port"); + } + if (request2.referrerPolicy === "") { + request2.referrerPolicy = request2.policyContainer.referrerPolicy; + } + if (request2.referrer !== "no-referrer") { + request2.referrer = determineRequestsReferrer(request2); + } + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request2); + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + sameOrigin(currentURL, request2.url) && request2.responseTainting === "basic" || // request’s current URL’s scheme is "data" + currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket" + (request2.mode === "navigate" || request2.mode === "websocket") + ) { + request2.responseTainting = "basic"; + return await schemeFetch(fetchParams); + } + if (request2.mode === "same-origin") { + return makeNetworkError('request mode cannot be "same-origin"'); + } + if (request2.mode === "no-cors") { + if (request2.redirect !== "follow") { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ); + } + request2.responseTainting = "opaque"; + return await schemeFetch(fetchParams); + } + if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) { + return makeNetworkError("URL scheme must be a HTTP(S) scheme"); + } + request2.responseTainting = "cors"; + return await httpFetch(fetchParams); + })(); + } + if (recursive) { + return response; + } + if (response.status !== 0 && !response.internalResponse) { + if (request2.responseTainting === "cors") { + } + if (request2.responseTainting === "basic") { + response = filterResponse(response, "basic"); + } else if (request2.responseTainting === "cors") { + response = filterResponse(response, "cors"); + } else if (request2.responseTainting === "opaque") { + response = filterResponse(response, "opaque"); + } else { + assert2(false); + } + } + let internalResponse = response.status === 0 ? response : response.internalResponse; + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request2.urlList); + } + if (!request2.timingAllowFailed) { + response.timingAllowPassed = true; + } + if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request2.headers.contains("range", true)) { + response = internalResponse = makeNetworkError(); + } + if (response.status !== 0 && (request2.method === "HEAD" || request2.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) { + internalResponse.body = null; + fetchParams.controller.dump = true; + } + if (request2.integrity) { + const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); + if (request2.responseTainting === "opaque" || response.body == null) { + processBodyError(response.error); + return; + } + const processBody = (bytes) => { + if (!bytesMatch(bytes, request2.integrity)) { + processBodyError("integrity mismatch"); + return; + } + response.body = safelyExtractBody(bytes)[0]; + fetchFinale(fetchParams, response); + }; + await fullyReadBody(response.body, processBody, processBodyError); + } else { + fetchFinale(fetchParams, response); + } + } + function schemeFetch(fetchParams) { + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)); + } + const { request: request2 } = fetchParams; + const { protocol: scheme } = requestCurrentURL(request2); + switch (scheme) { + case "about:": { + return Promise.resolve(makeNetworkError("about scheme is not supported")); + } + case "blob:": { + if (!resolveObjectURL) { + resolveObjectURL = __require("node:buffer").resolveObjectURL; + } + const blobURLEntry = requestCurrentURL(request2); + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource.")); + } + const blob = resolveObjectURL(blobURLEntry.toString()); + if (request2.method !== "GET" || !isBlobLike(blob)) { + return Promise.resolve(makeNetworkError("invalid method")); + } + const response = makeResponse(); + const fullLength = blob.size; + const serializedFullLength = isomorphicEncode(`${fullLength}`); + const type = blob.type; + if (!request2.headersList.contains("range", true)) { + const bodyWithType = extractBody(blob); + response.statusText = "OK"; + response.body = bodyWithType[0]; + response.headersList.set("content-length", serializedFullLength, true); + response.headersList.set("content-type", type, true); + } else { + response.rangeRequested = true; + const rangeHeader = request2.headersList.get("range", true); + const rangeValue = simpleRangeHeaderValue(rangeHeader, true); + if (rangeValue === "failure") { + return Promise.resolve(makeNetworkError("failed to fetch the data URL")); + } + let { rangeStartValue: rangeStart, rangeEndValue: rangeEnd } = rangeValue; + if (rangeStart === null) { + rangeStart = fullLength - rangeEnd; + rangeEnd = rangeStart + rangeEnd - 1; + } else { + if (rangeStart >= fullLength) { + return Promise.resolve(makeNetworkError("Range start is greater than the blob's size.")); + } + if (rangeEnd === null || rangeEnd >= fullLength) { + rangeEnd = fullLength - 1; + } + } + const slicedBlob = blob.slice(rangeStart, rangeEnd, type); + const slicedBodyWithType = extractBody(slicedBlob); + response.body = slicedBodyWithType[0]; + const serializedSlicedLength = isomorphicEncode(`${slicedBlob.size}`); + const contentRange = buildContentRange(rangeStart, rangeEnd, fullLength); + response.status = 206; + response.statusText = "Partial Content"; + response.headersList.set("content-length", serializedSlicedLength, true); + response.headersList.set("content-type", type, true); + response.headersList.set("content-range", contentRange, true); + } + return Promise.resolve(response); + } + case "data:": { + const currentURL = requestCurrentURL(request2); + const dataURLStruct = dataURLProcessor(currentURL); + if (dataURLStruct === "failure") { + return Promise.resolve(makeNetworkError("failed to fetch the data URL")); + } + const mimeType = serializeAMimeType(dataURLStruct.mimeType); + return Promise.resolve(makeResponse({ + statusText: "OK", + headersList: [ + ["content-type", { name: "Content-Type", value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })); + } + case "file:": { + return Promise.resolve(makeNetworkError("not implemented... yet...")); + } + case "http:": + case "https:": { + return httpFetch(fetchParams).catch((err) => makeNetworkError(err)); + } + default: { + return Promise.resolve(makeNetworkError("unknown scheme")); + } + } + } + function finalizeResponse(fetchParams, response) { + fetchParams.request.done = true; + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)); + } + } + function fetchFinale(fetchParams, response) { + let timingInfo = fetchParams.timingInfo; + const processResponseEndOfBody = () => { + const unsafeEndTime = Date.now(); + if (fetchParams.request.destination === "document") { + fetchParams.controller.fullTimingInfo = timingInfo; + } + fetchParams.controller.reportTimingSteps = () => { + if (fetchParams.request.url.protocol !== "https:") { + return; + } + timingInfo.endTime = unsafeEndTime; + let cacheState = response.cacheState; + const bodyInfo = response.bodyInfo; + if (!response.timingAllowPassed) { + timingInfo = createOpaqueTimingInfo(timingInfo); + cacheState = ""; + } + let responseStatus = 0; + if (fetchParams.request.mode !== "navigator" || !response.hasCrossOriginRedirects) { + responseStatus = response.status; + const mimeType = extractMimeType(response.headersList); + if (mimeType !== "failure") { + bodyInfo.contentType = minimizeSupportedMimeType(mimeType); + } + } + if (fetchParams.request.initiatorType != null) { + markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus); + } + }; + const processResponseEndOfBodyTask = () => { + fetchParams.request.done = true; + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); + } + if (fetchParams.request.initiatorType != null) { + fetchParams.controller.reportTimingSteps(); + } + }; + queueMicrotask(() => processResponseEndOfBodyTask()); + }; + if (fetchParams.processResponse != null) { + queueMicrotask(() => { + fetchParams.processResponse(response); + fetchParams.processResponse = null; + }); + } + const internalResponse = response.type === "error" ? response : response.internalResponse ?? response; + if (internalResponse.body == null) { + processResponseEndOfBody(); + } else { + finished(internalResponse.body.stream, () => { + processResponseEndOfBody(); + }); + } + } + async function httpFetch(fetchParams) { + const request2 = fetchParams.request; + let response = null; + let actualResponse = null; + const timingInfo = fetchParams.timingInfo; + if (request2.serviceWorkers === "all") { + } + if (response === null) { + if (request2.redirect === "follow") { + request2.serviceWorkers = "none"; + } + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); + if (request2.responseTainting === "cors" && corsCheck(request2, response) === "failure") { + return makeNetworkError("cors failure"); + } + if (TAOCheck(request2, response) === "failure") { + request2.timingAllowFailed = true; + } + } + if ((request2.responseTainting === "opaque" || response.type === "opaque") && crossOriginResourcePolicyCheck( + request2.origin, + request2.client, + request2.destination, + actualResponse + ) === "blocked") { + return makeNetworkError("blocked"); + } + if (redirectStatusSet.has(actualResponse.status)) { + if (request2.redirect !== "manual") { + fetchParams.controller.connection.destroy(void 0, false); + } + if (request2.redirect === "error") { + response = makeNetworkError("unexpected redirect"); + } else if (request2.redirect === "manual") { + response = actualResponse; + } else if (request2.redirect === "follow") { + response = await httpRedirectFetch(fetchParams, response); + } else { + assert2(false); + } + } + response.timingInfo = timingInfo; + return response; + } + function httpRedirectFetch(fetchParams, response) { + const request2 = fetchParams.request; + const actualResponse = response.internalResponse ? response.internalResponse : response; + let locationURL; + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request2).hash + ); + if (locationURL == null) { + return response; + } + } catch (err) { + return Promise.resolve(makeNetworkError(err)); + } + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme")); + } + if (request2.redirectCount === 20) { + return Promise.resolve(makeNetworkError("redirect count exceeded")); + } + request2.redirectCount += 1; + if (request2.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request2, locationURL)) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')); + } + if (request2.responseTainting === "cors" && (locationURL.username || locationURL.password)) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )); + } + if (actualResponse.status !== 303 && request2.body != null && request2.body.source == null) { + return Promise.resolve(makeNetworkError()); + } + if ([301, 302].includes(actualResponse.status) && request2.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request2.method)) { + request2.method = "GET"; + request2.body = null; + for (const headerName of requestBodyHeader) { + request2.headersList.delete(headerName); + } + } + if (!sameOrigin(requestCurrentURL(request2), locationURL)) { + request2.headersList.delete("authorization", true); + request2.headersList.delete("proxy-authorization", true); + request2.headersList.delete("cookie", true); + request2.headersList.delete("host", true); + } + if (request2.body != null) { + assert2(request2.body.source != null); + request2.body = safelyExtractBody(request2.body.source)[0]; + } + const timingInfo = fetchParams.timingInfo; + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime; + } + request2.urlList.push(locationURL); + setRequestReferrerPolicyOnRedirect(request2, actualResponse); + return mainFetch(fetchParams, true); + } + async function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) { + const request2 = fetchParams.request; + let httpFetchParams = null; + let httpRequest = null; + let response = null; + const httpCache = null; + const revalidatingFlag = false; + if (request2.window === "no-window" && request2.redirect === "error") { + httpFetchParams = fetchParams; + httpRequest = request2; + } else { + httpRequest = cloneRequest(request2); + httpFetchParams = { ...fetchParams }; + httpFetchParams.request = httpRequest; + } + const includeCredentials = request2.credentials === "include" || request2.credentials === "same-origin" && request2.responseTainting === "basic"; + const contentLength = httpRequest.body ? httpRequest.body.length : null; + let contentLengthHeaderValue = null; + if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) { + contentLengthHeaderValue = "0"; + } + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); + } + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append("content-length", contentLengthHeaderValue, true); + } + if (contentLength != null && httpRequest.keepalive) { + } + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append("referer", isomorphicEncode(httpRequest.referrer.href), true); + } + appendRequestOriginHeader(httpRequest); + appendFetchMetadata(httpRequest); + if (!httpRequest.headersList.contains("user-agent", true)) { + httpRequest.headersList.append("user-agent", defaultUserAgent); + } + if (httpRequest.cache === "default" && (httpRequest.headersList.contains("if-modified-since", true) || httpRequest.headersList.contains("if-none-match", true) || httpRequest.headersList.contains("if-unmodified-since", true) || httpRequest.headersList.contains("if-match", true) || httpRequest.headersList.contains("if-range", true))) { + httpRequest.cache = "no-store"; + } + if (httpRequest.cache === "no-cache" && !httpRequest.preventNoCacheCacheControlHeaderModification && !httpRequest.headersList.contains("cache-control", true)) { + httpRequest.headersList.append("cache-control", "max-age=0", true); + } + if (httpRequest.cache === "no-store" || httpRequest.cache === "reload") { + if (!httpRequest.headersList.contains("pragma", true)) { + httpRequest.headersList.append("pragma", "no-cache", true); + } + if (!httpRequest.headersList.contains("cache-control", true)) { + httpRequest.headersList.append("cache-control", "no-cache", true); + } + } + if (httpRequest.headersList.contains("range", true)) { + httpRequest.headersList.append("accept-encoding", "identity", true); + } + if (!httpRequest.headersList.contains("accept-encoding", true)) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append("accept-encoding", "br, gzip, deflate", true); + } else { + httpRequest.headersList.append("accept-encoding", "gzip, deflate", true); + } + } + httpRequest.headersList.delete("host", true); + if (includeCredentials) { + } + if (httpCache == null) { + httpRequest.cache = "no-store"; + } + if (httpRequest.cache !== "no-store" && httpRequest.cache !== "reload") { + } + if (response == null) { + if (httpRequest.cache === "only-if-cached") { + return makeNetworkError("only if cached"); + } + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ); + if (!safeMethodsSet.has(httpRequest.method) && forwardResponse.status >= 200 && forwardResponse.status <= 399) { + } + if (revalidatingFlag && forwardResponse.status === 304) { + } + if (response == null) { + response = forwardResponse; + } + } + response.urlList = [...httpRequest.urlList]; + if (httpRequest.headersList.contains("range", true)) { + response.rangeRequested = true; + } + response.requestIncludesCredentials = includeCredentials; + if (response.status === 407) { + if (request2.window === "no-window") { + return makeNetworkError(); + } + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + return makeNetworkError("proxy authentication required"); + } + if ( + // response’s status is 421 + response.status === 421 && // isNewConnectionFetch is false + !isNewConnectionFetch && // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request2.body == null || request2.body.source != null) + ) { + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + fetchParams.controller.connection.destroy(); + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ); + } + if (isAuthenticationFetch) { + } + return response; + } + async function httpNetworkFetch(fetchParams, includeCredentials = false, forceNewConnection = false) { + assert2(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy(err, abort = true) { + if (!this.destroyed) { + this.destroyed = true; + if (abort) { + this.abort?.(err ?? new DOMException("The operation was aborted.", "AbortError")); + } + } + } + }; + const request2 = fetchParams.request; + let response = null; + const timingInfo = fetchParams.timingInfo; + const httpCache = null; + if (httpCache == null) { + request2.cache = "no-store"; + } + const newConnection = forceNewConnection ? "yes" : "no"; + if (request2.mode === "websocket") { + } else { + } + let requestBody = null; + if (request2.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()); + } else if (request2.body != null) { + const processBodyChunk = async function* (bytes) { + if (isCancelled(fetchParams)) { + return; + } + yield bytes; + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength); + }; + const processEndOfBody = () => { + if (isCancelled(fetchParams)) { + return; + } + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody(); + } + }; + const processBodyError = (e) => { + if (isCancelled(fetchParams)) { + return; + } + if (e.name === "AbortError") { + fetchParams.controller.abort(); + } else { + fetchParams.controller.terminate(e); + } + }; + requestBody = async function* () { + try { + for await (const bytes of request2.body.stream) { + yield* processBodyChunk(bytes); + } + processEndOfBody(); + } catch (err) { + processBodyError(err); + } + }(); + } + try { + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }); + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }); + } else { + const iterator2 = body[Symbol.asyncIterator](); + fetchParams.controller.next = () => iterator2.next(); + response = makeResponse({ status, statusText, headersList }); + } + } catch (err) { + if (err.name === "AbortError") { + fetchParams.controller.connection.destroy(); + return makeAppropriateNetworkError(fetchParams, err); + } + return makeNetworkError(err); + } + const pullAlgorithm = async () => { + await fetchParams.controller.resume(); + }; + const cancelAlgorithm = (reason) => { + if (!isCancelled(fetchParams)) { + fetchParams.controller.abort(reason); + } + }; + const stream = new ReadableStream( + { + async start(controller) { + fetchParams.controller.controller = controller; + }, + async pull(controller) { + await pullAlgorithm(controller); + }, + async cancel(reason) { + await cancelAlgorithm(reason); + }, + type: "bytes" + } + ); + response.body = { stream, source: null, length: null }; + fetchParams.controller.onAborted = onAborted; + fetchParams.controller.on("terminated", onAborted); + fetchParams.controller.resume = async () => { + while (true) { + let bytes; + let isFailure; + try { + const { done, value } = await fetchParams.controller.next(); + if (isAborted(fetchParams)) { + break; + } + bytes = done ? void 0 : value; + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + bytes = void 0; + } else { + bytes = err; + isFailure = true; + } + } + if (bytes === void 0) { + readableStreamClose(fetchParams.controller.controller); + finalizeResponse(fetchParams, response); + return; + } + timingInfo.decodedBodySize += bytes?.byteLength ?? 0; + if (isFailure) { + fetchParams.controller.terminate(bytes); + return; + } + const buffer = new Uint8Array(bytes); + if (buffer.byteLength) { + fetchParams.controller.controller.enqueue(buffer); + } + if (isErrored(stream)) { + fetchParams.controller.terminate(); + return; + } + if (fetchParams.controller.controller.desiredSize <= 0) { + return; + } + } + }; + function onAborted(reason) { + if (isAborted(fetchParams)) { + response.aborted = true; + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ); + } + } else { + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError("terminated", { + cause: isErrorLike(reason) ? reason : void 0 + })); + } + } + fetchParams.controller.connection.destroy(); + } + return response; + function dispatch({ body }) { + const url = requestCurrentURL(request2); + const agent = fetchParams.controller.dispatcher; + return new Promise((resolve5, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request2.method, + body: agent.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body, + headers: request2.headersList.entries, + maxRedirections: 0, + upgrade: request2.mode === "websocket" ? "websocket" : void 0 + }, + { + body: null, + abort: null, + onConnect(abort) { + const { connection } = fetchParams.controller; + timingInfo.finalConnectionTimingInfo = clampAndCoarsenConnectionTimingInfo(void 0, timingInfo.postRedirectStartTime, fetchParams.crossOriginIsolatedCapability); + if (connection.destroyed) { + abort(new DOMException("The operation was aborted.", "AbortError")); + } else { + fetchParams.controller.on("terminated", abort); + this.abort = connection.abort = abort; + } + timingInfo.finalNetworkRequestStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + }, + onResponseStarted() { + timingInfo.finalNetworkResponseStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability); + }, + onHeaders(status, rawHeaders, resume, statusText) { + if (status < 200) { + return; + } + let location = ""; + const headersList = new HeadersList(); + for (let i = 0; i < rawHeaders.length; i += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString("latin1"), true); + } + location = headersList.get("location", true); + this.body = new Readable({ read: resume }); + const decoders = []; + const willFollow = location && request2.redirect === "follow" && redirectStatusSet.has(status); + if (request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) { + const contentEncoding = headersList.get("content-encoding", true); + const codings = contentEncoding ? contentEncoding.toLowerCase().split(",") : []; + const maxContentEncodings = 5; + if (codings.length > maxContentEncodings) { + reject(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`)); + return true; + } + for (let i = codings.length - 1; i >= 0; --i) { + const coding = codings[i].trim(); + if (coding === "x-gzip" || coding === "gzip") { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })); + } else if (coding === "deflate") { + decoders.push(createInflate({ + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })); + } else if (coding === "br") { + decoders.push(zlib.createBrotliDecompress({ + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH + })); + } else { + decoders.length = 0; + break; + } + } + } + const onError = this.onError.bind(this); + resolve5({ + status, + statusText, + headersList, + body: decoders.length ? pipeline(this.body, ...decoders, (err) => { + if (err) { + this.onError(err); + } + }).on("error", onError) : this.body.on("error", onError) + }); + return true; + }, + onData(chunk) { + if (fetchParams.controller.dump) { + return; + } + const bytes = chunk; + timingInfo.encodedBodySize += bytes.byteLength; + return this.body.push(bytes); + }, + onComplete() { + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + if (fetchParams.controller.onAborted) { + fetchParams.controller.off("terminated", fetchParams.controller.onAborted); + } + fetchParams.controller.ended = true; + this.body.push(null); + }, + onError(error2) { + if (this.abort) { + fetchParams.controller.off("terminated", this.abort); + } + this.body?.destroy(error2); + fetchParams.controller.terminate(error2); + reject(error2); + }, + onUpgrade(status, rawHeaders, socket) { + if (status !== 101) { + return; + } + const headersList = new HeadersList(); + for (let i = 0; i < rawHeaders.length; i += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString("latin1"), true); + } + resolve5({ + status, + statusText: STATUS_CODES[status], + headersList, + socket + }); + return true; + } + } + )); + } + } + module.exports = { + fetch: fetch3, + Fetch, + fetching, + finalizeAndReportTiming + }; + } +}); + +// +var require_symbols3 = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = { + kState: Symbol("FileReader state"), + kResult: Symbol("FileReader result"), + kError: Symbol("FileReader error"), + kLastProgressEventFired: Symbol("FileReader last progress event fired timestamp"), + kEvents: Symbol("FileReader events"), + kAborted: Symbol("FileReader aborted") + }; + } +}); + +// +var require_progressevent = __commonJS({ + ""(exports, module) { + "use strict"; + var { webidl } = require_webidl(); + var kState = Symbol("ProgressEvent state"); + var ProgressEvent = class _ProgressEvent extends Event { + constructor(type, eventInitDict = {}) { + type = webidl.converters.DOMString(type, "ProgressEvent constructor", "type"); + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); + super(type, eventInitDict); + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + }; + } + get lengthComputable() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].lengthComputable; + } + get loaded() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].loaded; + } + get total() { + webidl.brandCheck(this, _ProgressEvent); + return this[kState].total; + } + }; + webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: "lengthComputable", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "loaded", + converter: webidl.converters["unsigned long long"], + defaultValue: () => 0 + }, + { + key: "total", + converter: webidl.converters["unsigned long long"], + defaultValue: () => 0 + }, + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: () => false + } + ]); + module.exports = { + ProgressEvent + }; + } +}); + +// +var require_encoding = __commonJS({ + ""(exports, module) { + "use strict"; + function getEncoding(label) { + if (!label) { + return "failure"; + } + switch (label.trim().toLowerCase()) { + case "unicode-1-1-utf-8": + case "unicode11utf8": + case "unicode20utf8": + case "utf-8": + case "utf8": + case "x-unicode20utf8": + return "UTF-8"; + case "866": + case "cp866": + case "csibm866": + case "ibm866": + return "IBM866"; + case "csisolatin2": + case "iso-8859-2": + case "iso-ir-101": + case "iso8859-2": + case "iso88592": + case "iso_8859-2": + case "iso_8859-2:1987": + case "l2": + case "latin2": + return "ISO-8859-2"; + case "csisolatin3": + case "iso-8859-3": + case "iso-ir-109": + case "iso8859-3": + case "iso88593": + case "iso_8859-3": + case "iso_8859-3:1988": + case "l3": + case "latin3": + return "ISO-8859-3"; + case "csisolatin4": + case "iso-8859-4": + case "iso-ir-110": + case "iso8859-4": + case "iso88594": + case "iso_8859-4": + case "iso_8859-4:1988": + case "l4": + case "latin4": + return "ISO-8859-4"; + case "csisolatincyrillic": + case "cyrillic": + case "iso-8859-5": + case "iso-ir-144": + case "iso8859-5": + case "iso88595": + case "iso_8859-5": + case "iso_8859-5:1988": + return "ISO-8859-5"; + case "arabic": + case "asmo-708": + case "csiso88596e": + case "csiso88596i": + case "csisolatinarabic": + case "ecma-114": + case "iso-8859-6": + case "iso-8859-6-e": + case "iso-8859-6-i": + case "iso-ir-127": + case "iso8859-6": + case "iso88596": + case "iso_8859-6": + case "iso_8859-6:1987": + return "ISO-8859-6"; + case "csisolatingreek": + case "ecma-118": + case "elot_928": + case "greek": + case "greek8": + case "iso-8859-7": + case "iso-ir-126": + case "iso8859-7": + case "iso88597": + case "iso_8859-7": + case "iso_8859-7:1987": + case "sun_eu_greek": + return "ISO-8859-7"; + case "csiso88598e": + case "csisolatinhebrew": + case "hebrew": + case "iso-8859-8": + case "iso-8859-8-e": + case "iso-ir-138": + case "iso8859-8": + case "iso88598": + case "iso_8859-8": + case "iso_8859-8:1988": + case "visual": + return "ISO-8859-8"; + case "csiso88598i": + case "iso-8859-8-i": + case "logical": + return "ISO-8859-8-I"; + case "csisolatin6": + case "iso-8859-10": + case "iso-ir-157": + case "iso8859-10": + case "iso885910": + case "l6": + case "latin6": + return "ISO-8859-10"; + case "iso-8859-13": + case "iso8859-13": + case "iso885913": + return "ISO-8859-13"; + case "iso-8859-14": + case "iso8859-14": + case "iso885914": + return "ISO-8859-14"; + case "csisolatin9": + case "iso-8859-15": + case "iso8859-15": + case "iso885915": + case "iso_8859-15": + case "l9": + return "ISO-8859-15"; + case "iso-8859-16": + return "ISO-8859-16"; + case "cskoi8r": + case "koi": + case "koi8": + case "koi8-r": + case "koi8_r": + return "KOI8-R"; + case "koi8-ru": + case "koi8-u": + return "KOI8-U"; + case "csmacintosh": + case "mac": + case "macintosh": + case "x-mac-roman": + return "macintosh"; + case "iso-8859-11": + case "iso8859-11": + case "iso885911": + case "tis-620": + case "windows-874": + return "windows-874"; + case "cp1250": + case "windows-1250": + case "x-cp1250": + return "windows-1250"; + case "cp1251": + case "windows-1251": + case "x-cp1251": + return "windows-1251"; + case "ansi_x3.4-1968": + case "ascii": + case "cp1252": + case "cp819": + case "csisolatin1": + case "ibm819": + case "iso-8859-1": + case "iso-ir-100": + case "iso8859-1": + case "iso88591": + case "iso_8859-1": + case "iso_8859-1:1987": + case "l1": + case "latin1": + case "us-ascii": + case "windows-1252": + case "x-cp1252": + return "windows-1252"; + case "cp1253": + case "windows-1253": + case "x-cp1253": + return "windows-1253"; + case "cp1254": + case "csisolatin5": + case "iso-8859-9": + case "iso-ir-148": + case "iso8859-9": + case "iso88599": + case "iso_8859-9": + case "iso_8859-9:1989": + case "l5": + case "latin5": + case "windows-1254": + case "x-cp1254": + return "windows-1254"; + case "cp1255": + case "windows-1255": + case "x-cp1255": + return "windows-1255"; + case "cp1256": + case "windows-1256": + case "x-cp1256": + return "windows-1256"; + case "cp1257": + case "windows-1257": + case "x-cp1257": + return "windows-1257"; + case "cp1258": + case "windows-1258": + case "x-cp1258": + return "windows-1258"; + case "x-mac-cyrillic": + case "x-mac-ukrainian": + return "x-mac-cyrillic"; + case "chinese": + case "csgb2312": + case "csiso58gb231280": + case "gb2312": + case "gb_2312": + case "gb_2312-80": + case "gbk": + case "iso-ir-58": + case "x-gbk": + return "GBK"; + case "gb18030": + return "gb18030"; + case "big5": + case "big5-hkscs": + case "cn-big5": + case "csbig5": + case "x-x-big5": + return "Big5"; + case "cseucpkdfmtjapanese": + case "euc-jp": + case "x-euc-jp": + return "EUC-JP"; + case "csiso2022jp": + case "iso-2022-jp": + return "ISO-2022-JP"; + case "csshiftjis": + case "ms932": + case "ms_kanji": + case "shift-jis": + case "shift_jis": + case "sjis": + case "windows-31j": + case "x-sjis": + return "Shift_JIS"; + case "cseuckr": + case "csksc56011987": + case "euc-kr": + case "iso-ir-149": + case "korean": + case "ks_c_5601-1987": + case "ks_c_5601-1989": + case "ksc5601": + case "ksc_5601": + case "windows-949": + return "EUC-KR"; + case "csiso2022kr": + case "hz-gb-2312": + case "iso-2022-cn": + case "iso-2022-cn-ext": + case "iso-2022-kr": + case "replacement": + return "replacement"; + case "unicodefffe": + case "utf-16be": + return "UTF-16BE"; + case "csunicode": + case "iso-10646-ucs-2": + case "ucs-2": + case "unicode": + case "unicodefeff": + case "utf-16": + case "utf-16le": + return "UTF-16LE"; + case "x-user-defined": + return "x-user-defined"; + default: + return "failure"; + } + } + module.exports = { + getEncoding + }; + } +}); + +// +var require_util4 = __commonJS({ + ""(exports, module) { + "use strict"; + var { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired + } = require_symbols3(); + var { ProgressEvent } = require_progressevent(); + var { getEncoding } = require_encoding(); + var { serializeAMimeType, parseMIMEType } = require_data_url(); + var { types: types3 } = __require("node:util"); + var { StringDecoder } = __require("string_decoder"); + var { btoa: btoa2 } = __require("node:buffer"); + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + function readOperation(fr, blob, type, encodingName) { + if (fr[kState] === "loading") { + throw new DOMException("Invalid state", "InvalidStateError"); + } + fr[kState] = "loading"; + fr[kResult] = null; + fr[kError] = null; + const stream = blob.stream(); + const reader = stream.getReader(); + const bytes = []; + let chunkPromise = reader.read(); + let isFirstChunk = true; + (async () => { + while (!fr[kAborted]) { + try { + const { done, value } = await chunkPromise; + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent("loadstart", fr); + }); + } + isFirstChunk = false; + if (!done && types3.isUint8Array(value)) { + bytes.push(value); + if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { + fr[kLastProgressEventFired] = Date.now(); + queueMicrotask(() => { + fireAProgressEvent("progress", fr); + }); + } + chunkPromise = reader.read(); + } else if (done) { + queueMicrotask(() => { + fr[kState] = "done"; + try { + const result = packageData(bytes, type, blob.type, encodingName); + if (fr[kAborted]) { + return; + } + fr[kResult] = result; + fireAProgressEvent("load", fr); + } catch (error2) { + fr[kError] = error2; + fireAProgressEvent("error", fr); + } + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } catch (error2) { + if (fr[kAborted]) { + return; + } + queueMicrotask(() => { + fr[kState] = "done"; + fr[kError] = error2; + fireAProgressEvent("error", fr); + if (fr[kState] !== "loading") { + fireAProgressEvent("loadend", fr); + } + }); + break; + } + } + })(); + } + function fireAProgressEvent(e, reader) { + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }); + reader.dispatchEvent(event); + } + function packageData(bytes, type, mimeType, encodingName) { + switch (type) { + case "DataURL": { + let dataURL = "data:"; + const parsed = parseMIMEType(mimeType || "application/octet-stream"); + if (parsed !== "failure") { + dataURL += serializeAMimeType(parsed); + } + dataURL += ";base64,"; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + dataURL += btoa2(decoder.write(chunk)); + } + dataURL += btoa2(decoder.end()); + return dataURL; + } + case "Text": { + let encoding = "failure"; + if (encodingName) { + encoding = getEncoding(encodingName); + } + if (encoding === "failure" && mimeType) { + const type2 = parseMIMEType(mimeType); + if (type2 !== "failure") { + encoding = getEncoding(type2.parameters.get("charset")); + } + } + if (encoding === "failure") { + encoding = "UTF-8"; + } + return decode(bytes, encoding); + } + case "ArrayBuffer": { + const sequence = combineByteSequences(bytes); + return sequence.buffer; + } + case "BinaryString": { + let binaryString = ""; + const decoder = new StringDecoder("latin1"); + for (const chunk of bytes) { + binaryString += decoder.write(chunk); + } + binaryString += decoder.end(); + return binaryString; + } + } + } + function decode(ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue); + const BOMEncoding = BOMSniffing(bytes); + let slice = 0; + if (BOMEncoding !== null) { + encoding = BOMEncoding; + slice = BOMEncoding === "UTF-8" ? 3 : 2; + } + const sliced = bytes.slice(slice); + return new TextDecoder(encoding).decode(sliced); + } + function BOMSniffing(ioQueue) { + const [a, b, c] = ioQueue; + if (a === 239 && b === 187 && c === 191) { + return "UTF-8"; + } else if (a === 254 && b === 255) { + return "UTF-16BE"; + } else if (a === 255 && b === 254) { + return "UTF-16LE"; + } + return null; + } + function combineByteSequences(sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength; + }, 0); + let offset = 0; + return sequences.reduce((a, b) => { + a.set(b, offset); + offset += b.byteLength; + return a; + }, new Uint8Array(size)); + } + module.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + }; + } +}); + +// +var require_filereader = __commonJS({ + ""(exports, module) { + "use strict"; + var { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent + } = require_util4(); + var { + kState, + kError, + kResult, + kEvents, + kAborted + } = require_symbols3(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var FileReader = class _FileReader extends EventTarget { + constructor() { + super(); + this[kState] = "empty"; + this[kResult] = null; + this[kError] = null; + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + }; + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, "FileReader.readAsArrayBuffer"); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "ArrayBuffer"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, "FileReader.readAsBinaryString"); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "BinaryString"); + } + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText(blob, encoding = void 0) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, "FileReader.readAsText"); + blob = webidl.converters.Blob(blob, { strict: false }); + if (encoding !== void 0) { + encoding = webidl.converters.DOMString(encoding, "FileReader.readAsText", "encoding"); + } + readOperation(this, blob, "Text", encoding); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL(blob) { + webidl.brandCheck(this, _FileReader); + webidl.argumentLengthCheck(arguments, 1, "FileReader.readAsDataURL"); + blob = webidl.converters.Blob(blob, { strict: false }); + readOperation(this, blob, "DataURL"); + } + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort() { + if (this[kState] === "empty" || this[kState] === "done") { + this[kResult] = null; + return; + } + if (this[kState] === "loading") { + this[kState] = "done"; + this[kResult] = null; + } + this[kAborted] = true; + fireAProgressEvent("abort", this); + if (this[kState] !== "loading") { + fireAProgressEvent("loadend", this); + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState() { + webidl.brandCheck(this, _FileReader); + switch (this[kState]) { + case "empty": + return this.EMPTY; + case "loading": + return this.LOADING; + case "done": + return this.DONE; + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result() { + webidl.brandCheck(this, _FileReader); + return this[kResult]; + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error() { + webidl.brandCheck(this, _FileReader); + return this[kError]; + } + get onloadend() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadend; + } + set onloadend(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadend) { + this.removeEventListener("loadend", this[kEvents].loadend); + } + if (typeof fn === "function") { + this[kEvents].loadend = fn; + this.addEventListener("loadend", fn); + } else { + this[kEvents].loadend = null; + } + } + get onerror() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].error; + } + set onerror(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].error) { + this.removeEventListener("error", this[kEvents].error); + } + if (typeof fn === "function") { + this[kEvents].error = fn; + this.addEventListener("error", fn); + } else { + this[kEvents].error = null; + } + } + get onloadstart() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].loadstart; + } + set onloadstart(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].loadstart) { + this.removeEventListener("loadstart", this[kEvents].loadstart); + } + if (typeof fn === "function") { + this[kEvents].loadstart = fn; + this.addEventListener("loadstart", fn); + } else { + this[kEvents].loadstart = null; + } + } + get onprogress() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].progress; + } + set onprogress(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].progress) { + this.removeEventListener("progress", this[kEvents].progress); + } + if (typeof fn === "function") { + this[kEvents].progress = fn; + this.addEventListener("progress", fn); + } else { + this[kEvents].progress = null; + } + } + get onload() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].load; + } + set onload(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].load) { + this.removeEventListener("load", this[kEvents].load); + } + if (typeof fn === "function") { + this[kEvents].load = fn; + this.addEventListener("load", fn); + } else { + this[kEvents].load = null; + } + } + get onabort() { + webidl.brandCheck(this, _FileReader); + return this[kEvents].abort; + } + set onabort(fn) { + webidl.brandCheck(this, _FileReader); + if (this[kEvents].abort) { + this.removeEventListener("abort", this[kEvents].abort); + } + if (typeof fn === "function") { + this[kEvents].abort = fn; + this.addEventListener("abort", fn); + } else { + this[kEvents].abort = null; + } + } + }; + FileReader.EMPTY = FileReader.prototype.EMPTY = 0; + FileReader.LOADING = FileReader.prototype.LOADING = 1; + FileReader.DONE = FileReader.prototype.DONE = 2; + Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "FileReader", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors + }); + module.exports = { + FileReader + }; + } +}); + +// +var require_symbols4 = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = { + kConstruct: require_symbols().kConstruct + }; + } +}); + +// +var require_util5 = __commonJS({ + ""(exports, module) { + "use strict"; + var assert2 = __require("node:assert"); + var { URLSerializer } = require_data_url(); + var { isValidHeaderName } = require_util2(); + function urlEquals(A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment); + const serializedB = URLSerializer(B, excludeFragment); + return serializedA === serializedB; + } + function getFieldValues(header) { + assert2(header !== null); + const values = []; + for (let value of header.split(",")) { + value = value.trim(); + if (isValidHeaderName(value)) { + values.push(value); + } + } + return values; + } + module.exports = { + urlEquals, + getFieldValues + }; + } +}); + +// +var require_cache = __commonJS({ + ""(exports, module) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { urlEquals, getFieldValues } = require_util5(); + var { kEnumerableProperty, isDisturbed } = require_util(); + var { webidl } = require_webidl(); + var { Response, cloneResponse, fromInnerResponse } = require_response(); + var { Request, fromInnerRequest } = require_request2(); + var { kState } = require_symbols2(); + var { fetching } = require_fetch(); + var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); + var assert2 = __require("node:assert"); + var Cache = class _Cache { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + #relevantRequestResponseList; + constructor() { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor(); + } + webidl.util.markAsUncloneable(this); + this.#relevantRequestResponseList = arguments[1]; + } + async match(request2, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = "Cache.match"; + webidl.argumentLengthCheck(arguments, 1, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, "request"); + options = webidl.converters.CacheQueryOptions(options, prefix, "options"); + const p = this.#internalMatchAll(request2, options, 1); + if (p.length === 0) { + return; + } + return p[0]; + } + async matchAll(request2 = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = "Cache.matchAll"; + if (request2 !== void 0) + request2 = webidl.converters.RequestInfo(request2, prefix, "request"); + options = webidl.converters.CacheQueryOptions(options, prefix, "options"); + return this.#internalMatchAll(request2, options); + } + async add(request2) { + webidl.brandCheck(this, _Cache); + const prefix = "Cache.add"; + webidl.argumentLengthCheck(arguments, 1, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, "request"); + const requests = [request2]; + const responseArrayPromise = this.addAll(requests); + return await responseArrayPromise; + } + async addAll(requests) { + webidl.brandCheck(this, _Cache); + const prefix = "Cache.addAll"; + webidl.argumentLengthCheck(arguments, 1, prefix); + const responsePromises = []; + const requestList = []; + for (let request2 of requests) { + if (request2 === void 0) { + throw webidl.errors.conversionFailed({ + prefix, + argument: "Argument 1", + types: ["undefined is not allowed"] + }); + } + request2 = webidl.converters.RequestInfo(request2); + if (typeof request2 === "string") { + continue; + } + const r = request2[kState]; + if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") { + throw webidl.errors.exception({ + header: prefix, + message: "Expected http/s scheme when method is not GET." + }); + } + } + const fetchControllers = []; + for (const request2 of requests) { + const r = new Request(request2)[kState]; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: prefix, + message: "Expected http/s scheme." + }); + } + r.initiator = "fetch"; + r.destination = "subresource"; + requestList.push(r); + const responsePromise = createDeferredPromise(); + fetchControllers.push(fetching({ + request: r, + processResponse(response) { + if (response.type === "error" || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "Received an invalid status code or the request failed." + })); + } else if (response.headersList.contains("vary")) { + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + responsePromise.reject(webidl.errors.exception({ + header: "Cache.addAll", + message: "invalid vary field value" + })); + for (const controller of fetchControllers) { + controller.abort(); + } + return; + } + } + } + }, + processResponseEndOfBody(response) { + if (response.aborted) { + responsePromise.reject(new DOMException("aborted", "AbortError")); + return; + } + responsePromise.resolve(response); + } + })); + responsePromises.push(responsePromise.promise); + } + const p = Promise.all(responsePromises); + const responses = await p; + const operations = []; + let index = 0; + for (const response of responses) { + const operation = { + type: "put", + // 7.3.2 + request: requestList[index], + // 7.3.3 + response + // 7.3.4 + }; + operations.push(operation); + index++; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(void 0); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async put(request2, response) { + webidl.brandCheck(this, _Cache); + const prefix = "Cache.put"; + webidl.argumentLengthCheck(arguments, 2, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, "request"); + response = webidl.converters.Response(response, prefix, "response"); + let innerRequest = null; + if (request2 instanceof Request) { + innerRequest = request2[kState]; + } else { + innerRequest = new Request(request2)[kState]; + } + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") { + throw webidl.errors.exception({ + header: prefix, + message: "Expected an http/s scheme when method is not GET" + }); + } + const innerResponse = response[kState]; + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: prefix, + message: "Got 206 status" + }); + } + if (innerResponse.headersList.contains("vary")) { + const fieldValues = getFieldValues(innerResponse.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + throw webidl.errors.exception({ + header: prefix, + message: "Got * vary field value" + }); + } + } + } + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: prefix, + message: "Response body is locked or disturbed" + }); + } + const clonedResponse = cloneResponse(innerResponse); + const bodyReadPromise = createDeferredPromise(); + if (innerResponse.body != null) { + const stream = innerResponse.body.stream; + const reader = stream.getReader(); + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); + } else { + bodyReadPromise.resolve(void 0); + } + const operations = []; + const operation = { + type: "put", + // 14. + request: innerRequest, + // 15. + response: clonedResponse + // 16. + }; + operations.push(operation); + const bytes = await bodyReadPromise.promise; + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes; + } + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + try { + this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + async delete(request2, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = "Cache.delete"; + webidl.argumentLengthCheck(arguments, 1, prefix); + request2 = webidl.converters.RequestInfo(request2, prefix, "request"); + options = webidl.converters.CacheQueryOptions(options, prefix, "options"); + let r = null; + if (request2 instanceof Request) { + r = request2[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return false; + } + } else { + assert2(typeof request2 === "string"); + r = new Request(request2)[kState]; + } + const operations = []; + const operation = { + type: "delete", + request: r, + options + }; + operations.push(operation); + const cacheJobPromise = createDeferredPromise(); + let errorData = null; + let requestResponses; + try { + requestResponses = this.#batchCacheOperations(operations); + } catch (e) { + errorData = e; + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length); + } else { + cacheJobPromise.reject(errorData); + } + }); + return cacheJobPromise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {Promise} + */ + async keys(request2 = void 0, options = {}) { + webidl.brandCheck(this, _Cache); + const prefix = "Cache.keys"; + if (request2 !== void 0) + request2 = webidl.converters.RequestInfo(request2, prefix, "request"); + options = webidl.converters.CacheQueryOptions(options, prefix, "options"); + let r = null; + if (request2 !== void 0) { + if (request2 instanceof Request) { + r = request2[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request2 === "string") { + r = new Request(request2)[kState]; + } + } + const promise = createDeferredPromise(); + const requests = []; + if (request2 === void 0) { + for (const requestResponse of this.#relevantRequestResponseList) { + requests.push(requestResponse[0]); + } + } else { + const requestResponses = this.#queryCache(r, options); + for (const requestResponse of requestResponses) { + requests.push(requestResponse[0]); + } + } + queueMicrotask(() => { + const requestList = []; + for (const request3 of requests) { + const requestObject = fromInnerRequest( + request3, + new AbortController().signal, + "immutable" + ); + requestList.push(requestObject); + } + promise.resolve(Object.freeze(requestList)); + }); + return promise.promise; + } + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations(operations) { + const cache = this.#relevantRequestResponseList; + const backupCache = [...cache]; + const addedItems = []; + const resultList = []; + try { + for (const operation of operations) { + if (operation.type !== "delete" && operation.type !== "put") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: 'operation type does not match "delete" or "put"' + }); + } + if (operation.type === "delete" && operation.response != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "delete operation should not have an associated response" + }); + } + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException("???", "InvalidStateError"); + } + let requestResponses; + if (operation.type === "delete") { + requestResponses = this.#queryCache(operation.request, operation.options); + if (requestResponses.length === 0) { + return []; + } + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert2(idx !== -1); + cache.splice(idx, 1); + } + } else if (operation.type === "put") { + if (operation.response == null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "put operation should have an associated response" + }); + } + const r = operation.request; + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "expected http or https scheme" + }); + } + if (r.method !== "GET") { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "not get method" + }); + } + if (operation.options != null) { + throw webidl.errors.exception({ + header: "Cache.#batchCacheOperations", + message: "options must not be defined" + }); + } + requestResponses = this.#queryCache(operation.request); + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse); + assert2(idx !== -1); + cache.splice(idx, 1); + } + cache.push([operation.request, operation.response]); + addedItems.push([operation.request, operation.response]); + } + resultList.push([operation.request, operation.response]); + } + return resultList; + } catch (e) { + this.#relevantRequestResponseList.length = 0; + this.#relevantRequestResponseList = backupCache; + throw e; + } + } + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + #queryCache(requestQuery, options, targetStorage) { + const resultList = []; + const storage = targetStorage ?? this.#relevantRequestResponseList; + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse; + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse); + } + } + return resultList; + } + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + #requestMatchesCachedItem(requestQuery, request2, response = null, options) { + const queryURL = new URL(requestQuery.url); + const cachedURL = new URL(request2.url); + if (options?.ignoreSearch) { + cachedURL.search = ""; + queryURL.search = ""; + } + if (!urlEquals(queryURL, cachedURL, true)) { + return false; + } + if (response == null || options?.ignoreVary || !response.headersList.contains("vary")) { + return true; + } + const fieldValues = getFieldValues(response.headersList.get("vary")); + for (const fieldValue of fieldValues) { + if (fieldValue === "*") { + return false; + } + const requestValue = request2.headersList.get(fieldValue); + const queryValue = requestQuery.headersList.get(fieldValue); + if (requestValue !== queryValue) { + return false; + } + } + return true; + } + #internalMatchAll(request2, options, maxResponses = Infinity) { + let r = null; + if (request2 !== void 0) { + if (request2 instanceof Request) { + r = request2[kState]; + if (r.method !== "GET" && !options.ignoreMethod) { + return []; + } + } else if (typeof request2 === "string") { + r = new Request(request2)[kState]; + } + } + const responses = []; + if (request2 === void 0) { + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]); + } + } else { + const requestResponses = this.#queryCache(r, options); + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]); + } + } + const responseList = []; + for (const response of responses) { + const responseObject = fromInnerResponse(response, "immutable"); + responseList.push(responseObject.clone()); + if (responseList.length >= maxResponses) { + break; + } + } + return Object.freeze(responseList); + } + }; + Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: "Cache", + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + var cacheQueryOptionConverters = [ + { + key: "ignoreSearch", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "ignoreMethod", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "ignoreVary", + converter: webidl.converters.boolean, + defaultValue: () => false + } + ]; + webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); + webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: "cacheName", + converter: webidl.converters.DOMString + } + ]); + webidl.converters.Response = webidl.interfaceConverter(Response); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.RequestInfo + ); + module.exports = { + Cache + }; + } +}); + +// +var require_cachestorage = __commonJS({ + ""(exports, module) { + "use strict"; + var { kConstruct } = require_symbols4(); + var { Cache } = require_cache(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var CacheStorage = class _CacheStorage { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has(cacheName) { + webidl.brandCheck(this, _CacheStorage); + const prefix = "CacheStorage.has"; + webidl.argumentLengthCheck(arguments, 1, prefix); + cacheName = webidl.converters.DOMString(cacheName, prefix, "cacheName"); + return this.#caches.has(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open(cacheName) { + webidl.brandCheck(this, _CacheStorage); + const prefix = "CacheStorage.open"; + webidl.argumentLengthCheck(arguments, 1, prefix); + cacheName = webidl.converters.DOMString(cacheName, prefix, "cacheName"); + if (this.#caches.has(cacheName)) { + const cache2 = this.#caches.get(cacheName); + return new Cache(kConstruct, cache2); + } + const cache = []; + this.#caches.set(cacheName, cache); + return new Cache(kConstruct, cache); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete(cacheName) { + webidl.brandCheck(this, _CacheStorage); + const prefix = "CacheStorage.delete"; + webidl.argumentLengthCheck(arguments, 1, prefix); + cacheName = webidl.converters.DOMString(cacheName, prefix, "cacheName"); + return this.#caches.delete(cacheName); + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {Promise} + */ + async keys() { + webidl.brandCheck(this, _CacheStorage); + const keys = this.#caches.keys(); + return [...keys]; + } + }; + Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: "CacheStorage", + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty + }); + module.exports = { + CacheStorage + }; + } +}); + +// +var require_constants4 = __commonJS({ + ""(exports, module) { + "use strict"; + var maxAttributeValueSize = 1024; + var maxNameValuePairSize = 4096; + module.exports = { + maxAttributeValueSize, + maxNameValuePairSize + }; + } +}); + +// +var require_util6 = __commonJS({ + ""(exports, module) { + "use strict"; + function isCTLExcludingHtab(value) { + for (let i = 0; i < value.length; ++i) { + const code = value.charCodeAt(i); + if (code >= 0 && code <= 8 || code >= 10 && code <= 31 || code === 127) { + return true; + } + } + return false; + } + function validateCookieName(name) { + for (let i = 0; i < name.length; ++i) { + const code = name.charCodeAt(i); + if (code < 33 || // exclude CTLs (0-31), SP and HT + code > 126 || // exclude non-ascii and DEL + code === 34 || // " + code === 40 || // ( + code === 41 || // ) + code === 60 || // < + code === 62 || // > + code === 64 || // @ + code === 44 || // , + code === 59 || // ; + code === 58 || // : + code === 92 || // \ + code === 47 || // / + code === 91 || // [ + code === 93 || // ] + code === 63 || // ? + code === 61 || // = + code === 123 || // { + code === 125) { + throw new Error("Invalid cookie name"); + } + } + } + function validateCookieValue(value) { + let len = value.length; + let i = 0; + if (value[0] === '"') { + if (len === 1 || value[len - 1] !== '"') { + throw new Error("Invalid cookie value"); + } + --len; + ++i; + } + while (i < len) { + const code = value.charCodeAt(i++); + if (code < 33 || // exclude CTLs (0-31) + code > 126 || // non-ascii and DEL (127) + code === 34 || // " + code === 44 || // , + code === 59 || // ; + code === 92) { + throw new Error("Invalid cookie value"); + } + } + } + function validateCookiePath(path5) { + for (let i = 0; i < path5.length; ++i) { + const code = path5.charCodeAt(i); + if (code < 32 || // exclude CTLs (0-31) + code === 127 || // DEL + code === 59) { + throw new Error("Invalid cookie path"); + } + } + } + function validateCookieDomain(domain) { + if (domain.startsWith("-") || domain.endsWith(".") || domain.endsWith("-")) { + throw new Error("Invalid cookie domain"); + } + } + var IMFDays = [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ]; + var IMFMonths = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + var IMFPaddedNumbers = Array(61).fill(0).map((_, i) => i.toString().padStart(2, "0")); + function toIMFDate(date) { + if (typeof date === "number") { + date = new Date(date); + } + return `${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT`; + } + function validateCookieMaxAge(maxAge) { + if (maxAge < 0) { + throw new Error("Invalid cookie max-age"); + } + } + function stringify(cookie) { + if (cookie.name.length === 0) { + return null; + } + validateCookieName(cookie.name); + validateCookieValue(cookie.value); + const out = [`${cookie.name}=${cookie.value}`]; + if (cookie.name.startsWith("__Secure-")) { + cookie.secure = true; + } + if (cookie.name.startsWith("__Host-")) { + cookie.secure = true; + cookie.domain = null; + cookie.path = "/"; + } + if (cookie.secure) { + out.push("Secure"); + } + if (cookie.httpOnly) { + out.push("HttpOnly"); + } + if (typeof cookie.maxAge === "number") { + validateCookieMaxAge(cookie.maxAge); + out.push(`Max-Age=${cookie.maxAge}`); + } + if (cookie.domain) { + validateCookieDomain(cookie.domain); + out.push(`Domain=${cookie.domain}`); + } + if (cookie.path) { + validateCookiePath(cookie.path); + out.push(`Path=${cookie.path}`); + } + if (cookie.expires && cookie.expires.toString() !== "Invalid Date") { + out.push(`Expires=${toIMFDate(cookie.expires)}`); + } + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`); + } + for (const part of cookie.unparsed) { + if (!part.includes("=")) { + throw new Error("Invalid unparsed"); + } + const [key, ...value] = part.split("="); + out.push(`${key.trim()}=${value.join("=")}`); + } + return out.join("; "); + } + module.exports = { + isCTLExcludingHtab, + validateCookieName, + validateCookiePath, + validateCookieValue, + toIMFDate, + stringify + }; + } +}); + +// +var require_parse = __commonJS({ + ""(exports, module) { + "use strict"; + var { maxNameValuePairSize, maxAttributeValueSize } = require_constants4(); + var { isCTLExcludingHtab } = require_util6(); + var { collectASequenceOfCodePointsFast } = require_data_url(); + var assert2 = __require("node:assert"); + function parseSetCookie(header) { + if (isCTLExcludingHtab(header)) { + return null; + } + let nameValuePair = ""; + let unparsedAttributes = ""; + let name = ""; + let value = ""; + if (header.includes(";")) { + const position = { position: 0 }; + nameValuePair = collectASequenceOfCodePointsFast(";", header, position); + unparsedAttributes = header.slice(position.position); + } else { + nameValuePair = header; + } + if (!nameValuePair.includes("=")) { + value = nameValuePair; + } else { + const position = { position: 0 }; + name = collectASequenceOfCodePointsFast( + "=", + nameValuePair, + position + ); + value = nameValuePair.slice(position.position + 1); + } + name = name.trim(); + value = value.trim(); + if (name.length + value.length > maxNameValuePairSize) { + return null; + } + return { + name, + value, + ...parseUnparsedAttributes(unparsedAttributes) + }; + } + function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { + if (unparsedAttributes.length === 0) { + return cookieAttributeList; + } + assert2(unparsedAttributes[0] === ";"); + unparsedAttributes = unparsedAttributes.slice(1); + let cookieAv = ""; + if (unparsedAttributes.includes(";")) { + cookieAv = collectASequenceOfCodePointsFast( + ";", + unparsedAttributes, + { position: 0 } + ); + unparsedAttributes = unparsedAttributes.slice(cookieAv.length); + } else { + cookieAv = unparsedAttributes; + unparsedAttributes = ""; + } + let attributeName = ""; + let attributeValue = ""; + if (cookieAv.includes("=")) { + const position = { position: 0 }; + attributeName = collectASequenceOfCodePointsFast( + "=", + cookieAv, + position + ); + attributeValue = cookieAv.slice(position.position + 1); + } else { + attributeName = cookieAv; + } + attributeName = attributeName.trim(); + attributeValue = attributeValue.trim(); + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const attributeNameLowercase = attributeName.toLowerCase(); + if (attributeNameLowercase === "expires") { + const expiryTime = new Date(attributeValue); + cookieAttributeList.expires = expiryTime; + } else if (attributeNameLowercase === "max-age") { + const charCode = attributeValue.charCodeAt(0); + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + const deltaSeconds = Number(attributeValue); + cookieAttributeList.maxAge = deltaSeconds; + } else if (attributeNameLowercase === "domain") { + let cookieDomain = attributeValue; + if (cookieDomain[0] === ".") { + cookieDomain = cookieDomain.slice(1); + } + cookieDomain = cookieDomain.toLowerCase(); + cookieAttributeList.domain = cookieDomain; + } else if (attributeNameLowercase === "path") { + let cookiePath = ""; + if (attributeValue.length === 0 || attributeValue[0] !== "/") { + cookiePath = "/"; + } else { + cookiePath = attributeValue; + } + cookieAttributeList.path = cookiePath; + } else if (attributeNameLowercase === "secure") { + cookieAttributeList.secure = true; + } else if (attributeNameLowercase === "httponly") { + cookieAttributeList.httpOnly = true; + } else if (attributeNameLowercase === "samesite") { + let enforcement = "Default"; + const attributeValueLowercase = attributeValue.toLowerCase(); + if (attributeValueLowercase.includes("none")) { + enforcement = "None"; + } + if (attributeValueLowercase.includes("strict")) { + enforcement = "Strict"; + } + if (attributeValueLowercase.includes("lax")) { + enforcement = "Lax"; + } + cookieAttributeList.sameSite = enforcement; + } else { + cookieAttributeList.unparsed ??= []; + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); + } + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + module.exports = { + parseSetCookie, + parseUnparsedAttributes + }; + } +}); + +// +var require_cookies = __commonJS({ + ""(exports, module) { + "use strict"; + var { parseSetCookie } = require_parse(); + var { stringify } = require_util6(); + var { webidl } = require_webidl(); + var { Headers: Headers2 } = require_headers(); + function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, "getCookies"); + webidl.brandCheck(headers, Headers2, { strict: false }); + const cookie = headers.get("cookie"); + const out = {}; + if (!cookie) { + return out; + } + for (const piece of cookie.split(";")) { + const [name, ...value] = piece.split("="); + out[name.trim()] = value.join("="); + } + return out; + } + function deleteCookie(headers, name, attributes) { + webidl.brandCheck(headers, Headers2, { strict: false }); + const prefix = "deleteCookie"; + webidl.argumentLengthCheck(arguments, 2, prefix); + name = webidl.converters.DOMString(name, prefix, "name"); + attributes = webidl.converters.DeleteCookieAttributes(attributes); + setCookie(headers, { + name, + value: "", + expires: /* @__PURE__ */ new Date(0), + ...attributes + }); + } + function getSetCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, "getSetCookies"); + webidl.brandCheck(headers, Headers2, { strict: false }); + const cookies = headers.getSetCookie(); + if (!cookies) { + return []; + } + return cookies.map((pair) => parseSetCookie(pair)); + } + function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, "setCookie"); + webidl.brandCheck(headers, Headers2, { strict: false }); + cookie = webidl.converters.Cookie(cookie); + const str = stringify(cookie); + if (str) { + headers.append("Set-Cookie", str); + } + } + webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: () => null + } + ]); + webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: "name" + }, + { + converter: webidl.converters.DOMString, + key: "value" + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === "number") { + return webidl.converters["unsigned long long"](value); + } + return new Date(value); + }), + key: "expires", + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters["long long"]), + key: "maxAge", + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "domain", + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: "path", + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "secure", + defaultValue: () => null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: "httpOnly", + defaultValue: () => null + }, + { + converter: webidl.converters.USVString, + key: "sameSite", + allowedValues: ["Strict", "Lax", "None"] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: "unparsed", + defaultValue: () => new Array(0) + } + ]); + module.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie + }; + } +}); + +// +var require_events = __commonJS({ + ""(exports, module) { + "use strict"; + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var { kConstruct } = require_symbols(); + var { MessagePort } = __require("node:worker_threads"); + var MessageEvent = class _MessageEvent extends Event { + #eventInit; + constructor(type, eventInitDict = {}) { + if (type === kConstruct) { + super(arguments[1], arguments[2]); + webidl.util.markAsUncloneable(this); + return; + } + const prefix = "MessageEvent constructor"; + webidl.argumentLengthCheck(arguments, 1, prefix); + type = webidl.converters.DOMString(type, prefix, "type"); + eventInitDict = webidl.converters.MessageEventInit(eventInitDict, prefix, "eventInitDict"); + super(type, eventInitDict); + this.#eventInit = eventInitDict; + webidl.util.markAsUncloneable(this); + } + get data() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.data; + } + get origin() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.origin; + } + get lastEventId() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.lastEventId; + } + get source() { + webidl.brandCheck(this, _MessageEvent); + return this.#eventInit.source; + } + get ports() { + webidl.brandCheck(this, _MessageEvent); + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports); + } + return this.#eventInit.ports; + } + initMessageEvent(type, bubbles = false, cancelable = false, data = null, origin = "", lastEventId = "", source = null, ports = []) { + webidl.brandCheck(this, _MessageEvent); + webidl.argumentLengthCheck(arguments, 1, "MessageEvent.initMessageEvent"); + return new _MessageEvent(type, { + bubbles, + cancelable, + data, + origin, + lastEventId, + source, + ports + }); + } + static createFastMessageEvent(type, init) { + const messageEvent = new _MessageEvent(kConstruct, type, init); + messageEvent.#eventInit = init; + messageEvent.#eventInit.data ??= null; + messageEvent.#eventInit.origin ??= ""; + messageEvent.#eventInit.lastEventId ??= ""; + messageEvent.#eventInit.source ??= null; + messageEvent.#eventInit.ports ??= []; + return messageEvent; + } + }; + var { createFastMessageEvent } = MessageEvent; + delete MessageEvent.createFastMessageEvent; + var CloseEvent = class _CloseEvent extends Event { + #eventInit; + constructor(type, eventInitDict = {}) { + const prefix = "CloseEvent constructor"; + webidl.argumentLengthCheck(arguments, 1, prefix); + type = webidl.converters.DOMString(type, prefix, "type"); + eventInitDict = webidl.converters.CloseEventInit(eventInitDict); + super(type, eventInitDict); + this.#eventInit = eventInitDict; + webidl.util.markAsUncloneable(this); + } + get wasClean() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.wasClean; + } + get code() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.code; + } + get reason() { + webidl.brandCheck(this, _CloseEvent); + return this.#eventInit.reason; + } + }; + var ErrorEvent = class _ErrorEvent extends Event { + #eventInit; + constructor(type, eventInitDict) { + const prefix = "ErrorEvent constructor"; + webidl.argumentLengthCheck(arguments, 1, prefix); + super(type, eventInitDict); + webidl.util.markAsUncloneable(this); + type = webidl.converters.DOMString(type, prefix, "type"); + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); + this.#eventInit = eventInitDict; + } + get message() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.message; + } + get filename() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.filename; + } + get lineno() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.lineno; + } + get colno() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.colno; + } + get error() { + webidl.brandCheck(this, _ErrorEvent); + return this.#eventInit.error; + } + }; + Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: "MessageEvent", + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty + }); + Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: "CloseEvent", + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty + }); + Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: "ErrorEvent", + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty + }); + webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.MessagePort + ); + var eventInit = [ + { + key: "bubbles", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "cancelable", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "composed", + converter: webidl.converters.boolean, + defaultValue: () => false + } + ]; + webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "data", + converter: webidl.converters.any, + defaultValue: () => null + }, + { + key: "origin", + converter: webidl.converters.USVString, + defaultValue: () => "" + }, + { + key: "lastEventId", + converter: webidl.converters.DOMString, + defaultValue: () => "" + }, + { + key: "source", + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: () => null + }, + { + key: "ports", + converter: webidl.converters["sequence"], + defaultValue: () => new Array(0) + } + ]); + webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "wasClean", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "code", + converter: webidl.converters["unsigned short"], + defaultValue: () => 0 + }, + { + key: "reason", + converter: webidl.converters.USVString, + defaultValue: () => "" + } + ]); + webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: "message", + converter: webidl.converters.DOMString, + defaultValue: () => "" + }, + { + key: "filename", + converter: webidl.converters.USVString, + defaultValue: () => "" + }, + { + key: "lineno", + converter: webidl.converters["unsigned long"], + defaultValue: () => 0 + }, + { + key: "colno", + converter: webidl.converters["unsigned long"], + defaultValue: () => 0 + }, + { + key: "error", + converter: webidl.converters.any + } + ]); + module.exports = { + MessageEvent, + CloseEvent, + ErrorEvent, + createFastMessageEvent + }; + } +}); + +// +var require_constants5 = __commonJS({ + ""(exports, module) { + "use strict"; + var uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + var staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false + }; + var states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 + }; + var sentCloseFrameState = { + NOT_SENT: 0, + PROCESSING: 1, + SENT: 2 + }; + var opcodes = { + CONTINUATION: 0, + TEXT: 1, + BINARY: 2, + CLOSE: 8, + PING: 9, + PONG: 10 + }; + var maxUnsigned16Bit = 2 ** 16 - 1; + var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 + }; + var emptyBuffer = Buffer.allocUnsafe(0); + var sendHints = { + string: 1, + typedArray: 2, + arrayBuffer: 3, + blob: 4 + }; + module.exports = { + uid, + sentCloseFrameState, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer, + sendHints + }; + } +}); + +// +var require_symbols5 = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = { + kWebSocketURL: Symbol("url"), + kReadyState: Symbol("ready state"), + kController: Symbol("controller"), + kResponse: Symbol("response"), + kBinaryType: Symbol("binary type"), + kSentClose: Symbol("sent close"), + kReceivedClose: Symbol("received close"), + kByteParser: Symbol("byte parser") + }; + } +}); + +// +var require_util7 = __commonJS({ + ""(exports, module) { + "use strict"; + var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5(); + var { states, opcodes } = require_constants5(); + var { ErrorEvent, createFastMessageEvent } = require_events(); + var { isUtf8 } = __require("node:buffer"); + var { collectASequenceOfCodePointsFast, removeHTTPWhitespace } = require_data_url(); + function isConnecting(ws) { + return ws[kReadyState] === states.CONNECTING; + } + function isEstablished(ws) { + return ws[kReadyState] === states.OPEN; + } + function isClosing(ws) { + return ws[kReadyState] === states.CLOSING; + } + function isClosed(ws) { + return ws[kReadyState] === states.CLOSED; + } + function fireEvent(e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) { + const event = eventFactory(e, eventInitDict); + target.dispatchEvent(event); + } + function websocketMessageReceived(ws, type, data) { + if (ws[kReadyState] !== states.OPEN) { + return; + } + let dataForEvent; + if (type === opcodes.TEXT) { + try { + dataForEvent = utf8Decode(data); + } catch { + failWebsocketConnection(ws, "Received invalid UTF-8 in text frame."); + return; + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === "blob") { + dataForEvent = new Blob([data]); + } else { + dataForEvent = toArrayBuffer(data); + } + } + fireEvent("message", ws, createFastMessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }); + } + function toArrayBuffer(buffer) { + if (buffer.byteLength === buffer.buffer.byteLength) { + return buffer.buffer; + } + return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + } + function isValidSubprotocol(protocol) { + if (protocol.length === 0) { + return false; + } + for (let i = 0; i < protocol.length; ++i) { + const code = protocol.charCodeAt(i); + if (code < 33 || // CTL, contains SP (0x20) and HT (0x09) + code > 126 || code === 34 || // " + code === 40 || // ( + code === 41 || // ) + code === 44 || // , + code === 47 || // / + code === 58 || // : + code === 59 || // ; + code === 60 || // < + code === 61 || // = + code === 62 || // > + code === 63 || // ? + code === 64 || // @ + code === 91 || // [ + code === 92 || // \ + code === 93 || // ] + code === 123 || // { + code === 125) { + return false; + } + } + return true; + } + function isValidStatusCode(code) { + if (code >= 1e3 && code < 1015) { + return code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006; + } + return code >= 3e3 && code <= 4999; + } + function failWebsocketConnection(ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws; + controller.abort(); + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy(); + } + if (reason) { + fireEvent("error", ws, (type, init) => new ErrorEvent(type, init), { + error: new Error(reason), + message: reason + }); + } + } + function isControlFrame(opcode) { + return opcode === opcodes.CLOSE || opcode === opcodes.PING || opcode === opcodes.PONG; + } + function isContinuationFrame(opcode) { + return opcode === opcodes.CONTINUATION; + } + function isTextBinaryFrame(opcode) { + return opcode === opcodes.TEXT || opcode === opcodes.BINARY; + } + function isValidOpcode(opcode) { + return isTextBinaryFrame(opcode) || isContinuationFrame(opcode) || isControlFrame(opcode); + } + function parseExtensions(extensions) { + const position = { position: 0 }; + const extensionList = /* @__PURE__ */ new Map(); + while (position.position < extensions.length) { + const pair = collectASequenceOfCodePointsFast(";", extensions, position); + const [name, value = ""] = pair.split("="); + extensionList.set( + removeHTTPWhitespace(name, true, false), + removeHTTPWhitespace(value, false, true) + ); + position.position++; + } + return extensionList; + } + function isValidClientWindowBits(value) { + if (value.length === 0) { + return false; + } + for (let i = 0; i < value.length; i++) { + const byte = value.charCodeAt(i); + if (byte < 48 || byte > 57) { + return false; + } + } + const num = Number.parseInt(value, 10); + return num >= 8 && num <= 15; + } + var hasIntl = typeof process.versions.icu === "string"; + var fatalDecoder = hasIntl ? new TextDecoder("utf-8", { fatal: true }) : void 0; + var utf8Decode = hasIntl ? fatalDecoder.decode.bind(fatalDecoder) : function(buffer) { + if (isUtf8(buffer)) { + return buffer.toString("utf-8"); + } + throw new TypeError("Invalid utf-8 received."); + }; + module.exports = { + isConnecting, + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isContinuationFrame, + isTextBinaryFrame, + isValidOpcode, + parseExtensions, + isValidClientWindowBits + }; + } +}); + +// +var require_frame = __commonJS({ + ""(exports, module) { + "use strict"; + var { maxUnsigned16Bit } = require_constants5(); + var BUFFER_SIZE = 16386; + var crypto; + var buffer = null; + var bufIdx = BUFFER_SIZE; + try { + crypto = __require("node:crypto"); + } catch { + crypto = { + // not full compatibility, but minimum. + randomFillSync: function randomFillSync(buffer2, _offset, _size) { + for (let i = 0; i < buffer2.length; ++i) { + buffer2[i] = Math.random() * 255 | 0; + } + return buffer2; + } + }; + } + function generateMask() { + if (bufIdx === BUFFER_SIZE) { + bufIdx = 0; + crypto.randomFillSync(buffer ??= Buffer.allocUnsafe(BUFFER_SIZE), 0, BUFFER_SIZE); + } + return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]]; + } + var WebsocketFrameSend = class { + /** + * @param {Buffer|undefined} data + */ + constructor(data) { + this.frameData = data; + } + createFrame(opcode) { + const frameData = this.frameData; + const maskKey = generateMask(); + const bodyLength = frameData?.byteLength ?? 0; + let payloadLength = bodyLength; + let offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; + payloadLength = 126; + } + const buffer2 = Buffer.allocUnsafe(bodyLength + offset); + buffer2[0] = buffer2[1] = 0; + buffer2[0] |= 128; + buffer2[0] = (buffer2[0] & 240) + opcode; + buffer2[offset - 4] = maskKey[0]; + buffer2[offset - 3] = maskKey[1]; + buffer2[offset - 2] = maskKey[2]; + buffer2[offset - 1] = maskKey[3]; + buffer2[1] = payloadLength; + if (payloadLength === 126) { + buffer2.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + buffer2[2] = buffer2[3] = 0; + buffer2.writeUIntBE(bodyLength, 4, 6); + } + buffer2[1] |= 128; + for (let i = 0; i < bodyLength; ++i) { + buffer2[offset + i] = frameData[i] ^ maskKey[i & 3]; + } + return buffer2; + } + }; + module.exports = { + WebsocketFrameSend + }; + } +}); + +// +var require_connection = __commonJS({ + ""(exports, module) { + "use strict"; + var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants5(); + var { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose, + kResponse + } = require_symbols5(); + var { fireEvent, failWebsocketConnection, isClosing, isClosed, isEstablished, parseExtensions } = require_util7(); + var { channels } = require_diagnostics(); + var { CloseEvent } = require_events(); + var { makeRequest } = require_request2(); + var { fetching } = require_fetch(); + var { Headers: Headers2, getHeadersList } = require_headers(); + var { getDecodeSplit } = require_util2(); + var { WebsocketFrameSend } = require_frame(); + var crypto; + try { + crypto = __require("node:crypto"); + } catch { + } + function establishWebSocketConnection(url, protocols, client, ws, onEstablish, options) { + const requestURL = url; + requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:"; + const request2 = makeRequest({ + urlList: [requestURL], + client, + serviceWorkers: "none", + referrer: "no-referrer", + mode: "websocket", + credentials: "include", + cache: "no-store", + redirect: "error" + }); + if (options.headers) { + const headersList = getHeadersList(new Headers2(options.headers)); + request2.headersList = headersList; + } + const keyValue = crypto.randomBytes(16).toString("base64"); + request2.headersList.append("sec-websocket-key", keyValue); + request2.headersList.append("sec-websocket-version", "13"); + for (const protocol of protocols) { + request2.headersList.append("sec-websocket-protocol", protocol); + } + const permessageDeflate = "permessage-deflate; client_max_window_bits"; + request2.headersList.append("sec-websocket-extensions", permessageDeflate); + const controller = fetching({ + request: request2, + useParallelQueue: true, + dispatcher: options.dispatcher, + processResponse(response) { + if (response.type === "error" || response.status !== 101) { + failWebsocketConnection(ws, "Received network error or non-101 status code."); + return; + } + if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) { + failWebsocketConnection(ws, "Server did not respond with sent protocols."); + return; + } + if (response.headersList.get("Upgrade")?.toLowerCase() !== "websocket") { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); + return; + } + if (response.headersList.get("Connection")?.toLowerCase() !== "upgrade") { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); + return; + } + const secWSAccept = response.headersList.get("Sec-WebSocket-Accept"); + const digest = crypto.createHash("sha1").update(keyValue + uid).digest("base64"); + if (secWSAccept !== digest) { + failWebsocketConnection(ws, "Incorrect hash received in Sec-WebSocket-Accept header."); + return; + } + const secExtension = response.headersList.get("Sec-WebSocket-Extensions"); + let extensions; + if (secExtension !== null) { + extensions = parseExtensions(secExtension); + if (!extensions.has("permessage-deflate")) { + failWebsocketConnection(ws, "Sec-WebSocket-Extensions header does not match."); + return; + } + } + const secProtocol = response.headersList.get("Sec-WebSocket-Protocol"); + if (secProtocol !== null) { + const requestProtocols = getDecodeSplit("sec-websocket-protocol", request2.headersList); + if (!requestProtocols.includes(secProtocol)) { + failWebsocketConnection(ws, "Protocol was not set in the opening handshake."); + return; + } + } + response.socket.on("data", onSocketData); + response.socket.on("close", onSocketClose); + response.socket.on("error", onSocketError); + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }); + } + onEstablish(response, extensions); + } + }); + return controller; + } + function closeWebSocketConnection(ws, code, reason, reasonByteLength) { + if (isClosing(ws) || isClosed(ws)) { + } else if (!isEstablished(ws)) { + failWebsocketConnection(ws, "Connection was closed before it was established."); + ws[kReadyState] = states.CLOSING; + } else if (ws[kSentClose] === sentCloseFrameState.NOT_SENT) { + ws[kSentClose] = sentCloseFrameState.PROCESSING; + const frame = new WebsocketFrameSend(); + if (code !== void 0 && reason === void 0) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== void 0 && reason !== void 0) { + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); + frame.frameData.writeUInt16BE(code, 0); + frame.frameData.write(reason, 2, "utf-8"); + } else { + frame.frameData = emptyBuffer; + } + const socket = ws[kResponse].socket; + socket.write(frame.createFrame(opcodes.CLOSE)); + ws[kSentClose] = sentCloseFrameState.SENT; + ws[kReadyState] = states.CLOSING; + } else { + ws[kReadyState] = states.CLOSING; + } + } + function onSocketData(chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause(); + } + } + function onSocketClose() { + const { ws } = this; + const { [kResponse]: response } = ws; + response.socket.off("data", onSocketData); + response.socket.off("close", onSocketClose); + response.socket.off("error", onSocketError); + const wasClean = ws[kSentClose] === sentCloseFrameState.SENT && ws[kReceivedClose]; + let code = 1005; + let reason = ""; + const result = ws[kByteParser].closingInfo; + if (result && !result.error) { + code = result.code ?? 1005; + reason = result.reason; + } else if (!ws[kReceivedClose]) { + code = 1006; + } + ws[kReadyState] = states.CLOSED; + fireEvent("close", ws, (type, init) => new CloseEvent(type, init), { + wasClean, + code, + reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }); + } + } + function onSocketError(error2) { + const { ws } = this; + ws[kReadyState] = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error2); + } + this.destroy(); + } + module.exports = { + establishWebSocketConnection, + closeWebSocketConnection + }; + } +}); + +// +var require_permessage_deflate = __commonJS({ + ""(exports, module) { + "use strict"; + var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = __require("node:zlib"); + var { isValidClientWindowBits } = require_util7(); + var { MessageSizeExceededError } = require_errors(); + var tail = Buffer.from([0, 0, 255, 255]); + var kBuffer = Symbol("kBuffer"); + var kLength = Symbol("kLength"); + var PerMessageDeflate = class { + /** @type {import('node:zlib').InflateRaw} */ + #inflate; + #options = {}; + #maxPayloadSize = 0; + /** + * @param {Map} extensions + */ + constructor(extensions, options) { + this.#options.serverNoContextTakeover = extensions.has("server_no_context_takeover"); + this.#options.serverMaxWindowBits = extensions.get("server_max_window_bits"); + this.#maxPayloadSize = options.maxPayloadSize; + } + /** + * Decompress a compressed payload. + * @param {Buffer} chunk Compressed data + * @param {boolean} fin Final fragment flag + * @param {Function} callback Callback function + */ + decompress(chunk, fin, callback) { + if (!this.#inflate) { + let windowBits = Z_DEFAULT_WINDOWBITS; + if (this.#options.serverMaxWindowBits) { + if (!isValidClientWindowBits(this.#options.serverMaxWindowBits)) { + callback(new Error("Invalid server_max_window_bits")); + return; + } + windowBits = Number.parseInt(this.#options.serverMaxWindowBits); + } + try { + this.#inflate = createInflateRaw({ windowBits }); + } catch (err) { + callback(err); + return; + } + this.#inflate[kBuffer] = []; + this.#inflate[kLength] = 0; + this.#inflate.on("data", (data) => { + this.#inflate[kLength] += data.length; + if (this.#maxPayloadSize > 0 && this.#inflate[kLength] > this.#maxPayloadSize) { + callback(new MessageSizeExceededError()); + this.#inflate.removeAllListeners(); + this.#inflate = null; + return; + } + this.#inflate[kBuffer].push(data); + }); + this.#inflate.on("error", (err) => { + this.#inflate = null; + callback(err); + }); + } + this.#inflate.write(chunk); + if (fin) { + this.#inflate.write(tail); + } + this.#inflate.flush(() => { + if (!this.#inflate) { + return; + } + const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength]); + this.#inflate[kBuffer].length = 0; + this.#inflate[kLength] = 0; + callback(null, full); + }); + } + }; + module.exports = { PerMessageDeflate }; + } +}); + +// +var require_receiver = __commonJS({ + ""(exports, module) { + "use strict"; + var { Writable } = __require("node:stream"); + var assert2 = __require("node:assert"); + var { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require_constants5(); + var { kReadyState, kSentClose, kResponse, kReceivedClose } = require_symbols5(); + var { channels } = require_diagnostics(); + var { + isValidStatusCode, + isValidOpcode, + failWebsocketConnection, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isTextBinaryFrame, + isContinuationFrame + } = require_util7(); + var { WebsocketFrameSend } = require_frame(); + var { closeWebSocketConnection } = require_connection(); + var { PerMessageDeflate } = require_permessage_deflate(); + var { MessageSizeExceededError } = require_errors(); + var ByteParser = class extends Writable { + #buffers = []; + #fragmentsBytes = 0; + #byteOffset = 0; + #loop = false; + #state = parserStates.INFO; + #info = {}; + #fragments = []; + /** @type {Map} */ + #extensions; + /** @type {number} */ + #maxPayloadSize; + /** + * @param {import('./websocket').WebSocket} ws + * @param {Map|null} extensions + * @param {{ maxPayloadSize?: number }} [options] + */ + constructor(ws, extensions, options = {}) { + super(); + this.ws = ws; + this.#extensions = extensions == null ? /* @__PURE__ */ new Map() : extensions; + this.#maxPayloadSize = options.maxPayloadSize ?? 0; + if (this.#extensions.has("permessage-deflate")) { + this.#extensions.set("permessage-deflate", new PerMessageDeflate(extensions, options)); + } + } + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write(chunk, _, callback) { + this.#buffers.push(chunk); + this.#byteOffset += chunk.length; + this.#loop = true; + this.run(callback); + } + #validatePayloadLength() { + if (this.#maxPayloadSize > 0 && !isControlFrame(this.#info.opcode) && this.#info.payloadLength > this.#maxPayloadSize) { + failWebsocketConnection(this.ws, "Payload size exceeds maximum allowed size"); + return false; + } + return true; + } + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run(callback) { + while (this.#loop) { + if (this.#state === parserStates.INFO) { + if (this.#byteOffset < 2) { + return callback(); + } + const buffer = this.consume(2); + const fin = (buffer[0] & 128) !== 0; + const opcode = buffer[0] & 15; + const masked = (buffer[1] & 128) === 128; + const fragmented = !fin && opcode !== opcodes.CONTINUATION; + const payloadLength = buffer[1] & 127; + const rsv1 = buffer[0] & 64; + const rsv2 = buffer[0] & 32; + const rsv3 = buffer[0] & 16; + if (!isValidOpcode(opcode)) { + failWebsocketConnection(this.ws, "Invalid opcode received"); + return callback(); + } + if (masked) { + failWebsocketConnection(this.ws, "Frame cannot be masked"); + return callback(); + } + if (rsv1 !== 0 && !this.#extensions.has("permessage-deflate")) { + failWebsocketConnection(this.ws, "Expected RSV1 to be clear."); + return; + } + if (rsv2 !== 0 || rsv3 !== 0) { + failWebsocketConnection(this.ws, "RSV1, RSV2, RSV3 must be clear"); + return; + } + if (fragmented && !isTextBinaryFrame(opcode)) { + failWebsocketConnection(this.ws, "Invalid frame type was fragmented."); + return; + } + if (isTextBinaryFrame(opcode) && this.#fragments.length > 0) { + failWebsocketConnection(this.ws, "Expected continuation frame"); + return; + } + if (this.#info.fragmented && fragmented) { + failWebsocketConnection(this.ws, "Fragmented frame exceeded 125 bytes."); + return; + } + if ((payloadLength > 125 || fragmented) && isControlFrame(opcode)) { + failWebsocketConnection(this.ws, "Control frame either too large or fragmented"); + return; + } + if (isContinuationFrame(opcode) && this.#fragments.length === 0 && !this.#info.compressed) { + failWebsocketConnection(this.ws, "Unexpected continuation frame"); + return; + } + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength; + this.#state = parserStates.READ_DATA; + if (!this.#validatePayloadLength()) { + return; + } + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16; + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64; + } + if (isTextBinaryFrame(opcode)) { + this.#info.binaryType = opcode; + this.#info.compressed = rsv1 !== 0; + } + this.#info.opcode = opcode; + this.#info.masked = masked; + this.#info.fin = fin; + this.#info.fragmented = fragmented; + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback(); + } + const buffer = this.consume(2); + this.#info.payloadLength = buffer.readUInt16BE(0); + this.#state = parserStates.READ_DATA; + if (!this.#validatePayloadLength()) { + return; + } + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback(); + } + const buffer = this.consume(8); + const upper = buffer.readUInt32BE(0); + const lower = buffer.readUInt32BE(4); + if (upper !== 0 || lower > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); + return; + } + this.#info.payloadLength = lower; + this.#state = parserStates.READ_DATA; + if (!this.#validatePayloadLength()) { + return; + } + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + return callback(); + } + const body = this.consume(this.#info.payloadLength); + if (isControlFrame(this.#info.opcode)) { + this.#loop = this.parseControlFrame(body); + this.#state = parserStates.INFO; + } else { + if (!this.#info.compressed) { + this.writeFragments(body); + if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) { + failWebsocketConnection(this.ws, new MessageSizeExceededError().message); + return; + } + if (!this.#info.fragmented && this.#info.fin) { + websocketMessageReceived(this.ws, this.#info.binaryType, this.consumeFragments()); + } + this.#state = parserStates.INFO; + } else { + this.#extensions.get("permessage-deflate").decompress( + body, + this.#info.fin, + (error2, data) => { + if (error2) { + failWebsocketConnection(this.ws, error2.message); + return; + } + this.writeFragments(data); + if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) { + failWebsocketConnection(this.ws, new MessageSizeExceededError().message); + return; + } + if (!this.#info.fin) { + this.#state = parserStates.INFO; + this.#loop = true; + this.run(callback); + return; + } + websocketMessageReceived(this.ws, this.#info.binaryType, this.consumeFragments()); + this.#loop = true; + this.#state = parserStates.INFO; + this.run(callback); + } + ); + this.#loop = false; + break; + } + } + } + } + } + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer} + */ + consume(n) { + if (n > this.#byteOffset) { + throw new Error("Called consume() before buffers satiated."); + } else if (n === 0) { + return emptyBuffer; + } + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length; + return this.#buffers.shift(); + } + const buffer = Buffer.allocUnsafe(n); + let offset = 0; + while (offset !== n) { + const next = this.#buffers[0]; + const { length } = next; + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset); + break; + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset); + this.#buffers[0] = next.subarray(n - offset); + break; + } else { + buffer.set(this.#buffers.shift(), offset); + offset += next.length; + } + } + this.#byteOffset -= n; + return buffer; + } + writeFragments(fragment) { + this.#fragmentsBytes += fragment.length; + this.#fragments.push(fragment); + } + consumeFragments() { + const fragments = this.#fragments; + if (fragments.length === 1) { + this.#fragmentsBytes = 0; + return fragments.shift(); + } + const output = Buffer.concat(fragments, this.#fragmentsBytes); + this.#fragments = []; + this.#fragmentsBytes = 0; + return output; + } + parseCloseBody(data) { + assert2(data.length !== 1); + let code; + if (data.length >= 2) { + code = data.readUInt16BE(0); + } + if (code !== void 0 && !isValidStatusCode(code)) { + return { code: 1002, reason: "Invalid status code", error: true }; + } + let reason = data.subarray(2); + if (reason[0] === 239 && reason[1] === 187 && reason[2] === 191) { + reason = reason.subarray(3); + } + try { + reason = utf8Decode(reason); + } catch { + return { code: 1007, reason: "Invalid UTF-8", error: true }; + } + return { code, reason, error: false }; + } + /** + * Parses control frames. + * @param {Buffer} body + */ + parseControlFrame(body) { + const { opcode, payloadLength } = this.#info; + if (opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, "Received close frame with a 1-byte body."); + return false; + } + this.#info.closeInfo = this.parseCloseBody(body); + if (this.#info.closeInfo.error) { + const { code, reason } = this.#info.closeInfo; + closeWebSocketConnection(this.ws, code, reason, reason.length); + failWebsocketConnection(this.ws, reason); + return false; + } + if (this.ws[kSentClose] !== sentCloseFrameState.SENT) { + let body2 = emptyBuffer; + if (this.#info.closeInfo.code) { + body2 = Buffer.allocUnsafe(2); + body2.writeUInt16BE(this.#info.closeInfo.code, 0); + } + const closeFrame = new WebsocketFrameSend(body2); + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = sentCloseFrameState.SENT; + } + } + ); + } + this.ws[kReadyState] = states.CLOSING; + this.ws[kReceivedClose] = true; + return false; + } else if (opcode === opcodes.PING) { + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body); + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }); + } + } + } else if (opcode === opcodes.PONG) { + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }); + } + } + return true; + } + get closingInfo() { + return this.#info.closeInfo; + } + }; + module.exports = { + ByteParser + }; + } +}); + +// +var require_sender = __commonJS({ + ""(exports, module) { + "use strict"; + var { WebsocketFrameSend } = require_frame(); + var { opcodes, sendHints } = require_constants5(); + var FixedQueue = require_fixed_queue(); + var FastBuffer = Buffer[Symbol.species]; + var SendQueue = class { + /** + * @type {FixedQueue} + */ + #queue = new FixedQueue(); + /** + * @type {boolean} + */ + #running = false; + /** @type {import('node:net').Socket} */ + #socket; + constructor(socket) { + this.#socket = socket; + } + add(item, cb, hint) { + if (hint !== sendHints.blob) { + const frame = createFrame(item, hint); + if (!this.#running) { + this.#socket.write(frame, cb); + } else { + const node2 = { + promise: null, + callback: cb, + frame + }; + this.#queue.push(node2); + } + return; + } + const node = { + promise: item.arrayBuffer().then((ab) => { + node.promise = null; + node.frame = createFrame(ab, hint); + }), + callback: cb, + frame: null + }; + this.#queue.push(node); + if (!this.#running) { + this.#run(); + } + } + async #run() { + this.#running = true; + const queue = this.#queue; + while (!queue.isEmpty()) { + const node = queue.shift(); + if (node.promise !== null) { + await node.promise; + } + this.#socket.write(node.frame, node.callback); + node.callback = node.frame = null; + } + this.#running = false; + } + }; + function createFrame(data, hint) { + return new WebsocketFrameSend(toBuffer(data, hint)).createFrame(hint === sendHints.string ? opcodes.TEXT : opcodes.BINARY); + } + function toBuffer(data, hint) { + switch (hint) { + case sendHints.string: + return Buffer.from(data); + case sendHints.arrayBuffer: + case sendHints.blob: + return new FastBuffer(data); + case sendHints.typedArray: + return new FastBuffer(data.buffer, data.byteOffset, data.byteLength); + } + } + module.exports = { SendQueue }; + } +}); + +// +var require_websocket = __commonJS({ + ""(exports, module) { + "use strict"; + var { webidl } = require_webidl(); + var { URLSerializer } = require_data_url(); + var { environmentSettingsObject } = require_util2(); + var { staticPropertyDescriptors, states, sentCloseFrameState, sendHints } = require_constants5(); + var { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser + } = require_symbols5(); + var { + isConnecting, + isEstablished, + isClosing, + isValidSubprotocol, + fireEvent + } = require_util7(); + var { establishWebSocketConnection, closeWebSocketConnection } = require_connection(); + var { ByteParser } = require_receiver(); + var { kEnumerableProperty, isBlobLike } = require_util(); + var { getGlobalDispatcher } = require_global2(); + var { types: types3 } = __require("node:util"); + var { ErrorEvent, CloseEvent } = require_events(); + var { SendQueue } = require_sender(); + var WebSocket = class _WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + }; + #bufferedAmount = 0; + #protocol = ""; + #extensions = ""; + /** @type {SendQueue} */ + #sendQueue; + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor(url, protocols = []) { + super(); + webidl.util.markAsUncloneable(this); + const prefix = "WebSocket constructor"; + webidl.argumentLengthCheck(arguments, 1, prefix); + const options = webidl.converters["DOMString or sequence or WebSocketInit"](protocols, prefix, "options"); + url = webidl.converters.USVString(url, prefix, "url"); + protocols = options.protocols; + const baseURL = environmentSettingsObject.settingsObject.baseUrl; + let urlRecord; + try { + urlRecord = new URL(url, baseURL); + } catch (e) { + throw new DOMException(e, "SyntaxError"); + } + if (urlRecord.protocol === "http:") { + urlRecord.protocol = "ws:"; + } else if (urlRecord.protocol === "https:") { + urlRecord.protocol = "wss:"; + } + if (urlRecord.protocol !== "ws:" && urlRecord.protocol !== "wss:") { + throw new DOMException( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + "SyntaxError" + ); + } + if (urlRecord.hash || urlRecord.href.endsWith("#")) { + throw new DOMException("Got fragment", "SyntaxError"); + } + if (typeof protocols === "string") { + protocols = [protocols]; + } + if (protocols.length !== new Set(protocols.map((p) => p.toLowerCase())).size) { + throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + if (protocols.length > 0 && !protocols.every((p) => isValidSubprotocol(p))) { + throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); + } + this[kWebSocketURL] = new URL(urlRecord.href); + const client = environmentSettingsObject.settingsObject; + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + client, + this, + (response, extensions) => this.#onConnectionEstablished(response, extensions), + options + ); + this[kReadyState] = _WebSocket.CONNECTING; + this[kSentClose] = sentCloseFrameState.NOT_SENT; + this[kBinaryType] = "blob"; + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close(code = void 0, reason = void 0) { + webidl.brandCheck(this, _WebSocket); + const prefix = "WebSocket.close"; + if (code !== void 0) { + code = webidl.converters["unsigned short"](code, prefix, "code", { clamp: true }); + } + if (reason !== void 0) { + reason = webidl.converters.USVString(reason, prefix, "reason"); + } + if (code !== void 0) { + if (code !== 1e3 && (code < 3e3 || code > 4999)) { + throw new DOMException("invalid code", "InvalidAccessError"); + } + } + let reasonByteLength = 0; + if (reason !== void 0) { + reasonByteLength = Buffer.byteLength(reason); + if (reasonByteLength > 123) { + throw new DOMException( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + "SyntaxError" + ); + } + } + closeWebSocketConnection(this, code, reason, reasonByteLength); + } + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send(data) { + webidl.brandCheck(this, _WebSocket); + const prefix = "WebSocket.send"; + webidl.argumentLengthCheck(arguments, 1, prefix); + data = webidl.converters.WebSocketSendData(data, prefix, "data"); + if (isConnecting(this)) { + throw new DOMException("Sent before connected.", "InvalidStateError"); + } + if (!isEstablished(this) || isClosing(this)) { + return; + } + if (typeof data === "string") { + const length = Buffer.byteLength(data); + this.#bufferedAmount += length; + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= length; + }, sendHints.string); + } else if (types3.isArrayBuffer(data)) { + this.#bufferedAmount += data.byteLength; + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= data.byteLength; + }, sendHints.arrayBuffer); + } else if (ArrayBuffer.isView(data)) { + this.#bufferedAmount += data.byteLength; + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= data.byteLength; + }, sendHints.typedArray); + } else if (isBlobLike(data)) { + this.#bufferedAmount += data.size; + this.#sendQueue.add(data, () => { + this.#bufferedAmount -= data.size; + }, sendHints.blob); + } + } + get readyState() { + webidl.brandCheck(this, _WebSocket); + return this[kReadyState]; + } + get bufferedAmount() { + webidl.brandCheck(this, _WebSocket); + return this.#bufferedAmount; + } + get url() { + webidl.brandCheck(this, _WebSocket); + return URLSerializer(this[kWebSocketURL]); + } + get extensions() { + webidl.brandCheck(this, _WebSocket); + return this.#extensions; + } + get protocol() { + webidl.brandCheck(this, _WebSocket); + return this.#protocol; + } + get onopen() { + webidl.brandCheck(this, _WebSocket); + return this.#events.open; + } + set onopen(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.open) { + this.removeEventListener("open", this.#events.open); + } + if (typeof fn === "function") { + this.#events.open = fn; + this.addEventListener("open", fn); + } else { + this.#events.open = null; + } + } + get onerror() { + webidl.brandCheck(this, _WebSocket); + return this.#events.error; + } + set onerror(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.error) { + this.removeEventListener("error", this.#events.error); + } + if (typeof fn === "function") { + this.#events.error = fn; + this.addEventListener("error", fn); + } else { + this.#events.error = null; + } + } + get onclose() { + webidl.brandCheck(this, _WebSocket); + return this.#events.close; + } + set onclose(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.close) { + this.removeEventListener("close", this.#events.close); + } + if (typeof fn === "function") { + this.#events.close = fn; + this.addEventListener("close", fn); + } else { + this.#events.close = null; + } + } + get onmessage() { + webidl.brandCheck(this, _WebSocket); + return this.#events.message; + } + set onmessage(fn) { + webidl.brandCheck(this, _WebSocket); + if (this.#events.message) { + this.removeEventListener("message", this.#events.message); + } + if (typeof fn === "function") { + this.#events.message = fn; + this.addEventListener("message", fn); + } else { + this.#events.message = null; + } + } + get binaryType() { + webidl.brandCheck(this, _WebSocket); + return this[kBinaryType]; + } + set binaryType(type) { + webidl.brandCheck(this, _WebSocket); + if (type !== "blob" && type !== "arraybuffer") { + this[kBinaryType] = "blob"; + } else { + this[kBinaryType] = type; + } + } + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished(response, parsedExtensions) { + this[kResponse] = response; + const maxPayloadSize = this[kController]?.dispatcher?.webSocketOptions?.maxPayloadSize; + const parser2 = new ByteParser(this, parsedExtensions, { + maxPayloadSize + }); + parser2.on("drain", onParserDrain); + parser2.on("error", onParserError.bind(this)); + response.socket.ws = this; + this[kByteParser] = parser2; + this.#sendQueue = new SendQueue(response.socket); + this[kReadyState] = states.OPEN; + const extensions = response.headersList.get("sec-websocket-extensions"); + if (extensions !== null) { + this.#extensions = extensions; + } + const protocol = response.headersList.get("sec-websocket-protocol"); + if (protocol !== null) { + this.#protocol = protocol; + } + fireEvent("open", this); + } + }; + WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; + WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; + WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; + WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; + Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: "WebSocket", + writable: false, + enumerable: false, + configurable: true + } + }); + Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors + }); + webidl.converters["sequence"] = webidl.sequenceConverter( + webidl.converters.DOMString + ); + webidl.converters["DOMString or sequence"] = function(V, prefix, argument) { + if (webidl.util.Type(V) === "Object" && Symbol.iterator in V) { + return webidl.converters["sequence"](V); + } + return webidl.converters.DOMString(V, prefix, argument); + }; + webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: "protocols", + converter: webidl.converters["DOMString or sequence"], + defaultValue: () => new Array(0) + }, + { + key: "dispatcher", + converter: webidl.converters.any, + defaultValue: () => getGlobalDispatcher() + }, + { + key: "headers", + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } + ]); + webidl.converters["DOMString or sequence or WebSocketInit"] = function(V) { + if (webidl.util.Type(V) === "Object" && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V); + } + return { protocols: webidl.converters["DOMString or sequence"](V) }; + }; + webidl.converters.WebSocketSendData = function(V) { + if (webidl.util.Type(V) === "Object") { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }); + } + if (ArrayBuffer.isView(V) || types3.isArrayBuffer(V)) { + return webidl.converters.BufferSource(V); + } + } + return webidl.converters.USVString(V); + }; + function onParserDrain() { + this.ws[kResponse].socket.resume(); + } + function onParserError(err) { + let message; + let code; + if (err instanceof CloseEvent) { + message = err.reason; + code = err.code; + } else { + message = err.message; + } + fireEvent("error", this, () => new ErrorEvent("error", { error: err, message })); + closeWebSocketConnection(this, code); + } + module.exports = { + WebSocket + }; + } +}); + +// +var require_util8 = __commonJS({ + ""(exports, module) { + "use strict"; + function isValidLastEventId(value) { + return value.indexOf("\0") === -1; + } + function isASCIINumber(value) { + if (value.length === 0) + return false; + for (let i = 0; i < value.length; i++) { + if (value.charCodeAt(i) < 48 || value.charCodeAt(i) > 57) + return false; + } + return true; + } + function delay(ms) { + return new Promise((resolve5) => { + setTimeout(resolve5, ms).unref(); + }); + } + module.exports = { + isValidLastEventId, + isASCIINumber, + delay + }; + } +}); + +// +var require_eventsource_stream = __commonJS({ + ""(exports, module) { + "use strict"; + var { Transform } = __require("node:stream"); + var { isASCIINumber, isValidLastEventId } = require_util8(); + var BOM = [239, 187, 191]; + var LF = 10; + var CR = 13; + var COLON = 58; + var SPACE = 32; + var EventSourceStream = class extends Transform { + /** + * @type {eventSourceSettings} + */ + state = null; + /** + * Leading byte-order-mark check. + * @type {boolean} + */ + checkBOM = true; + /** + * @type {boolean} + */ + crlfCheck = false; + /** + * @type {boolean} + */ + eventEndCheck = false; + /** + * @type {Buffer} + */ + buffer = null; + pos = 0; + event = { + data: void 0, + event: void 0, + id: void 0, + retry: void 0 + }; + /** + * @param {object} options + * @param {eventSourceSettings} options.eventSourceSettings + * @param {Function} [options.push] + */ + constructor(options = {}) { + options.readableObjectMode = true; + super(options); + this.state = options.eventSourceSettings || {}; + if (options.push) { + this.push = options.push; + } + } + /** + * @param {Buffer} chunk + * @param {string} _encoding + * @param {Function} callback + * @returns {void} + */ + _transform(chunk, _encoding, callback) { + if (chunk.length === 0) { + callback(); + return; + } + if (this.buffer) { + this.buffer = Buffer.concat([this.buffer, chunk]); + } else { + this.buffer = chunk; + } + if (this.checkBOM) { + switch (this.buffer.length) { + case 1: + if (this.buffer[0] === BOM[0]) { + callback(); + return; + } + this.checkBOM = false; + callback(); + return; + case 2: + if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1]) { + callback(); + return; + } + this.checkBOM = false; + break; + case 3: + if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1] && this.buffer[2] === BOM[2]) { + this.buffer = Buffer.alloc(0); + this.checkBOM = false; + callback(); + return; + } + this.checkBOM = false; + break; + default: + if (this.buffer[0] === BOM[0] && this.buffer[1] === BOM[1] && this.buffer[2] === BOM[2]) { + this.buffer = this.buffer.subarray(3); + } + this.checkBOM = false; + break; + } + } + while (this.pos < this.buffer.length) { + if (this.eventEndCheck) { + if (this.crlfCheck) { + if (this.buffer[this.pos] === LF) { + this.buffer = this.buffer.subarray(this.pos + 1); + this.pos = 0; + this.crlfCheck = false; + continue; + } + this.crlfCheck = false; + } + if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { + if (this.buffer[this.pos] === CR) { + this.crlfCheck = true; + } + this.buffer = this.buffer.subarray(this.pos + 1); + this.pos = 0; + if (this.event.data !== void 0 || this.event.event || this.event.id || this.event.retry) { + this.processEvent(this.event); + } + this.clearEvent(); + continue; + } + this.eventEndCheck = false; + continue; + } + if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { + if (this.buffer[this.pos] === CR) { + this.crlfCheck = true; + } + this.parseLine(this.buffer.subarray(0, this.pos), this.event); + this.buffer = this.buffer.subarray(this.pos + 1); + this.pos = 0; + this.eventEndCheck = true; + continue; + } + this.pos++; + } + callback(); + } + /** + * @param {Buffer} line + * @param {EventStreamEvent} event + */ + parseLine(line, event) { + if (line.length === 0) { + return; + } + const colonPosition = line.indexOf(COLON); + if (colonPosition === 0) { + return; + } + let field = ""; + let value = ""; + if (colonPosition !== -1) { + field = line.subarray(0, colonPosition).toString("utf8"); + let valueStart = colonPosition + 1; + if (line[valueStart] === SPACE) { + ++valueStart; + } + value = line.subarray(valueStart).toString("utf8"); + } else { + field = line.toString("utf8"); + value = ""; + } + switch (field) { + case "data": + if (event[field] === void 0) { + event[field] = value; + } else { + event[field] += ` +${value}`; + } + break; + case "retry": + if (isASCIINumber(value)) { + event[field] = value; + } + break; + case "id": + if (isValidLastEventId(value)) { + event[field] = value; + } + break; + case "event": + if (value.length > 0) { + event[field] = value; + } + break; + } + } + /** + * @param {EventSourceStreamEvent} event + */ + processEvent(event) { + if (event.retry && isASCIINumber(event.retry)) { + this.state.reconnectionTime = parseInt(event.retry, 10); + } + if (event.id && isValidLastEventId(event.id)) { + this.state.lastEventId = event.id; + } + if (event.data !== void 0) { + this.push({ + type: event.event || "message", + options: { + data: event.data, + lastEventId: this.state.lastEventId, + origin: this.state.origin + } + }); + } + } + clearEvent() { + this.event = { + data: void 0, + event: void 0, + id: void 0, + retry: void 0 + }; + } + }; + module.exports = { + EventSourceStream + }; + } +}); + +// +var require_eventsource = __commonJS({ + ""(exports, module) { + "use strict"; + var { pipeline } = __require("node:stream"); + var { fetching } = require_fetch(); + var { makeRequest } = require_request2(); + var { webidl } = require_webidl(); + var { EventSourceStream } = require_eventsource_stream(); + var { parseMIMEType } = require_data_url(); + var { createFastMessageEvent } = require_events(); + var { isNetworkError } = require_response(); + var { delay } = require_util8(); + var { kEnumerableProperty } = require_util(); + var { environmentSettingsObject } = require_util2(); + var experimentalWarned = false; + var defaultReconnectionTime = 3e3; + var CONNECTING = 0; + var OPEN = 1; + var CLOSED = 2; + var ANONYMOUS = "anonymous"; + var USE_CREDENTIALS = "use-credentials"; + var EventSource = class _EventSource extends EventTarget { + #events = { + open: null, + error: null, + message: null + }; + #url = null; + #withCredentials = false; + #readyState = CONNECTING; + #request = null; + #controller = null; + #dispatcher; + /** + * @type {import('./eventsource-stream').eventSourceSettings} + */ + #state; + /** + * Creates a new EventSource object. + * @param {string} url + * @param {EventSourceInit} [eventSourceInitDict] + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface + */ + constructor(url, eventSourceInitDict = {}) { + super(); + webidl.util.markAsUncloneable(this); + const prefix = "EventSource constructor"; + webidl.argumentLengthCheck(arguments, 1, prefix); + if (!experimentalWarned) { + experimentalWarned = true; + process.emitWarning("EventSource is experimental, expect them to change at any time.", { + code: "UNDICI-ES" + }); + } + url = webidl.converters.USVString(url, prefix, "url"); + eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, "eventSourceInitDict"); + this.#dispatcher = eventSourceInitDict.dispatcher; + this.#state = { + lastEventId: "", + reconnectionTime: defaultReconnectionTime + }; + const settings = environmentSettingsObject; + let urlRecord; + try { + urlRecord = new URL(url, settings.settingsObject.baseUrl); + this.#state.origin = urlRecord.origin; + } catch (e) { + throw new DOMException(e, "SyntaxError"); + } + this.#url = urlRecord.href; + let corsAttributeState = ANONYMOUS; + if (eventSourceInitDict.withCredentials) { + corsAttributeState = USE_CREDENTIALS; + this.#withCredentials = true; + } + const initRequest = { + redirect: "follow", + keepalive: true, + // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes + mode: "cors", + credentials: corsAttributeState === "anonymous" ? "same-origin" : "omit", + referrer: "no-referrer" + }; + initRequest.client = environmentSettingsObject.settingsObject; + initRequest.headersList = [["accept", { name: "accept", value: "text/event-stream" }]]; + initRequest.cache = "no-store"; + initRequest.initiator = "other"; + initRequest.urlList = [new URL(this.#url)]; + this.#request = makeRequest(initRequest); + this.#connect(); + } + /** + * Returns the state of this EventSource object's connection. It can have the + * values described below. + * @returns {0|1|2} + * @readonly + */ + get readyState() { + return this.#readyState; + } + /** + * Returns the URL providing the event stream. + * @readonly + * @returns {string} + */ + get url() { + return this.#url; + } + /** + * Returns a boolean indicating whether the EventSource object was + * instantiated with CORS credentials set (true), or not (false, the default). + */ + get withCredentials() { + return this.#withCredentials; + } + #connect() { + if (this.#readyState === CLOSED) + return; + this.#readyState = CONNECTING; + const fetchParams = { + request: this.#request, + dispatcher: this.#dispatcher + }; + const processEventSourceEndOfBody = (response) => { + if (isNetworkError(response)) { + this.dispatchEvent(new Event("error")); + this.close(); + } + this.#reconnect(); + }; + fetchParams.processResponseEndOfBody = processEventSourceEndOfBody; + fetchParams.processResponse = (response) => { + if (isNetworkError(response)) { + if (response.aborted) { + this.close(); + this.dispatchEvent(new Event("error")); + return; + } else { + this.#reconnect(); + return; + } + } + const contentType = response.headersList.get("content-type", true); + const mimeType = contentType !== null ? parseMIMEType(contentType) : "failure"; + const contentTypeValid = mimeType !== "failure" && mimeType.essence === "text/event-stream"; + if (response.status !== 200 || contentTypeValid === false) { + this.close(); + this.dispatchEvent(new Event("error")); + return; + } + this.#readyState = OPEN; + this.dispatchEvent(new Event("open")); + this.#state.origin = response.urlList[response.urlList.length - 1].origin; + const eventSourceStream = new EventSourceStream({ + eventSourceSettings: this.#state, + push: (event) => { + this.dispatchEvent(createFastMessageEvent( + event.type, + event.options + )); + } + }); + pipeline( + response.body.stream, + eventSourceStream, + (error2) => { + if (error2?.aborted === false) { + this.close(); + this.dispatchEvent(new Event("error")); + } + } + ); + }; + this.#controller = fetching(fetchParams); + } + /** + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model + * @returns {Promise} + */ + async #reconnect() { + if (this.#readyState === CLOSED) + return; + this.#readyState = CONNECTING; + this.dispatchEvent(new Event("error")); + await delay(this.#state.reconnectionTime); + if (this.#readyState !== CONNECTING) + return; + if (this.#state.lastEventId.length) { + this.#request.headersList.set("last-event-id", this.#state.lastEventId, true); + } + this.#connect(); + } + /** + * Closes the connection, if any, and sets the readyState attribute to + * CLOSED. + */ + close() { + webidl.brandCheck(this, _EventSource); + if (this.#readyState === CLOSED) + return; + this.#readyState = CLOSED; + this.#controller.abort(); + this.#request = null; + } + get onopen() { + return this.#events.open; + } + set onopen(fn) { + if (this.#events.open) { + this.removeEventListener("open", this.#events.open); + } + if (typeof fn === "function") { + this.#events.open = fn; + this.addEventListener("open", fn); + } else { + this.#events.open = null; + } + } + get onmessage() { + return this.#events.message; + } + set onmessage(fn) { + if (this.#events.message) { + this.removeEventListener("message", this.#events.message); + } + if (typeof fn === "function") { + this.#events.message = fn; + this.addEventListener("message", fn); + } else { + this.#events.message = null; + } + } + get onerror() { + return this.#events.error; + } + set onerror(fn) { + if (this.#events.error) { + this.removeEventListener("error", this.#events.error); + } + if (typeof fn === "function") { + this.#events.error = fn; + this.addEventListener("error", fn); + } else { + this.#events.error = null; + } + } + }; + var constantsPropertyDescriptors = { + CONNECTING: { + __proto__: null, + configurable: false, + enumerable: true, + value: CONNECTING, + writable: false + }, + OPEN: { + __proto__: null, + configurable: false, + enumerable: true, + value: OPEN, + writable: false + }, + CLOSED: { + __proto__: null, + configurable: false, + enumerable: true, + value: CLOSED, + writable: false + } + }; + Object.defineProperties(EventSource, constantsPropertyDescriptors); + Object.defineProperties(EventSource.prototype, constantsPropertyDescriptors); + Object.defineProperties(EventSource.prototype, { + close: kEnumerableProperty, + onerror: kEnumerableProperty, + onmessage: kEnumerableProperty, + onopen: kEnumerableProperty, + readyState: kEnumerableProperty, + url: kEnumerableProperty, + withCredentials: kEnumerableProperty + }); + webidl.converters.EventSourceInitDict = webidl.dictionaryConverter([ + { + key: "withCredentials", + converter: webidl.converters.boolean, + defaultValue: () => false + }, + { + key: "dispatcher", + // undici only + converter: webidl.converters.any + } + ]); + module.exports = { + EventSource, + defaultReconnectionTime + }; + } +}); + +// +var require_undici = __commonJS({ + ""(exports, module) { + "use strict"; + var Client = require_client(); + var Dispatcher = require_dispatcher(); + var Pool = require_pool(); + var BalancedPool = require_balanced_pool(); + var Agent = require_agent(); + var ProxyAgent2 = require_proxy_agent(); + var EnvHttpProxyAgent = require_env_http_proxy_agent(); + var RetryAgent = require_retry_agent(); + var errors = require_errors(); + var util = require_util(); + var { InvalidArgumentError } = errors; + var api = require_api(); + var buildConnector = require_connect(); + var MockClient = require_mock_client(); + var MockAgent = require_mock_agent(); + var MockPool = require_mock_pool(); + var mockErrors = require_mock_errors(); + var RetryHandler = require_retry_handler(); + var { getGlobalDispatcher, setGlobalDispatcher } = require_global2(); + var DecoratorHandler = require_decorator_handler(); + var RedirectHandler = require_redirect_handler(); + var createRedirectInterceptor = require_redirect_interceptor(); + Object.assign(Dispatcher.prototype, api); + module.exports.Dispatcher = Dispatcher; + module.exports.Client = Client; + module.exports.Pool = Pool; + module.exports.BalancedPool = BalancedPool; + module.exports.Agent = Agent; + module.exports.ProxyAgent = ProxyAgent2; + module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent; + module.exports.RetryAgent = RetryAgent; + module.exports.RetryHandler = RetryHandler; + module.exports.DecoratorHandler = DecoratorHandler; + module.exports.RedirectHandler = RedirectHandler; + module.exports.createRedirectInterceptor = createRedirectInterceptor; + module.exports.interceptors = { + redirect: require_redirect(), + retry: require_retry(), + dump: require_dump(), + dns: require_dns() + }; + module.exports.buildConnector = buildConnector; + module.exports.errors = errors; + module.exports.util = { + parseHeaders: util.parseHeaders, + headerNameToString: util.headerNameToString + }; + function makeDispatcher(fn) { + return (url, opts, handler2) => { + if (typeof opts === "function") { + handler2 = opts; + opts = null; + } + if (!url || typeof url !== "string" && typeof url !== "object" && !(url instanceof URL)) { + throw new InvalidArgumentError("invalid url"); + } + if (opts != null && typeof opts !== "object") { + throw new InvalidArgumentError("invalid opts"); + } + if (opts && opts.path != null) { + if (typeof opts.path !== "string") { + throw new InvalidArgumentError("invalid opts.path"); + } + let path5 = opts.path; + if (!opts.path.startsWith("/")) { + path5 = `/${path5}`; + } + url = new URL(util.parseOrigin(url).origin + path5); + } else { + if (!opts) { + opts = typeof url === "object" ? url : {}; + } + url = util.parseURL(url); + } + const { agent, dispatcher = getGlobalDispatcher() } = opts; + if (agent) { + throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?"); + } + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? "PUT" : "GET") + }, handler2); + }; + } + module.exports.setGlobalDispatcher = setGlobalDispatcher; + module.exports.getGlobalDispatcher = getGlobalDispatcher; + var fetchImpl = require_fetch().fetch; + module.exports.fetch = async function fetch3(init, options = void 0) { + try { + return await fetchImpl(init, options); + } catch (err) { + if (err && typeof err === "object") { + Error.captureStackTrace(err); + } + throw err; + } + }; + module.exports.Headers = require_headers().Headers; + module.exports.Response = require_response().Response; + module.exports.Request = require_request2().Request; + module.exports.FormData = require_formdata().FormData; + module.exports.File = globalThis.File ?? __require("node:buffer").File; + module.exports.FileReader = require_filereader().FileReader; + var { setGlobalOrigin, getGlobalOrigin } = require_global(); + module.exports.setGlobalOrigin = setGlobalOrigin; + module.exports.getGlobalOrigin = getGlobalOrigin; + var { CacheStorage } = require_cachestorage(); + var { kConstruct } = require_symbols4(); + module.exports.caches = new CacheStorage(kConstruct); + var { deleteCookie, getCookies, getSetCookies, setCookie } = require_cookies(); + module.exports.deleteCookie = deleteCookie; + module.exports.getCookies = getCookies; + module.exports.getSetCookies = getSetCookies; + module.exports.setCookie = setCookie; + var { parseMIMEType, serializeAMimeType } = require_data_url(); + module.exports.parseMIMEType = parseMIMEType; + module.exports.serializeAMimeType = serializeAMimeType; + var { CloseEvent, ErrorEvent, MessageEvent } = require_events(); + module.exports.WebSocket = require_websocket().WebSocket; + module.exports.CloseEvent = CloseEvent; + module.exports.ErrorEvent = ErrorEvent; + module.exports.MessageEvent = MessageEvent; + module.exports.request = makeDispatcher(api.request); + module.exports.stream = makeDispatcher(api.stream); + module.exports.pipeline = makeDispatcher(api.pipeline); + module.exports.connect = makeDispatcher(api.connect); + module.exports.upgrade = makeDispatcher(api.upgrade); + module.exports.MockClient = MockClient; + module.exports.MockPool = MockPool; + module.exports.MockAgent = MockAgent; + module.exports.mockErrors = mockErrors; + var { EventSource } = require_eventsource(); + module.exports.EventSource = EventSource; + } +}); + +// +var require_dist = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.format = format3; + exports.parse = parse3; + var TEXT_REGEXP = /^[\u0009\u0020-\u007e\u0080-\u00ff]*$/; + var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + var QUOTE_REGEXP = /[\\"]/g; + var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + var NullObject = (() => { + const C = function() { + }; + C.prototype = /* @__PURE__ */ Object.create(null); + return C; + })(); + function format3(obj) { + const { type, parameters } = obj; + if (!type || !TYPE_REGEXP.test(type)) { + throw new TypeError(`Invalid type: ${type}`); + } + let result = type; + if (parameters) { + for (const param of Object.keys(parameters)) { + if (!TOKEN_REGEXP.test(param)) { + throw new TypeError(`Invalid parameter name: ${param}`); + } + result += `; ${param}=${qstring(parameters[param])}`; + } + } + return result; + } + function parse3(header, options) { + const len = header.length; + let index = skipOWS(header, 0, len); + const valueStart = index; + index = skipValue(header, index, len); + const valueEnd = trailingOWS(header, valueStart, index); + const type = header.slice(valueStart, valueEnd).toLowerCase(); + const parameters = options?.parameters === false ? new NullObject() : parseParameters(header, index, len); + return { type, parameters }; + } + var SP = 32; + var HTAB = 9; + var SEMI = 59; + var EQ = 61; + var DQUOTE = 34; + var BSLASH = 92; + function parseParameters(header, index, len) { + const parameters = new NullObject(); + parameter: + while (index < len) { + index = skipOWS(header, index + 1, len); + const keyStart = index; + while (index < len) { + const code = header.charCodeAt(index); + if (code === SEMI) + continue parameter; + if (code === EQ) { + const keyEnd = trailingOWS(header, keyStart, index); + const key = header.slice(keyStart, keyEnd).toLowerCase(); + index = skipOWS(header, index + 1, len); + if (index < len && header.charCodeAt(index) === DQUOTE) { + index++; + let value = ""; + while (index < len) { + const code2 = header.charCodeAt(index++); + if (code2 === DQUOTE) { + index = skipValue(header, index, len); + if (parameters[key] === void 0) + parameters[key] = value; + break; + } + if (code2 === BSLASH && index < len) { + value += header[index++]; + continue; + } + value += String.fromCharCode(code2); + } + continue parameter; + } + const valueStart = index; + index = skipValue(header, index, len); + if (parameters[key] === void 0) { + const valueEnd = trailingOWS(header, valueStart, index); + parameters[key] = header.slice(valueStart, valueEnd); + } + continue parameter; + } + index++; + } + } + return parameters; + } + function skipValue(str, index, len) { + while (index < len) { + const char = str.charCodeAt(index); + if (char === SEMI) + break; + index++; + } + return index; + } + function skipOWS(header, index, len) { + while (index < len) { + const char = header.charCodeAt(index); + if (char !== SP && char !== HTAB) + break; + index++; + } + return index; + } + function trailingOWS(header, start, end) { + while (end > start) { + const char = header.charCodeAt(end - 1); + if (char !== SP && char !== HTAB) + break; + end--; + } + return end; + } + function qstring(str) { + if (TOKEN_REGEXP.test(str)) + return str; + if (TEXT_REGEXP.test(str)) + return `"${str.replace(QUOTE_REGEXP, "\\$&")}"`; + throw new TypeError(`Invalid parameter value: ${str}`); + } + } +}); + +// +var require_proxy = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getProxyUrl = getProxyUrl2; + exports.checkBypass = checkBypass; + function getProxyUrl2(reqUrl) { + const usingSsl = reqUrl.protocol === "https:"; + if (checkBypass(reqUrl)) { + return void 0; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env["https_proxy"] || process.env["HTTPS_PROXY"]; + } else { + return process.env["http_proxy"] || process.env["HTTP_PROXY"]; + } + })(); + if (proxyVar) { + try { + return new DecodedURL(proxyVar); + } catch (_a3) { + if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://")) + return new DecodedURL(`http://${proxyVar}`); + } + } else { + return void 0; + } + } + function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } + const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ""; + if (!noProxy) { + return false; + } + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } else if (reqUrl.protocol === "http:") { + reqPort = 80; + } else if (reqUrl.protocol === "https:") { + reqPort = 443; + } + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === "number") { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + for (const upperNoProxyItem of noProxy.split(",").map((x) => x.trim().toUpperCase()).filter((x) => x)) { + if (upperNoProxyItem === "*" || upperReqHosts.some((x) => x === upperNoProxyItem || x.endsWith(`.${upperNoProxyItem}`) || upperNoProxyItem.startsWith(".") && x.endsWith(`${upperNoProxyItem}`))) { + return true; + } + } + return false; + } + function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return hostLower === "localhost" || hostLower.startsWith("127.") || hostLower.startsWith("[::1]") || hostLower.startsWith("[0:0:0:0:0:0:0:1]"); + } + var DecodedURL = class extends URL { + constructor(url, base) { + super(url, base); + this._decodedUsername = decodeURIComponent(super.username); + this._decodedPassword = decodeURIComponent(super.password); + } + get username() { + return this._decodedUsername; + } + get password() { + return this._decodedPassword; + } + }; + } +}); + +// +var require_lib = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || /* @__PURE__ */ function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) + if (Object.prototype.hasOwnProperty.call(o2, k)) + ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) + if (k[i] !== "default") + __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + }(); + var __awaiter3 = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve5) { + resolve5(value); + }); + } + return new (P || (P = Promise))(function(resolve5, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve5(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HttpClient = exports.HttpClientResponse = exports.HttpClientError = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; + exports.getProxyUrl = getProxyUrl2; + exports.isHttps = isHttps; + var http = __importStar(__require("http")); + var https = __importStar(__require("https")); + var pm = __importStar(require_proxy()); + var tunnel2 = __importStar(require_tunnel2()); + var undici_1 = require_undici(); + var HttpCodes2; + (function(HttpCodes3) { + HttpCodes3[HttpCodes3["OK"] = 200] = "OK"; + HttpCodes3[HttpCodes3["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes3[HttpCodes3["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes3[HttpCodes3["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes3[HttpCodes3["SeeOther"] = 303] = "SeeOther"; + HttpCodes3[HttpCodes3["NotModified"] = 304] = "NotModified"; + HttpCodes3[HttpCodes3["UseProxy"] = 305] = "UseProxy"; + HttpCodes3[HttpCodes3["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes3[HttpCodes3["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes3[HttpCodes3["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes3[HttpCodes3["BadRequest"] = 400] = "BadRequest"; + HttpCodes3[HttpCodes3["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes3[HttpCodes3["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes3[HttpCodes3["Forbidden"] = 403] = "Forbidden"; + HttpCodes3[HttpCodes3["NotFound"] = 404] = "NotFound"; + HttpCodes3[HttpCodes3["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes3[HttpCodes3["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes3[HttpCodes3["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes3[HttpCodes3["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes3[HttpCodes3["Conflict"] = 409] = "Conflict"; + HttpCodes3[HttpCodes3["Gone"] = 410] = "Gone"; + HttpCodes3[HttpCodes3["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes3[HttpCodes3["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes3[HttpCodes3["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes3[HttpCodes3["BadGateway"] = 502] = "BadGateway"; + HttpCodes3[HttpCodes3["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes3[HttpCodes3["GatewayTimeout"] = 504] = "GatewayTimeout"; + })(HttpCodes2 || (exports.HttpCodes = HttpCodes2 = {})); + var Headers2; + (function(Headers3) { + Headers3["Accept"] = "accept"; + Headers3["ContentType"] = "content-type"; + })(Headers2 || (exports.Headers = Headers2 = {})); + var MediaTypes2; + (function(MediaTypes3) { + MediaTypes3["ApplicationJson"] = "application/json"; + })(MediaTypes2 || (exports.MediaTypes = MediaTypes2 = {})); + function getProxyUrl2(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ""; + } + var HttpRedirectCodes2 = [ + HttpCodes2.MovedPermanently, + HttpCodes2.ResourceMoved, + HttpCodes2.SeeOther, + HttpCodes2.TemporaryRedirect, + HttpCodes2.PermanentRedirect + ]; + var HttpResponseRetryCodes2 = [ + HttpCodes2.BadGateway, + HttpCodes2.ServiceUnavailable, + HttpCodes2.GatewayTimeout + ]; + var RetryableHttpVerbs = ["OPTIONS", "GET", "DELETE", "HEAD"]; + var ExponentialBackoffCeiling = 10; + var ExponentialBackoffTimeSlice = 5; + var HttpClientError = class _HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = "HttpClientError"; + this.statusCode = statusCode; + Object.setPrototypeOf(this, _HttpClientError.prototype); + } + }; + exports.HttpClientError = HttpClientError; + var HttpClientResponse = class { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise((resolve5) => __awaiter3(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on("data", (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on("end", () => { + resolve5(output.toString()); + }); + })); + }); + } + readBodyBuffer() { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise((resolve5) => __awaiter3(this, void 0, void 0, function* () { + const chunks = []; + this.message.on("data", (chunk) => { + chunks.push(chunk); + }); + this.message.on("end", () => { + resolve5(Buffer.concat(chunks)); + }); + })); + }); + } + }; + exports.HttpClientResponse = HttpClientResponse; + function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === "https:"; + } + var HttpClient3 = class { + constructor(userAgent2, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = this._getUserAgentWithOrchestrationId(userAgent2); + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request("OPTIONS", requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request("GET", requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request("DELETE", requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request("POST", requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request("PATCH", requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request("PUT", requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request("HEAD", requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl_1) { + return __awaiter3(this, arguments, void 0, function* (requestUrl, additionalHeaders = {}) { + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes2.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl_1, obj_1) { + return __awaiter3(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes2.ApplicationJson); + additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl_1, obj_1) { + return __awaiter3(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes2.ApplicationJson); + additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl_1, obj_1) { + return __awaiter3(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes2.ApplicationJson); + additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter3(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error("Client has already been disposed."); + } + const parsedUrl = new URL(requestUrl); + let info2 = this._prepareRequest(verb, parsedUrl, headers); + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info2, data); + if (response && response.message && response.message.statusCode === HttpCodes2.Unauthorized) { + let authenticationHandler; + for (const handler2 of this.handlers) { + if (handler2.canHandleAuthentication(response)) { + authenticationHandler = handler2; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info2, data); + } else { + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && HttpRedirectCodes2.includes(response.message.statusCode) && this._allowRedirects && redirectsRemaining > 0) { + const redirectUrl = response.message.headers["location"]; + if (!redirectUrl) { + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === "https:" && parsedUrl.protocol !== parsedRedirectUrl.protocol && !this._allowRedirectDowngrade) { + throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true."); + } + yield response.readBody(); + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + if (header.toLowerCase() === "authorization") { + delete headers[header]; + } + } + } + info2 = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info2, data); + redirectsRemaining--; + } + if (!response.message.statusCode || !HttpResponseRetryCodes2.includes(response.message.statusCode)) { + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info2, data) { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise((resolve5, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } else if (!res) { + reject(new Error("Unknown error")); + } else { + resolve5(res); + } + } + this.requestRawWithCallback(info2, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info2, data, onResult) { + if (typeof data === "string") { + if (!info2.options.headers) { + info2.options.headers = {}; + } + info2.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8"); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info2.httpModule.request(info2.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(void 0, res); + }); + let socket; + req.on("socket", (sock) => { + socket = sock; + }); + req.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info2.options.path}`)); + }); + req.on("error", function(err) { + handleResult(err); + }); + if (data && typeof data === "string") { + req.write(data, "utf8"); + } + if (data && typeof data !== "string") { + data.on("close", function() { + req.end(); + }); + data.pipe(req); + } else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info2 = {}; + info2.parsedUrl = requestUrl; + const usingSsl = info2.parsedUrl.protocol === "https:"; + info2.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info2.options = {}; + info2.options.host = info2.parsedUrl.hostname; + info2.options.port = info2.parsedUrl.port ? parseInt(info2.parsedUrl.port) : defaultPort; + info2.options.path = (info2.parsedUrl.pathname || "") + (info2.parsedUrl.search || ""); + info2.options.method = method; + info2.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info2.options.headers["user-agent"] = this.userAgent; + } + info2.options.agent = this._getAgent(info2.parsedUrl); + if (this.handlers) { + for (const handler2 of this.handlers) { + handler2.prepareRequest(info2.options); + } + } + return info2; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys2(this.requestOptions.headers), lowercaseKeys2(headers || {})); + } + return lowercaseKeys2(headers || {}); + } + /** + * Gets an existing header value or returns a default. + * Handles converting number header values to strings since HTTP headers must be strings. + * Note: This returns string | string[] since some headers can have multiple values. + * For headers that must always be a single string (like Content-Type), use the + * specialized _getExistingOrDefaultContentTypeHeader method instead. + */ + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + const headerValue = lowercaseKeys2(this.requestOptions.headers)[header]; + if (headerValue) { + clientHeader = typeof headerValue === "number" ? headerValue.toString() : headerValue; + } + } + const additionalValue = additionalHeaders[header]; + if (additionalValue !== void 0) { + return typeof additionalValue === "number" ? additionalValue.toString() : additionalValue; + } + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; + } + /** + * Specialized version of _getExistingOrDefaultHeader for Content-Type header. + * Always returns a single string (not an array) since Content-Type should be a single value. + * Converts arrays to comma-separated strings and numbers to strings to ensure type safety. + * This was split from _getExistingOrDefaultHeader to provide stricter typing for callers + * that assign the result to places expecting a string (e.g., additionalHeaders[Headers.ContentType]). + */ + _getExistingOrDefaultContentTypeHeader(additionalHeaders, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + const headerValue = lowercaseKeys2(this.requestOptions.headers)[Headers2.ContentType]; + if (headerValue) { + if (typeof headerValue === "number") { + clientHeader = String(headerValue); + } else if (Array.isArray(headerValue)) { + clientHeader = headerValue.join(", "); + } else { + clientHeader = headerValue; + } + } + } + const additionalValue = additionalHeaders[Headers2.ContentType]; + if (additionalValue !== void 0) { + if (typeof additionalValue === "number") { + return String(additionalValue); + } else if (Array.isArray(additionalValue)) { + return additionalValue.join(", "); + } else { + return additionalValue; + } + } + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (!useProxy) { + agent = this._agent; + } + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === "https:"; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, (proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + }), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === "https:"; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel2.httpsOverHttps : tunnel2.httpsOverHttp; + } else { + tunnelAgent = overHttps ? tunnel2.httpOverHttps : tunnel2.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + if (!agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + if (usingSsl && this._ignoreSslError) { + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === "https:"; + proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, (proxyUrl.username || proxyUrl.password) && { + token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString("base64")}` + })); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + _getUserAgentWithOrchestrationId(userAgent2) { + const baseUserAgent = userAgent2 || "actions/http-client"; + const orchId = process.env["ACTIONS_ORCHESTRATION_ID"]; + if (orchId) { + const sanitizedId = orchId.replace(/[^a-z0-9_.-]/gi, "_"); + return `${baseUserAgent} actions_orchestration_id/${sanitizedId}`; + } + return baseUserAgent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter3(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise((resolve5) => setTimeout(() => resolve5(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise((resolve5, reject) => __awaiter3(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + if (statusCode === HttpCodes2.NotFound) { + resolve5(response); + } + function dateTimeDeserializer(key, value) { + if (typeof value === "string") { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } catch (err) { + } + if (statusCode > 299) { + let msg; + if (obj && obj.message) { + msg = obj.message; + } else if (contents && contents.length > 0) { + msg = contents; + } else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } else { + resolve5(response); + } + })); + }); + } + }; + exports.HttpClient = HttpClient3; + var lowercaseKeys2 = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); + } +}); + +// +var supports_color_exports = {}; +__export(supports_color_exports, { + createSupportsColor: () => createSupportsColor, + default: () => supports_color_default +}); +import process2 from "node:process"; +import os4 from "node:os"; +import tty from "node:tty"; +function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) { + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf("--"); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +} +function envForceColor() { + if (!("FORCE_COLOR" in env)) { + return; + } + if (env.FORCE_COLOR === "true") { + return 1; + } + if (env.FORCE_COLOR === "false") { + return 0; + } + if (env.FORCE_COLOR.length === 0) { + return 1; + } + const level = Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + if (![0, 1, 2, 3].includes(level)) { + return; + } + return level; +} +function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} +function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) { + const noFlagForceColor = envForceColor(); + if (noFlagForceColor !== void 0) { + flagForceColor = noFlagForceColor; + } + const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; + if (forceColor === 0) { + return 0; + } + if (sniffFlags) { + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + } + if ("TF_BUILD" in env && "AGENT_NAME" in env) { + return 1; + } + if (haveStream && !streamIsTTY && forceColor === void 0) { + return 0; + } + const min = forceColor || 0; + if (env.TERM === "dumb") { + return min; + } + if (process2.platform === "win32") { + const osRelease = os4.release().split("."); + if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) { + return 3; + } + if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if (env.TERM === "xterm-kitty") { + return 3; + } + if (env.TERM === "xterm-ghostty") { + return 3; + } + if (env.TERM === "wezterm") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": { + return version >= 3 ? 3 : 2; + } + case "Apple_Terminal": { + return 2; + } + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + return min; +} +function createSupportsColor(stream, options = {}) { + const level = _supportsColor(stream, { + streamIsTTY: stream && stream.isTTY, + ...options + }); + return translateLevel(level); +} +var env, flagForceColor, supportsColor, supports_color_default; +var init_supports_color = __esm({ + ""() { + ({ env } = process2); + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { + flagForceColor = 0; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + flagForceColor = 1; + } + supportsColor = { + stdout: createSupportsColor({ isTTY: tty.isatty(1) }), + stderr: createSupportsColor({ isTTY: tty.isatty(2) }) + }; + supports_color_default = supportsColor; + } +}); + +// +var require_get_caller_file = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = function getCallerFile2(position) { + if (position === void 0) { + position = 2; + } + if (position >= Error.stackTraceLimit) { + throw new TypeError("getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `" + position + "` and Error.stackTraceLimit was: `" + Error.stackTraceLimit + "`"); + } + var oldPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function(_, stack2) { + return stack2; + }; + var stack = new Error().stack; + Error.prepareStackTrace = oldPrepareStackTrace; + if (stack !== null && typeof stack === "object") { + return stack[position] ? stack[position].getFileName() : void 0; + } + }; + } +}); + +// +var require_constants6 = __commonJS({ + ""(exports, module) { + "use strict"; + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ + 9007199254740991; + var MAX_SAFE_COMPONENT_LENGTH = 16; + var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; + var RELEASE_TYPES = [ + "major", + "premajor", + "minor", + "preminor", + "patch", + "prepatch", + "prerelease" + ]; + module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 1, + FLAG_LOOSE: 2 + }; + } +}); + +// +var require_debug = __commonJS({ + ""(exports, module) { + "use strict"; + var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => { + }; + module.exports = debug2; + } +}); + +// +var require_re = __commonJS({ + ""(exports, module) { + "use strict"; + var { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH + } = require_constants6(); + var debug2 = require_debug(); + exports = module.exports = {}; + var re = exports.re = []; + var safeRe = exports.safeRe = []; + var src = exports.src = []; + var safeSrc = exports.safeSrc = []; + var t = exports.t = {}; + var R = 0; + var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; + var safeRegexReplacements = [ + ["\\s", 1], + ["\\d", MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] + ]; + var makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); + } + return value; + }; + var createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug2(name, index, value); + t[name] = index; + src[index] = value; + safeSrc[index] = safe; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); + }; + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); + createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); + createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); + createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("COERCERTLFULL", src[t.COERCEFULL], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); + } +}); + +// +var require_parse_options = __commonJS({ + ""(exports, module) { + "use strict"; + var looseOption = Object.freeze({ loose: true }); + var emptyOpts = Object.freeze({}); + var parseOptions2 = (options) => { + if (!options) { + return emptyOpts; + } + if (typeof options !== "object") { + return looseOption; + } + return options; + }; + module.exports = parseOptions2; + } +}); + +// +var require_identifiers = __commonJS({ + ""(exports, module) { + "use strict"; + var numeric2 = /^[0-9]+$/; + var compareIdentifiers = (a, b) => { + if (typeof a === "number" && typeof b === "number") { + return a === b ? 0 : a < b ? -1 : 1; + } + const anum = numeric2.test(a); + const bnum = numeric2.test(b); + if (anum && bnum) { + a = +a; + b = +b; + } + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; + }; + var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); + module.exports = { + compareIdentifiers, + rcompareIdentifiers + }; + } +}); + +// +var require_semver = __commonJS({ + ""(exports, module) { + "use strict"; + var debug2 = require_debug(); + var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants6(); + var { safeRe: re, t } = require_re(); + var parseOptions2 = require_parse_options(); + var { compareIdentifiers } = require_identifiers(); + var SemVer = class _SemVer { + constructor(version, options) { + options = parseOptions2(options); + if (version instanceof _SemVer) { + if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { + return version; + } else { + version = version.version; + } + } else if (typeof version !== "string") { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`); + } + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ); + } + debug2("SemVer", version, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m) { + throw new TypeError(`Invalid Version: ${version}`); + } + this.raw = version; + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError("Invalid major version"); + } + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError("Invalid minor version"); + } + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError("Invalid patch version"); + } + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num; + } + } + return id; + }); + } + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) { + this.version += `-${this.prerelease.join(".")}`; + } + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug2("SemVer.compare", this.version, this.options, other); + if (!(other instanceof _SemVer)) { + if (typeof other === "string" && other === this.version) { + return 0; + } + other = new _SemVer(other, this.options); + } + if (other.version === this.version) { + return 0; + } + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.major < other.major) { + return -1; + } + if (this.major > other.major) { + return 1; + } + if (this.minor < other.minor) { + return -1; + } + if (this.minor > other.minor) { + return 1; + } + if (this.patch < other.patch) { + return -1; + } + if (this.patch > other.patch) { + return 1; + } + return 0; + } + comparePre(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + if (this.prerelease.length && !other.prerelease.length) { + return -1; + } else if (!this.prerelease.length && other.prerelease.length) { + return 1; + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0; + } + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug2("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + compareBuild(other) { + if (!(other instanceof _SemVer)) { + other = new _SemVer(other, this.options); + } + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug2("build compare", i, a, b); + if (a === void 0 && b === void 0) { + return 0; + } else if (b === void 0) { + return 1; + } else if (a === void 0) { + return -1; + } else if (a === b) { + continue; + } else { + return compareIdentifiers(a, b); + } + } while (++i); + } + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc(release, identifier, identifierBase) { + if (release.startsWith("pre")) { + if (!identifier && identifierBase === false) { + throw new Error("invalid increment argument: identifier is empty"); + } + if (identifier) { + const match2 = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]); + if (!match2 || match2[1] !== identifier) { + throw new Error(`invalid identifier: ${identifier}`); + } + } + } + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier, identifierBase); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier, identifierBase); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + case "prerelease": + if (this.prerelease.length === 0) { + this.inc("patch", identifier, identifierBase); + } + this.inc("pre", identifier, identifierBase); + break; + case "release": + if (this.prerelease.length === 0) { + throw new Error(`version ${this.raw} is not a prerelease`); + } + this.prerelease.length = 0; + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break; + case "pre": { + const base = Number(identifierBase) ? 1 : 0; + if (this.prerelease.length === 0) { + this.prerelease = [base]; + } else { + let i = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === "number") { + this.prerelease[i]++; + i = -2; + } + } + if (i === -1) { + if (identifier === this.prerelease.join(".") && identifierBase === false) { + throw new Error("invalid increment argument: identifier already exists"); + } + this.prerelease.push(base); + } + } + if (identifier) { + let prerelease = [identifier, base]; + if (identifierBase === false) { + prerelease = [identifier]; + } + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = prerelease; + } + } else { + this.prerelease = prerelease; + } + } + break; + } + default: + throw new Error(`invalid increment argument: ${release}`); + } + this.raw = this.format(); + if (this.build.length) { + this.raw += `+${this.build.join(".")}`; + } + return this; + } + }; + module.exports = SemVer; + } +}); + +// +var require_parse2 = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var parse3 = (version, options, throwErrors = false) => { + if (version instanceof SemVer) { + return version; + } + try { + return new SemVer(version, options); + } catch (er) { + if (!throwErrors) { + return null; + } + throw er; + } + }; + module.exports = parse3; + } +}); + +// +var require_valid = __commonJS({ + ""(exports, module) { + "use strict"; + var parse3 = require_parse2(); + var valid = (version, options) => { + const v = parse3(version, options); + return v ? v.version : null; + }; + module.exports = valid; + } +}); + +// +var require_clean = __commonJS({ + ""(exports, module) { + "use strict"; + var parse3 = require_parse2(); + var clean = (version, options) => { + const s = parse3(version.trim().replace(/^[=v]+/, ""), options); + return s ? s.version : null; + }; + module.exports = clean; + } +}); + +// +var require_inc = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var inc = (version, release, options, identifier, identifierBase) => { + if (typeof options === "string") { + identifierBase = identifier; + identifier = options; + options = void 0; + } + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier, identifierBase).version; + } catch (er) { + return null; + } + }; + module.exports = inc; + } +}); + +// +var require_diff = __commonJS({ + ""(exports, module) { + "use strict"; + var parse3 = require_parse2(); + var diff = (version1, version2) => { + const v1 = parse3(version1, null, true); + const v2 = parse3(version2, null, true); + const comparison = v1.compare(v2); + if (comparison === 0) { + return null; + } + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + const lowHasPre = !!lowVersion.prerelease.length; + if (lowHasPre && !highHasPre) { + if (!lowVersion.patch && !lowVersion.minor) { + return "major"; + } + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return "minor"; + } + return "patch"; + } + } + const prefix = highHasPre ? "pre" : ""; + if (v1.major !== v2.major) { + return prefix + "major"; + } + if (v1.minor !== v2.minor) { + return prefix + "minor"; + } + if (v1.patch !== v2.patch) { + return prefix + "patch"; + } + return "prerelease"; + }; + module.exports = diff; + } +}); + +// +var require_major = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var major = (a, loose) => new SemVer(a, loose).major; + module.exports = major; + } +}); + +// +var require_minor = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var minor = (a, loose) => new SemVer(a, loose).minor; + module.exports = minor; + } +}); + +// +var require_patch = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var patch = (a, loose) => new SemVer(a, loose).patch; + module.exports = patch; + } +}); + +// +var require_prerelease = __commonJS({ + ""(exports, module) { + "use strict"; + var parse3 = require_parse2(); + var prerelease = (version, options) => { + const parsed = parse3(version, options); + return parsed && parsed.prerelease.length ? parsed.prerelease : null; + }; + module.exports = prerelease; + } +}); + +// +var require_compare = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); + module.exports = compare; + } +}); + +// +var require_rcompare = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var rcompare = (a, b, loose) => compare(b, a, loose); + module.exports = rcompare; + } +}); + +// +var require_compare_loose = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var compareLoose = (a, b) => compare(a, b, true); + module.exports = compareLoose; + } +}); + +// +var require_compare_build = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose); + const versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); + }; + module.exports = compareBuild; + } +}); + +// +var require_sort = __commonJS({ + ""(exports, module) { + "use strict"; + var compareBuild = require_compare_build(); + var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); + module.exports = sort; + } +}); + +// +var require_rsort = __commonJS({ + ""(exports, module) { + "use strict"; + var compareBuild = require_compare_build(); + var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); + module.exports = rsort; + } +}); + +// +var require_gt = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var gt = (a, b, loose) => compare(a, b, loose) > 0; + module.exports = gt; + } +}); + +// +var require_lt = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var lt = (a, b, loose) => compare(a, b, loose) < 0; + module.exports = lt; + } +}); + +// +var require_eq = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var eq = (a, b, loose) => compare(a, b, loose) === 0; + module.exports = eq; + } +}); + +// +var require_neq = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var neq = (a, b, loose) => compare(a, b, loose) !== 0; + module.exports = neq; + } +}); + +// +var require_gte = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var gte2 = (a, b, loose) => compare(a, b, loose) >= 0; + module.exports = gte2; + } +}); + +// +var require_lte = __commonJS({ + ""(exports, module) { + "use strict"; + var compare = require_compare(); + var lte2 = (a, b, loose) => compare(a, b, loose) <= 0; + module.exports = lte2; + } +}); + +// +var require_cmp = __commonJS({ + ""(exports, module) { + "use strict"; + var eq = require_eq(); + var neq = require_neq(); + var gt = require_gt(); + var gte2 = require_gte(); + var lt = require_lt(); + var lte2 = require_lte(); + var cmp = (a, op, b, loose) => { + switch (op) { + case "===": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a === b; + case "!==": + if (typeof a === "object") { + a = a.version; + } + if (typeof b === "object") { + b = b.version; + } + return a !== b; + case "": + case "=": + case "==": + return eq(a, b, loose); + case "!=": + return neq(a, b, loose); + case ">": + return gt(a, b, loose); + case ">=": + return gte2(a, b, loose); + case "<": + return lt(a, b, loose); + case "<=": + return lte2(a, b, loose); + default: + throw new TypeError(`Invalid operator: ${op}`); + } + }; + module.exports = cmp; + } +}); + +// +var require_coerce = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var parse3 = require_parse2(); + var { safeRe: re, t } = require_re(); + var coerce = (version, options) => { + if (version instanceof SemVer) { + return version; + } + if (typeof version === "number") { + version = String(version); + } + if (typeof version !== "string") { + return null; + } + options = options || {}; + let match2 = null; + if (!options.rtl) { + match2 = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); + } else { + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; + let next; + while ((next = coerceRtlRegex.exec(version)) && (!match2 || match2.index + match2[0].length !== version.length)) { + if (!match2 || next.index + next[0].length !== match2.index + match2[0].length) { + match2 = next; + } + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; + } + coerceRtlRegex.lastIndex = -1; + } + if (match2 === null) { + return null; + } + const major = match2[2]; + const minor = match2[3] || "0"; + const patch = match2[4] || "0"; + const prerelease = options.includePrerelease && match2[5] ? `-${match2[5]}` : ""; + const build = options.includePrerelease && match2[6] ? `+${match2[6]}` : ""; + return parse3(`${major}.${minor}.${patch}${prerelease}${build}`, options); + }; + module.exports = coerce; + } +}); + +// +var require_truncate = __commonJS({ + ""(exports, module) { + "use strict"; + var parse3 = require_parse2(); + var constants3 = require_constants6(); + var SemVer = require_semver(); + var truncate = (version, truncation, options) => { + if (!constants3.RELEASE_TYPES.includes(truncation)) { + return null; + } + const clonedVersion = cloneInputVersion(version, options); + return clonedVersion && doTruncation(clonedVersion, truncation); + }; + var cloneInputVersion = (version, options) => { + const versionStringToParse = version instanceof SemVer ? version.version : version; + return parse3(versionStringToParse, options); + }; + var doTruncation = (version, truncation) => { + if (isPrerelease(truncation)) { + return version.version; + } + version.prerelease = []; + switch (truncation) { + case "major": + version.minor = 0; + version.patch = 0; + break; + case "minor": + version.patch = 0; + break; + } + return version.format(); + }; + var isPrerelease = (type) => { + return type.startsWith("pre"); + }; + module.exports = truncate; + } +}); + +// +var require_lrucache = __commonJS({ + ""(exports, module) { + "use strict"; + var LRUCache = class { + constructor() { + this.max = 1e3; + this.map = /* @__PURE__ */ new Map(); + } + get(key) { + const value = this.map.get(key); + if (value === void 0) { + return void 0; + } else { + this.map.delete(key); + this.map.set(key, value); + return value; + } + } + delete(key) { + return this.map.delete(key); + } + set(key, value) { + const deleted = this.delete(key); + if (!deleted && value !== void 0) { + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value; + this.delete(firstKey); + } + this.map.set(key, value); + } + return this; + } + }; + module.exports = LRUCache; + } +}); + +// +var require_range = __commonJS({ + ""(exports, module) { + "use strict"; + var SPACE_CHARACTERS = /\s+/g; + var Range = class _Range { + constructor(range2, options) { + options = parseOptions2(options); + if (range2 instanceof _Range) { + if (range2.loose === !!options.loose && range2.includePrerelease === !!options.includePrerelease) { + return range2; + } else { + return new _Range(range2.raw, options); + } + } + if (range2 instanceof Comparator) { + this.raw = range2.value; + this.set = [[range2]]; + this.formatted = void 0; + return this; + } + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range2.trim().replace(SPACE_CHARACTERS, " "); + this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length); + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`); + } + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter((c) => !isNullSet(c[0])); + if (this.set.length === 0) { + this.set = [first]; + } else if (this.set.length > 1) { + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break; + } + } + } + } + this.formatted = void 0; + } + get range() { + if (this.formatted === void 0) { + this.formatted = ""; + for (let i = 0; i < this.set.length; i++) { + if (i > 0) { + this.formatted += "||"; + } + const comps = this.set[i]; + for (let k = 0; k < comps.length; k++) { + if (k > 0) { + this.formatted += " "; + } + this.formatted += comps[k].toString().trim(); + } + } + } + return this.formatted; + } + format() { + return this.range; + } + toString() { + return this.range; + } + parseRange(range2) { + range2 = range2.replace(BUILDSTRIPRE, ""); + const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE); + const memoKey = memoOpts + ":" + range2; + const cached = cache.get(memoKey); + if (cached) { + return cached; + } + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range2 = range2.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug2("hyphen replace", range2); + range2 = range2.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug2("comparator trim", range2); + range2 = range2.replace(re[t.TILDETRIM], tildeTrimReplace); + debug2("tilde trim", range2); + range2 = range2.replace(re[t.CARETTRIM], caretTrimReplace); + debug2("caret trim", range2); + let rangeList = range2.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); + if (loose) { + rangeList = rangeList.filter((comp) => { + debug2("loose invalid filter", comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]); + }); + } + debug2("range list", rangeList); + const rangeMap = /* @__PURE__ */ new Map(); + const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp]; + } + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has("")) { + rangeMap.delete(""); + } + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result; + } + intersects(range2, options) { + if (!(range2 instanceof _Range)) { + throw new TypeError("a Range is required"); + } + return this.set.some((thisComparators) => { + return isSatisfiable(thisComparators, options) && range2.set.some((rangeComparators) => { + return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options); + }); + }); + }); + }); + } + // if ANY of the sets match ALL of its comparators, then pass + test(version) { + if (!version) { + return false; + } + if (typeof version === "string") { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true; + } + } + return false; + } + }; + module.exports = Range; + var LRU = require_lrucache(); + var cache = new LRU(); + var parseOptions2 = require_parse_options(); + var Comparator = require_comparator(); + var debug2 = require_debug(); + var SemVer = require_semver(); + var { + safeRe: re, + src, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace + } = require_re(); + var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants6(); + var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g"); + var isNullSet = (c) => c.value === "<0.0.0-0"; + var isAny = (c) => c.value === ""; + var isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } + return result; + }; + var parseComparator = (comp, options) => { + comp = comp.replace(re[t.BUILD], ""); + debug2("comp", comp, options); + comp = replaceCarets(comp, options); + debug2("caret", comp); + comp = replaceTildes(comp, options); + debug2("tildes", comp); + comp = replaceXRanges(comp, options); + debug2("xrange", comp); + comp = replaceStars(comp, options); + debug2("stars", comp); + return comp; + }; + var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; + var replaceTildes = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "); + }; + var replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, (_, M, m, p, pr) => { + debug2("tilde", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } else if (isX(p)) { + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } else if (pr) { + debug2("replaceTilde pr", pr); + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + } + debug2("tilde return", ret); + return ret; + }); + }; + var replaceCarets = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); + }; + var replaceCaret = (comp, options) => { + debug2("caret", comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? "-0" : ""; + return comp.replace(r, (_, M, m, p, pr) => { + debug2("caret", comp, _, M, m, p, pr); + let ret; + if (isX(M)) { + ret = ""; + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } else if (isX(p)) { + if (M === "0") { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } else if (pr) { + debug2("replaceCaret pr", pr); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } + } else { + debug2("no pr"); + if (M === "0") { + if (m === "0") { + ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + } + debug2("caret return", ret); + return ret; + }); + }; + var replaceXRanges = (comp, options) => { + debug2("replaceXRanges", comp, options); + return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); + }; + var replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug2("xRange", comp, ret, gtlt, M, m, p, pr); + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === "=" && anyX) { + gtlt = ""; + } + pr = options.includePrerelease ? "-0" : ""; + if (xM) { + if (gtlt === ">" || gtlt === "<") { + ret = "<0.0.0-0"; + } else { + ret = "*"; + } + } else if (gtlt && anyX) { + if (xm) { + m = 0; + } + p = 0; + if (gtlt === ">") { + gtlt = ">="; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === "<=") { + gtlt = "<"; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } + if (gtlt === "<") { + pr = "-0"; + } + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } else if (xp) { + ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + } + debug2("xRange return", ret); + return ret; + }); + }; + var replaceStars = (comp, options) => { + debug2("replaceStars", comp, options); + return comp.trim().replace(re[t.STAR], ""); + }; + var replaceGTE0 = (comp, options) => { + debug2("replaceGTE0", comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); + }; + var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = ""; + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? "-0" : ""}`; + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; + } else if (fpr) { + from = `>=${from}`; + } else { + from = `>=${from}${incPr ? "-0" : ""}`; + } + if (isX(tM)) { + to = ""; + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } else { + to = `<=${to}`; + } + return `${from} ${to}`.trim(); + }; + var testSet = (set2, version, options) => { + for (let i = 0; i < set2.length; i++) { + if (!set2[i].test(version)) { + return false; + } + } + if (version.prerelease.length && !options.includePrerelease) { + for (let i = 0; i < set2.length; i++) { + debug2(set2[i].semver); + if (set2[i].semver === Comparator.ANY) { + continue; + } + if (set2[i].semver.prerelease.length > 0) { + const allowed = set2[i].semver; + if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) { + return true; + } + } + } + return false; + } + return true; + }; + } +}); + +// +var require_comparator = __commonJS({ + ""(exports, module) { + "use strict"; + var ANY = Symbol("SemVer ANY"); + var Comparator = class _Comparator { + static get ANY() { + return ANY; + } + constructor(comp, options) { + options = parseOptions2(options); + if (comp instanceof _Comparator) { + if (comp.loose === !!options.loose) { + return comp; + } else { + comp = comp.value; + } + } + comp = comp.trim().split(/\s+/).join(" "); + debug2("comparator", comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + if (this.semver === ANY) { + this.value = ""; + } else { + this.value = this.operator + this.semver.version; + } + debug2("comp", this); + } + parse(comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`); + } + this.operator = m[1] !== void 0 ? m[1] : ""; + if (this.operator === "=") { + this.operator = ""; + } + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + } + toString() { + return this.value; + } + test(version) { + debug2("Comparator.test", version, this.options.loose); + if (this.semver === ANY || version === ANY) { + return true; + } + if (typeof version === "string") { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + } + return cmp(version, this.operator, this.semver, this.options); + } + intersects(comp, options) { + if (!(comp instanceof _Comparator)) { + throw new TypeError("a Comparator is required"); + } + if (this.operator === "") { + if (this.value === "") { + return true; + } + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === "") { + if (comp.value === "") { + return true; + } + return new Range(this.value, options).test(comp.semver); + } + options = parseOptions2(options); + if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) { + return false; + } + if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) { + return false; + } + if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { + return true; + } + if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { + return true; + } + if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) { + return true; + } + if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) { + return true; + } + if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) { + return true; + } + return false; + } + }; + module.exports = Comparator; + var parseOptions2 = require_parse_options(); + var { safeRe: re, t } = require_re(); + var cmp = require_cmp(); + var debug2 = require_debug(); + var SemVer = require_semver(); + var Range = require_range(); + } +}); + +// +var require_satisfies = __commonJS({ + ""(exports, module) { + "use strict"; + var Range = require_range(); + var satisfies = (version, range2, options) => { + try { + range2 = new Range(range2, options); + } catch (er) { + return false; + } + return range2.test(version); + }; + module.exports = satisfies; + } +}); + +// +var require_to_comparators = __commonJS({ + ""(exports, module) { + "use strict"; + var Range = require_range(); + var toComparators = (range2, options) => new Range(range2, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); + module.exports = toComparators; + } +}); + +// +var require_max_satisfying = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var maxSatisfying = (versions, range2, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range2, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!max || maxSV.compare(v) === -1) { + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max; + }; + module.exports = maxSatisfying; + } +}); + +// +var require_min_satisfying = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var minSatisfying = (versions, range2, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range2, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!min || minSV.compare(v) === 1) { + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min; + }; + module.exports = minSatisfying; + } +}); + +// +var require_min_version = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Range = require_range(); + var gt = require_gt(); + var minVersion = (range2, loose) => { + range2 = new Range(range2, loose); + let minver = new SemVer("0.0.0"); + if (range2.test(minver)) { + return minver; + } + minver = new SemVer("0.0.0-0"); + if (range2.test(minver)) { + return minver; + } + minver = null; + for (let i = 0; i < range2.set.length; ++i) { + const comparators = range2.set[i]; + let setMin = null; + comparators.forEach((comparator) => { + const compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + case "": + case ">=": + if (!setMin || gt(compver, setMin)) { + setMin = compver; + } + break; + case "<": + case "<=": + break; + default: + throw new Error(`Unexpected operation: ${comparator.operator}`); + } + }); + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin; + } + } + if (minver && range2.test(minver)) { + return minver; + } + return null; + }; + module.exports = minVersion; + } +}); + +// +var require_valid2 = __commonJS({ + ""(exports, module) { + "use strict"; + var Range = require_range(); + var validRange = (range2, options) => { + try { + return new Range(range2, options).range || "*"; + } catch (er) { + return null; + } + }; + module.exports = validRange; + } +}); + +// +var require_outside = __commonJS({ + ""(exports, module) { + "use strict"; + var SemVer = require_semver(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var Range = require_range(); + var satisfies = require_satisfies(); + var gt = require_gt(); + var lt = require_lt(); + var lte2 = require_lte(); + var gte2 = require_gte(); + var outside = (version, range2, hilo, options) => { + version = new SemVer(version, options); + range2 = new Range(range2, options); + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte2; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte2; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: + throw new TypeError('Must provide a hilo val of "<" or ">"'); + } + if (satisfies(version, range2, options)) { + return false; + } + for (let i = 0; i < range2.set.length; ++i) { + const comparators = range2.set[i]; + let high = null; + let low = null; + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator(">=0.0.0"); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; + } + }); + if (high.operator === comp || high.operator === ecomp) { + return false; + } + if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) { + return false; + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false; + } + } + return true; + }; + module.exports = outside; + } +}); + +// +var require_gtr = __commonJS({ + ""(exports, module) { + "use strict"; + var outside = require_outside(); + var gtr = (version, range2, options) => outside(version, range2, ">", options); + module.exports = gtr; + } +}); + +// +var require_ltr = __commonJS({ + ""(exports, module) { + "use strict"; + var outside = require_outside(); + var ltr = (version, range2, options) => outside(version, range2, "<", options); + module.exports = ltr; + } +}); + +// +var require_intersects = __commonJS({ + ""(exports, module) { + "use strict"; + var Range = require_range(); + var intersects = (r1, r2, options) => { + r1 = new Range(r1, options); + r2 = new Range(r2, options); + return r1.intersects(r2, options); + }; + module.exports = intersects; + } +}); + +// +var require_simplify = __commonJS({ + ""(exports, module) { + "use strict"; + var satisfies = require_satisfies(); + var compare = require_compare(); + module.exports = (versions, range2, options) => { + const set2 = []; + let first = null; + let prev = null; + const v = versions.sort((a, b) => compare(a, b, options)); + for (const version of v) { + const included = satisfies(version, range2, options); + if (included) { + prev = version; + if (!first) { + first = version; + } + } else { + if (prev) { + set2.push([first, prev]); + } + prev = null; + first = null; + } + } + if (first) { + set2.push([first, null]); + } + const ranges = []; + for (const [min, max] of set2) { + if (min === max) { + ranges.push(min); + } else if (!max && min === v[0]) { + ranges.push("*"); + } else if (!max) { + ranges.push(`>=${min}`); + } else if (min === v[0]) { + ranges.push(`<=${max}`); + } else { + ranges.push(`${min} - ${max}`); + } + } + const simplified = ranges.join(" || "); + const original = typeof range2.raw === "string" ? range2.raw : String(range2); + return simplified.length < original.length ? simplified : range2; + }; + } +}); + +// +var require_subset = __commonJS({ + ""(exports, module) { + "use strict"; + var Range = require_range(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var satisfies = require_satisfies(); + var compare = require_compare(); + var subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true; + } + sub = new Range(sub, options); + dom = new Range(dom, options); + let sawNonNull = false; + OUTER: + for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) { + continue OUTER; + } + } + if (sawNonNull) { + return false; + } + } + return true; + }; + var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; + var minimumVersion = [new Comparator(">=0.0.0")]; + var simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true; + } + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true; + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease; + } else { + sub = minimumVersion; + } + } + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true; + } else { + dom = minimumVersion; + } + } + const eqSet = /* @__PURE__ */ new Set(); + let gt, lt; + for (const c of sub) { + if (c.operator === ">" || c.operator === ">=") { + gt = higherGT(gt, c, options); + } else if (c.operator === "<" || c.operator === "<=") { + lt = lowerLT(lt, c, options); + } else { + eqSet.add(c.semver); + } + } + if (eqSet.size > 1) { + return null; + } + let gtltComp; + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options); + if (gtltComp > 0) { + return null; + } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { + return null; + } + } + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null; + } + if (lt && !satisfies(eq, String(lt), options)) { + return null; + } + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false; + } + } + return true; + } + let higher, lower; + let hasDomLT, hasDomGT; + let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false; + } + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; + hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false; + } + } + if (c.operator === ">" || c.operator === ">=") { + higher = higherGT(gt, c, options); + if (higher === c && higher !== gt) { + return false; + } + } else if (gt.operator === ">=" && !c.test(gt.semver)) { + return false; + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false; + } + } + if (c.operator === "<" || c.operator === "<=") { + lower = lowerLT(lt, c, options); + if (lower === c && lower !== lt) { + return false; + } + } else if (lt.operator === "<=" && !c.test(lt.semver)) { + return false; + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false; + } + } + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false; + } + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false; + } + if (needDomGTPre || needDomLTPre) { + return false; + } + return true; + }; + var higherGT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; + }; + var lowerLT = (a, b, options) => { + if (!a) { + return b; + } + const comp = compare(a.semver, b.semver, options); + return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; + }; + module.exports = subset; + } +}); + +// +var require_semver2 = __commonJS({ + ""(exports, module) { + "use strict"; + var internalRe = require_re(); + var constants3 = require_constants6(); + var SemVer = require_semver(); + var identifiers = require_identifiers(); + var parse3 = require_parse2(); + var valid = require_valid(); + var clean = require_clean(); + var inc = require_inc(); + var diff = require_diff(); + var major = require_major(); + var minor = require_minor(); + var patch = require_patch(); + var prerelease = require_prerelease(); + var compare = require_compare(); + var rcompare = require_rcompare(); + var compareLoose = require_compare_loose(); + var compareBuild = require_compare_build(); + var sort = require_sort(); + var rsort = require_rsort(); + var gt = require_gt(); + var lt = require_lt(); + var eq = require_eq(); + var neq = require_neq(); + var gte2 = require_gte(); + var lte2 = require_lte(); + var cmp = require_cmp(); + var coerce = require_coerce(); + var truncate = require_truncate(); + var Comparator = require_comparator(); + var Range = require_range(); + var satisfies = require_satisfies(); + var toComparators = require_to_comparators(); + var maxSatisfying = require_max_satisfying(); + var minSatisfying = require_min_satisfying(); + var minVersion = require_min_version(); + var validRange = require_valid2(); + var outside = require_outside(); + var gtr = require_gtr(); + var ltr = require_ltr(); + var intersects = require_intersects(); + var simplifyRange = require_simplify(); + var subset = require_subset(); + module.exports = { + parse: parse3, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte: gte2, + lte: lte2, + cmp, + coerce, + truncate, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants3.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants3.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers + }; + } +}); + +// +var require_ms = __commonJS({ + ""(exports, module) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var w = d * 7; + var y = d * 365.25; + module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse3(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); + }; + function parse3(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match2 = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match2) { + return; + } + var n = parseFloat(match2[1]); + var type = (match2[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h) { + return Math.round(ms / h) + "h"; + } + if (msAbs >= m) { + return Math.round(ms / m) + "m"; + } + if (msAbs >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, "hour"); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, "minute"); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, "second"); + } + return ms + " ms"; + } + function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); + } + } +}); + +// +var require_common = __commonJS({ + ""(exports, module) { + function setup(env3) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require_ms(); + createDebug.destroy = destroy; + Object.keys(env3).forEach((key) => { + createDebug[key] = env3[key]; + }); + createDebug.names = []; + createDebug.skips = []; + createDebug.formatters = {}; + function selectColor(namespace) { + let hash = 0; + for (let i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + function debug2(...args) { + if (!debug2.enabled) { + return; + } + const self = debug2; + const curr = Number(/* @__PURE__ */ new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match2, format3) => { + if (match2 === "%%") { + return "%"; + } + index++; + const formatter = createDebug.formatters[format3]; + if (typeof formatter === "function") { + const val = args[index]; + match2 = formatter.call(self, val); + args.splice(index, 1); + index--; + } + return match2; + }); + createDebug.formatArgs.call(self, args); + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + debug2.namespace = namespace; + debug2.useColors = createDebug.useColors(); + debug2.color = createDebug.selectColor(namespace); + debug2.extend = extend; + debug2.destroy = createDebug.destroy; + Object.defineProperty(debug2, "enabled", { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: (v) => { + enableOverride = v; + } + }); + if (typeof createDebug.init === "function") { + createDebug.init(debug2); + } + return debug2; + } + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(" ", ",").split(",").filter(Boolean); + for (const ns of split) { + if (ns[0] === "-") { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { + if (template[templateIndex] === "*") { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; + } + } + while (templateIndex < template.length && template[templateIndex] === "*") { + templateIndex++; + } + return templateIndex === template.length; + } + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map((namespace) => "-" + namespace) + ].join(","); + createDebug.enable(""); + return namespaces; + } + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } + return false; + } + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + function destroy() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + createDebug.enable(createDebug.load()); + return createDebug; + } + module.exports = setup; + } +}); + +// +var require_browser = __commonJS({ + ""(exports, module) { + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load2; + exports.useColors = useColors; + exports.storage = localstorage(); + exports.destroy = /* @__PURE__ */ (() => { + let warned = false; + return () => { + if (!warned) { + warned = true; + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + }; + })(); + exports.colors = [ + "#0000CC", + "#0000FF", + "#0033CC", + "#0033FF", + "#0066CC", + "#0066FF", + "#0099CC", + "#0099FF", + "#00CC00", + "#00CC33", + "#00CC66", + "#00CC99", + "#00CCCC", + "#00CCFF", + "#3300CC", + "#3300FF", + "#3333CC", + "#3333FF", + "#3366CC", + "#3366FF", + "#3399CC", + "#3399FF", + "#33CC00", + "#33CC33", + "#33CC66", + "#33CC99", + "#33CCCC", + "#33CCFF", + "#6600CC", + "#6600FF", + "#6633CC", + "#6633FF", + "#66CC00", + "#66CC33", + "#9900CC", + "#9900FF", + "#9933CC", + "#9933FF", + "#99CC00", + "#99CC33", + "#CC0000", + "#CC0033", + "#CC0066", + "#CC0099", + "#CC00CC", + "#CC00FF", + "#CC3300", + "#CC3333", + "#CC3366", + "#CC3399", + "#CC33CC", + "#CC33FF", + "#CC6600", + "#CC6633", + "#CC9900", + "#CC9933", + "#CCCC00", + "#CCCC33", + "#FF0000", + "#FF0033", + "#FF0066", + "#FF0099", + "#FF00CC", + "#FF00FF", + "#FF3300", + "#FF3333", + "#FF3366", + "#FF3399", + "#FF33CC", + "#FF33FF", + "#FF6600", + "#FF6633", + "#FF9900", + "#FF9933", + "#FFCC00", + "#FFCC33" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { + return true; + } + if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + let m; + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function formatArgs(args) { + args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff); + if (!this.useColors) { + return; + } + const c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, (match2) => { + if (match2 === "%%") { + return; + } + index++; + if (match2 === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + exports.log = console.debug || console.log || (() => { + }); + function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem("debug", namespaces); + } else { + exports.storage.removeItem("debug"); + } + } catch (error2) { + } + } + function load2() { + let r; + try { + r = exports.storage.getItem("debug"); + } catch (error2) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + function localstorage() { + try { + return localStorage; + } catch (error2) { + } + } + module.exports = require_common()(exports); + var { formatters } = module.exports; + formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (error2) { + return "[UnexpectedJSONParseError]: " + error2.message; + } + }; + } +}); + +// +var require_node = __commonJS({ + ""(exports, module) { + var tty2 = __require("tty"); + var util = __require("util"); + exports.init = init; + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load2; + exports.useColors = useColors; + exports.destroy = util.deprecate( + () => { + }, + "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." + ); + exports.colors = [6, 2, 3, 4, 5, 1]; + try { + const supportsColor2 = (init_supports_color(), __toCommonJS(supports_color_exports)); + if (supportsColor2 && (supportsColor2.stderr || supportsColor2).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } + } catch (error2) { + } + exports.inspectOpts = Object.keys(process.env).filter((key) => { + return /^debug_/i.test(key); + }).reduce((obj, key) => { + const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === "null") { + val = null; + } else { + val = Number(val); + } + obj[prop] = val; + return obj; + }, {}); + function useColors() { + return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty2.isatty(process.stderr.fd); + } + function formatArgs(args) { + const { namespace: name, useColors: useColors2 } = this; + if (useColors2) { + const c = this.color; + const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); + const prefix = ` ${colorCode};1m${name} \x1B[0m`; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push(colorCode + "m+" + module.exports.humanize(this.diff) + "\x1B[0m"); + } else { + args[0] = getDate() + name + " " + args[0]; + } + } + function getDate() { + if (exports.inspectOpts.hideDate) { + return ""; + } + return (/* @__PURE__ */ new Date()).toISOString() + " "; + } + function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + "\n"); + } + function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + delete process.env.DEBUG; + } + } + function load2() { + return process.env.DEBUG; + } + function init(debug2) { + debug2.inspectOpts = {}; + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug2.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } + } + module.exports = require_common()(exports); + var { formatters } = module.exports; + formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); + }; + formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + } +}); + +// +var require_src = __commonJS({ + ""(exports, module) { + if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { + module.exports = require_browser(); + } else { + module.exports = require_node(); + } + } +}); + +// +var require_balanced_match = __commonJS({ + ""(exports, module) { + "use strict"; + module.exports = balanced2; + function balanced2(a, b, str) { + if (a instanceof RegExp) + a = maybeMatch2(a, str); + if (b instanceof RegExp) + b = maybeMatch2(b, str); + var r = range2(a, b, str); + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; + } + function maybeMatch2(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; + } + balanced2.range = range2; + function range2(a, b, str) { + var begs, beg, left2, right2, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + if (ai >= 0 && bi > 0) { + if (a === b) { + return [ai, bi]; + } + begs = []; + left2 = str.length; + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [begs.pop(), bi]; + } else { + beg = begs.pop(); + if (beg < left2) { + left2 = beg; + right2 = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length) { + result = [left2, right2]; + } + } + return result; + } + } +}); + +// +var require_brace_expansion = __commonJS({ + ""(exports, module) { + var balanced2 = require_balanced_match(); + module.exports = expandTop; + var escSlash2 = "\0SLASH" + Math.random() + "\0"; + var escOpen2 = "\0OPEN" + Math.random() + "\0"; + var escClose2 = "\0CLOSE" + Math.random() + "\0"; + var escComma2 = "\0COMMA" + Math.random() + "\0"; + var escPeriod2 = "\0PERIOD" + Math.random() + "\0"; + function numeric2(str) { + return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); + } + function escapeBraces2(str) { + return str.split("\\\\").join(escSlash2).split("\\{").join(escOpen2).split("\\}").join(escClose2).split("\\,").join(escComma2).split("\\.").join(escPeriod2); + } + function unescapeBraces2(str) { + return str.split(escSlash2).join("\\").split(escOpen2).join("{").split(escClose2).join("}").split(escComma2).join(",").split(escPeriod2).join("."); + } + function parseCommaParts2(str) { + if (!str) + return [""]; + var parts = []; + var m = balanced2("{", "}", str); + if (!m) + return str.split(","); + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(","); + p[p.length - 1] += "{" + body + "}"; + var postParts = parseCommaParts2(post); + if (post.length) { + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; + } + function expandTop(str, options) { + if (!str) + return []; + options = options || {}; + var max = options.max == null ? Infinity : options.max; + if (str.substr(0, 2) === "{}") { + str = "\\{\\}" + str.substr(2); + } + return expand4(escapeBraces2(str), max, true).map(unescapeBraces2); + } + function embrace2(str) { + return "{" + str + "}"; + } + function isPadded2(el) { + return /^-?0\d/.test(el); + } + function lte2(i, y) { + return i <= y; + } + function gte2(i, y) { + return i >= y; + } + function expand4(str, max, isTop) { + var expansions = []; + var m = balanced2("{", "}", str); + if (!m) + return [str]; + var pre = m.pre; + var post = m.post.length ? expand4(m.post, max, false) : [""]; + if (/\$$/.test(m.pre)) { + for (var k = 0; k < post.length && k < max; k++) { + var expansion = pre + "{" + m.body + "}" + post[k]; + expansions.push(expansion); + } + } else { + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(",") >= 0; + if (!isSequence && !isOptions) { + if (m.post.match(/,(?!,).*\}/)) { + str = m.pre + "{" + m.body + escClose2 + m.post; + return expand4(str, max, true); + } + return [str]; + } + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts2(m.body); + if (n.length === 1) { + n = expand4(n[0], max, false).map(embrace2); + if (n.length === 1) { + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + var N; + if (isSequence) { + var x = numeric2(n[0]); + var y = numeric2(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 ? Math.max(Math.abs(numeric2(n[2])), 1) : 1; + var test = lte2; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte2; + } + var pad = n.some(isPadded2); + N = []; + for (var i = x; test(i, y) && N.length < max; i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === "\\") + c = ""; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join("0"); + if (i < 0) + c = "-" + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = []; + for (var j = 0; j < n.length; j++) { + N.push.apply(N, expand4(n[j], max, false)); + } + } + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length && expansions.length < max; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + } + return expansions; + } + } +}); + +// +var require_brace_expressions = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseClass = void 0; + var posixClasses2 = { + "[:alnum:]": ["\\p{L}\\p{Nl}\\p{Nd}", true], + "[:alpha:]": ["\\p{L}\\p{Nl}", true], + "[:ascii:]": ["\\x00-\\x7f", false], + "[:blank:]": ["\\p{Zs}\\t", true], + "[:cntrl:]": ["\\p{Cc}", true], + "[:digit:]": ["\\p{Nd}", true], + "[:graph:]": ["\\p{Z}\\p{C}", true, true], + "[:lower:]": ["\\p{Ll}", true], + "[:print:]": ["\\p{C}", true], + "[:punct:]": ["\\p{P}", true], + "[:space:]": ["\\p{Z}\\t\\r\\n\\v\\f", true], + "[:upper:]": ["\\p{Lu}", true], + "[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true], + "[:xdigit:]": ["A-Fa-f0-9", false] + }; + var braceEscape2 = (s) => s.replace(/[[\]\\-]/g, "\\$&"); + var regexpEscape2 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + var rangesToString2 = (ranges) => ranges.join(""); + var parseClass2 = (glob, position) => { + const pos = position; + if (glob.charAt(pos) !== "[") { + throw new Error("not in a brace expression"); + } + const ranges = []; + const negs = []; + let i = pos + 1; + let sawStart = false; + let uflag = false; + let escaping = false; + let negate = false; + let endPos = pos; + let rangeStart = ""; + WHILE: + while (i < glob.length) { + const c = glob.charAt(i); + if ((c === "!" || c === "^") && i === pos + 1) { + negate = true; + i++; + continue; + } + if (c === "]" && sawStart && !escaping) { + endPos = i + 1; + break; + } + sawStart = true; + if (c === "\\") { + if (!escaping) { + escaping = true; + i++; + continue; + } + } + if (c === "[" && !escaping) { + for (const [cls, [unip, u, neg]] of Object.entries(posixClasses2)) { + if (glob.startsWith(cls, i)) { + if (rangeStart) { + return ["$.", false, glob.length - pos, true]; + } + i += cls.length; + if (neg) + negs.push(unip); + else + ranges.push(unip); + uflag = uflag || u; + continue WHILE; + } + } + } + escaping = false; + if (rangeStart) { + if (c > rangeStart) { + ranges.push(braceEscape2(rangeStart) + "-" + braceEscape2(c)); + } else if (c === rangeStart) { + ranges.push(braceEscape2(c)); + } + rangeStart = ""; + i++; + continue; + } + if (glob.startsWith("-]", i + 1)) { + ranges.push(braceEscape2(c + "-")); + i += 2; + continue; + } + if (glob.startsWith("-", i + 1)) { + rangeStart = c; + i += 2; + continue; + } + ranges.push(braceEscape2(c)); + i++; + } + if (endPos < i) { + return ["", false, 0, false]; + } + if (!ranges.length && !negs.length) { + return ["$.", false, glob.length - pos, true]; + } + if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) { + const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; + return [regexpEscape2(r), false, endPos - pos, false]; + } + const sranges = "[" + (negate ? "^" : "") + rangesToString2(ranges) + "]"; + const snegs = "[" + (negate ? "" : "^") + rangesToString2(negs) + "]"; + const comb = ranges.length && negs.length ? "(" + sranges + "|" + snegs + ")" : ranges.length ? sranges : snegs; + return [comb, uflag, endPos - pos, true]; + }; + exports.parseClass = parseClass2; + } +}); + +// +var require_escape = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.escape = void 0; + var escape3 = (s, { windowsPathsNoEscape = false } = {}) => { + return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&"); + }; + exports.escape = escape3; + } +}); + +// +var require_unescape = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.unescape = void 0; + var unescape2 = (s, { windowsPathsNoEscape = false } = {}) => { + return windowsPathsNoEscape ? s.replace(/\[([^\/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1"); + }; + exports.unescape = unescape2; + } +}); + +// +var require_cjs = __commonJS({ + ""(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.unescape = exports.escape = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0; + var brace_expansion_1 = __importDefault(require_brace_expansion()); + var brace_expressions_js_1 = require_brace_expressions(); + var escape_js_1 = require_escape(); + var unescape_js_1 = require_unescape(); + var minimatch2 = (p, pattern, options = {}) => { + assertValidPattern2(pattern); + if (!options.nocomment && pattern.charAt(0) === "#") { + return false; + } + return new Minimatch2(pattern, options).match(p); + }; + exports.minimatch = minimatch2; + exports.default = exports.minimatch; + var starDotExtRE2 = /^\*+([^+@!?\*\[\(]*)$/; + var starDotExtTest2 = (ext3) => (f) => !f.startsWith(".") && f.endsWith(ext3); + var starDotExtTestDot2 = (ext3) => (f) => f.endsWith(ext3); + var starDotExtTestNocase2 = (ext3) => { + ext3 = ext3.toLowerCase(); + return (f) => !f.startsWith(".") && f.toLowerCase().endsWith(ext3); + }; + var starDotExtTestNocaseDot2 = (ext3) => { + ext3 = ext3.toLowerCase(); + return (f) => f.toLowerCase().endsWith(ext3); + }; + var starDotStarRE2 = /^\*+\.\*+$/; + var starDotStarTest2 = (f) => !f.startsWith(".") && f.includes("."); + var starDotStarTestDot2 = (f) => f !== "." && f !== ".." && f.includes("."); + var dotStarRE2 = /^\.\*+$/; + var dotStarTest2 = (f) => f !== "." && f !== ".." && f.startsWith("."); + var starRE2 = /^\*+$/; + var starTest2 = (f) => f.length !== 0 && !f.startsWith("."); + var starTestDot2 = (f) => f.length !== 0 && f !== "." && f !== ".."; + var qmarksRE2 = /^\?+([^+@!?\*\[\(]*)?$/; + var qmarksTestNocase2 = ([$0, ext3 = ""]) => { + const noext = qmarksTestNoExt2([$0]); + if (!ext3) + return noext; + ext3 = ext3.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext3); + }; + var qmarksTestNocaseDot2 = ([$0, ext3 = ""]) => { + const noext = qmarksTestNoExtDot2([$0]); + if (!ext3) + return noext; + ext3 = ext3.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext3); + }; + var qmarksTestDot2 = ([$0, ext3 = ""]) => { + const noext = qmarksTestNoExtDot2([$0]); + return !ext3 ? noext : (f) => noext(f) && f.endsWith(ext3); + }; + var qmarksTest2 = ([$0, ext3 = ""]) => { + const noext = qmarksTestNoExt2([$0]); + return !ext3 ? noext : (f) => noext(f) && f.endsWith(ext3); + }; + var qmarksTestNoExt2 = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && !f.startsWith("."); + }; + var qmarksTestNoExtDot2 = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && f !== "." && f !== ".."; + }; + var defaultPlatform2 = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix"; + var path5 = { + win32: { sep: "\\" }, + posix: { sep: "/" } + }; + exports.sep = defaultPlatform2 === "win32" ? path5.win32.sep : path5.posix.sep; + exports.minimatch.sep = exports.sep; + exports.GLOBSTAR = Symbol("globstar **"); + exports.minimatch.GLOBSTAR = exports.GLOBSTAR; + var plTypes = { + "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, + "?": { open: "(?:", close: ")?" }, + "+": { open: "(?:", close: ")+" }, + "*": { open: "(?:", close: ")*" }, + "@": { open: "(?:", close: ")" } + }; + var qmark3 = "[^/]"; + var star3 = qmark3 + "*?"; + var twoStarDot2 = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; + var twoStarNoDot2 = "(?:(?!(?:\\/|^)\\.).)*?"; + var charSet = (s) => s.split("").reduce((set2, c) => { + set2[c] = true; + return set2; + }, {}); + var reSpecials2 = charSet("().*{}+?[]^$\\!"); + var addPatternStartSet = charSet("[.("); + var filter2 = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options); + exports.filter = filter2; + exports.minimatch.filter = exports.filter; + var ext2 = (a, b = {}) => Object.assign({}, a, b); + var defaults3 = (def) => { + if (!def || typeof def !== "object" || !Object.keys(def).length) { + return exports.minimatch; + } + const orig = exports.minimatch; + const m = (p, pattern, options = {}) => orig(p, pattern, ext2(def, options)); + return Object.assign(m, { + Minimatch: class Minimatch extends orig.Minimatch { + constructor(pattern, options = {}) { + super(pattern, ext2(def, options)); + } + static defaults(options) { + return orig.defaults(ext2(def, options)).Minimatch; + } + }, + unescape: (s, options = {}) => orig.unescape(s, ext2(def, options)), + escape: (s, options = {}) => orig.escape(s, ext2(def, options)), + filter: (pattern, options = {}) => orig.filter(pattern, ext2(def, options)), + defaults: (options) => orig.defaults(ext2(def, options)), + makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext2(def, options)), + braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext2(def, options)), + match: (list, pattern, options = {}) => orig.match(list, pattern, ext2(def, options)), + sep: orig.sep, + GLOBSTAR: exports.GLOBSTAR + }); + }; + exports.defaults = defaults3; + exports.minimatch.defaults = exports.defaults; + var braceExpand2 = (pattern, options = {}) => { + assertValidPattern2(pattern); + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + return [pattern]; + } + return (0, brace_expansion_1.default)(pattern); + }; + exports.braceExpand = braceExpand2; + exports.minimatch.braceExpand = exports.braceExpand; + var MAX_PATTERN_LENGTH2 = 1024 * 64; + var assertValidPattern2 = (pattern) => { + if (typeof pattern !== "string") { + throw new TypeError("invalid pattern"); + } + if (pattern.length > MAX_PATTERN_LENGTH2) { + throw new TypeError("pattern is too long"); + } + }; + var makeRe2 = (pattern, options = {}) => new Minimatch2(pattern, options).makeRe(); + exports.makeRe = makeRe2; + exports.minimatch.makeRe = exports.makeRe; + var match2 = (list, pattern, options = {}) => { + const mm = new Minimatch2(pattern, options); + list = list.filter((f) => mm.match(f)); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; + }; + exports.match = match2; + exports.minimatch.match = exports.match; + var globUnescape = (s) => s.replace(/\\(.)/g, "$1"); + var globMagic2 = /[?*]|[+@!]\(.*?\)|\[|\]/; + var regExpEscape3 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + var Minimatch2 = class { + options; + set; + pattern; + windowsPathsNoEscape; + nonegate; + negate; + comment; + empty; + preserveMultipleSlashes; + partial; + globSet; + globParts; + nocase; + isWindows; + platform; + windowsNoMagicRoot; + regexp; + maxGlobstarRecursion; + constructor(pattern, options = {}) { + assertValidPattern2(pattern); + options = options || {}; + this.options = options; + this.pattern = pattern; + this.platform = options.platform || defaultPlatform2; + this.isWindows = this.platform === "win32"; + this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; + if (this.windowsPathsNoEscape) { + this.pattern = this.pattern.replace(/\\/g, "/"); + } + this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; + this.regexp = null; + this.negate = false; + this.nonegate = !!options.nonegate; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.nocase = !!this.options.nocase; + this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase); + this.maxGlobstarRecursion = options.maxGlobstarRecursion !== void 0 ? options.maxGlobstarRecursion : 200; + this.globSet = []; + this.globParts = []; + this.set = []; + this.make(); + } + hasMagic() { + if (this.options.magicalBraces && this.set.length > 1) { + return true; + } + for (const pattern of this.set) { + for (const part of pattern) { + if (typeof part !== "string") + return true; + } + } + return false; + } + debug(..._) { + } + make() { + const pattern = this.pattern; + const options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + this.parseNegate(); + this.globSet = [...new Set(this.braceExpand())]; + if (options.debug) { + this.debug = (...args) => console.error(...args); + } + this.debug(this.pattern, this.globSet); + const rawGlobParts = this.globSet.map((s) => this.slashSplit(s)); + this.globParts = this.preprocess(rawGlobParts); + this.debug(this.pattern, this.globParts); + let set2 = this.globParts.map((s, _, __) => { + if (this.isWindows && this.windowsNoMagicRoot) { + const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic2.test(s[2])) && !globMagic2.test(s[3]); + const isDrive = /^[a-z]:/i.test(s[0]); + if (isUNC) { + return [...s.slice(0, 4), ...s.slice(4).map((ss) => this.parse(ss))]; + } else if (isDrive) { + return [s[0], ...s.slice(1).map((ss) => this.parse(ss))]; + } + } + return s.map((ss) => this.parse(ss)); + }); + this.debug(this.pattern, set2); + this.set = set2.filter((s) => s.indexOf(false) === -1); + if (this.isWindows) { + for (let i = 0; i < this.set.length; i++) { + const p = this.set[i]; + if (p[0] === "" && p[1] === "" && this.globParts[i][2] === "?" && typeof p[3] === "string" && /^[a-z]:$/i.test(p[3])) { + p[2] = "?"; + } + } + } + this.debug(this.pattern, this.set); + } + // various transforms to equivalent pattern sets that are + // faster to process in a filesystem walk. The goal is to + // eliminate what we can, and push all ** patterns as far + // to the right as possible, even if it increases the number + // of patterns that we have to process. + preprocess(globParts) { + if (this.options.noglobstar) { + for (let i = 0; i < globParts.length; i++) { + for (let j = 0; j < globParts[i].length; j++) { + if (globParts[i][j] === "**") { + globParts[i][j] = "*"; + } + } + } + } + const { optimizationLevel = 1 } = this.options; + if (optimizationLevel >= 2) { + globParts = this.firstPhasePreProcess(globParts); + globParts = this.secondPhasePreProcess(globParts); + } else if (optimizationLevel >= 1) { + globParts = this.levelOneOptimize(globParts); + } else { + globParts = this.adjascentGlobstarOptimize(globParts); + } + return globParts; + } + // just get rid of adjascent ** portions + adjascentGlobstarOptimize(globParts) { + return globParts.map((parts) => { + let gs = -1; + while (-1 !== (gs = parts.indexOf("**", gs + 1))) { + let i = gs; + while (parts[i + 1] === "**") { + i++; + } + if (i !== gs) { + parts.splice(gs, i - gs); + } + } + return parts; + }); + } + // get rid of adjascent ** and resolve .. portions + levelOneOptimize(globParts) { + return globParts.map((parts) => { + parts = parts.reduce((set2, part) => { + const prev = set2[set2.length - 1]; + if (part === "**" && prev === "**") { + return set2; + } + if (part === "..") { + if (prev && prev !== ".." && prev !== "." && prev !== "**") { + set2.pop(); + return set2; + } + } + set2.push(part); + return set2; + }, []); + return parts.length === 0 ? [""] : parts; + }); + } + levelTwoFileOptimize(parts) { + if (!Array.isArray(parts)) { + parts = this.slashSplit(parts); + } + let didSomething = false; + do { + didSomething = false; + if (!this.preserveMultipleSlashes) { + for (let i = 1; i < parts.length - 1; i++) { + const p = parts[i]; + if (i === 1 && p === "" && parts[0] === "") + continue; + if (p === "." || p === "") { + didSomething = true; + parts.splice(i, 1); + i--; + } + } + if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) { + didSomething = true; + parts.pop(); + } + } + let dd = 0; + while (-1 !== (dd = parts.indexOf("..", dd + 1))) { + const p = parts[dd - 1]; + if (p && p !== "." && p !== ".." && p !== "**") { + didSomething = true; + parts.splice(dd - 1, 2); + dd -= 2; + } + } + } while (didSomething); + return parts.length === 0 ? [""] : parts; + } + // First phase: single-pattern processing + //
 is 1 or more portions
+      //  is 1 or more portions
+      // 

is any portion other than ., .., '', or ** + // is . or '' + // + // **/.. is *brutal* for filesystem walking performance, because + // it effectively resets the recursive walk each time it occurs, + // and ** cannot be reduced out by a .. pattern part like a regexp + // or most strings (other than .., ., and '') can be. + // + //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/} + //

// -> 
/
+      // 
/

/../ ->

/
+      // **/**/ -> **/
+      //
+      // **/*/ -> */**/ <== not valid because ** doesn't follow
+      // this WOULD be allowed if ** did follow symlinks, or * didn't
+      firstPhasePreProcess(globParts) {
+        let didSomething = false;
+        do {
+          didSomething = false;
+          for (let parts of globParts) {
+            let gs = -1;
+            while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
+              let gss = gs;
+              while (parts[gss + 1] === "**") {
+                gss++;
+              }
+              if (gss > gs) {
+                parts.splice(gs + 1, gss - gs);
+              }
+              let next = parts[gs + 1];
+              const p = parts[gs + 2];
+              const p2 = parts[gs + 3];
+              if (next !== "..")
+                continue;
+              if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") {
+                continue;
+              }
+              didSomething = true;
+              parts.splice(gs, 1);
+              const other = parts.slice(0);
+              other[gs] = "**";
+              globParts.push(other);
+              gs--;
+            }
+            if (!this.preserveMultipleSlashes) {
+              for (let i = 1; i < parts.length - 1; i++) {
+                const p = parts[i];
+                if (i === 1 && p === "" && parts[0] === "")
+                  continue;
+                if (p === "." || p === "") {
+                  didSomething = true;
+                  parts.splice(i, 1);
+                  i--;
+                }
+              }
+              if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
+                didSomething = true;
+                parts.pop();
+              }
+            }
+            let dd = 0;
+            while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
+              const p = parts[dd - 1];
+              if (p && p !== "." && p !== ".." && p !== "**") {
+                didSomething = true;
+                const needDot = dd === 1 && parts[dd + 1] === "**";
+                const splin = needDot ? ["."] : [];
+                parts.splice(dd - 1, 2, ...splin);
+                if (parts.length === 0)
+                  parts.push("");
+                dd -= 2;
+              }
+            }
+          }
+        } while (didSomething);
+        return globParts;
+      }
+      // second phase: multi-pattern dedupes
+      // {
/*/,
/

/} ->

/*/
+      // {
/,
/} -> 
/
+      // {
/**/,
/} -> 
/**/
+      //
+      // {
/**/,
/**/

/} ->

/**/
+      // ^-- not valid because ** doens't follow symlinks
+      secondPhasePreProcess(globParts) {
+        for (let i = 0; i < globParts.length - 1; i++) {
+          for (let j = i + 1; j < globParts.length; j++) {
+            const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
+            if (!matched)
+              continue;
+            globParts[i] = matched;
+            globParts[j] = [];
+          }
+        }
+        return globParts.filter((gs) => gs.length);
+      }
+      partsMatch(a, b, emptyGSMatch = false) {
+        let ai = 0;
+        let bi = 0;
+        let result = [];
+        let which2 = "";
+        while (ai < a.length && bi < b.length) {
+          if (a[ai] === b[bi]) {
+            result.push(which2 === "b" ? b[bi] : a[ai]);
+            ai++;
+            bi++;
+          } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) {
+            result.push(a[ai]);
+            ai++;
+          } else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) {
+            result.push(b[bi]);
+            bi++;
+          } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
+            if (which2 === "b")
+              return false;
+            which2 = "a";
+            result.push(a[ai]);
+            ai++;
+            bi++;
+          } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") {
+            if (which2 === "a")
+              return false;
+            which2 = "b";
+            result.push(b[bi]);
+            ai++;
+            bi++;
+          } else {
+            return false;
+          }
+        }
+        return a.length === b.length && result;
+      }
+      parseNegate() {
+        if (this.nonegate)
+          return;
+        const pattern = this.pattern;
+        let negate = false;
+        let negateOffset = 0;
+        for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) {
+          negate = !negate;
+          negateOffset++;
+        }
+        if (negateOffset)
+          this.pattern = pattern.slice(negateOffset);
+        this.negate = negate;
+      }
+      // set partial to true to test if, for example,
+      // "/a/b" matches the start of "/*/b/*/d"
+      // Partial means, if you run out of file before you run
+      // out of pattern, then that's fine, as long as all
+      // the parts match.
+      matchOne(file, pattern, partial = false) {
+        if (this.isWindows) {
+          const fileUNC = file[0] === "" && file[1] === "" && file[2] === "?" && typeof file[3] === "string" && /^[a-z]:$/i.test(file[3]);
+          const patternUNC = pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]);
+          if (fileUNC && patternUNC) {
+            const fd = file[3];
+            const pd = pattern[3];
+            if (fd.toLowerCase() === pd.toLowerCase()) {
+              file[3] = pd;
+            }
+          } else if (patternUNC && typeof file[0] === "string") {
+            const pd = pattern[3];
+            const fd = file[0];
+            if (pd.toLowerCase() === fd.toLowerCase()) {
+              pattern[3] = fd;
+              pattern = pattern.slice(3);
+            }
+          } else if (fileUNC && typeof pattern[0] === "string") {
+            const fd = file[3];
+            if (fd.toLowerCase() === pattern[0].toLowerCase()) {
+              pattern[0] = fd;
+              file = file.slice(3);
+            }
+          }
+        }
+        const { optimizationLevel = 1 } = this.options;
+        if (optimizationLevel >= 2) {
+          file = this.levelTwoFileOptimize(file);
+        }
+        this.debug("matchOne", this, { file, pattern });
+        this.debug("matchOne", file.length, pattern.length);
+        if (pattern.indexOf(exports.GLOBSTAR) !== -1) {
+          return this._matchGlobstar(file, pattern, partial, 0, 0);
+        }
+        return this._matchOne(file, pattern, partial, 0, 0);
+      }
+      _matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
+        let firstgs = -1;
+        for (let i = patternIndex; i < pattern.length; i++) {
+          if (pattern[i] === exports.GLOBSTAR) {
+            firstgs = i;
+            break;
+          }
+        }
+        let lastgs = -1;
+        for (let i = pattern.length - 1; i >= 0; i--) {
+          if (pattern[i] === exports.GLOBSTAR) {
+            lastgs = i;
+            break;
+          }
+        }
+        const head = pattern.slice(patternIndex, firstgs);
+        const body = partial ? pattern.slice(firstgs + 1) : pattern.slice(firstgs + 1, lastgs);
+        const tail = partial ? [] : pattern.slice(lastgs + 1);
+        if (head.length) {
+          const fileHead = file.slice(fileIndex, fileIndex + head.length);
+          if (!this._matchOne(fileHead, head, partial, 0, 0)) {
+            return false;
+          }
+          fileIndex += head.length;
+        }
+        let fileTailMatch = 0;
+        if (tail.length) {
+          if (tail.length + fileIndex > file.length)
+            return false;
+          const tailStart = file.length - tail.length;
+          if (this._matchOne(file, tail, partial, tailStart, 0)) {
+            fileTailMatch = tail.length;
+          } else {
+            if (file[file.length - 1] !== "" || fileIndex + tail.length === file.length) {
+              return false;
+            }
+            if (!this._matchOne(file, tail, partial, tailStart - 1, 0)) {
+              return false;
+            }
+            fileTailMatch = tail.length + 1;
+          }
+        }
+        if (!body.length) {
+          let sawSome = !!fileTailMatch;
+          for (let i = fileIndex; i < file.length - fileTailMatch; i++) {
+            const f = String(file[i]);
+            sawSome = true;
+            if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+              return false;
+            }
+          }
+          return partial || sawSome;
+        }
+        const bodySegments = [[[], 0]];
+        let currentBody = bodySegments[0];
+        let nonGsParts = 0;
+        const nonGsPartsSums = [0];
+        for (const b of body) {
+          if (b === exports.GLOBSTAR) {
+            nonGsPartsSums.push(nonGsParts);
+            currentBody = [[], 0];
+            bodySegments.push(currentBody);
+          } else {
+            currentBody[0].push(b);
+            nonGsParts++;
+          }
+        }
+        let idx = bodySegments.length - 1;
+        const fileLength = file.length - fileTailMatch;
+        for (const b of bodySegments) {
+          b[1] = fileLength - (nonGsPartsSums[idx--] + b[0].length);
+        }
+        return !!this._matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
+      }
+      // return false for "nope, not matching"
+      // return null for "not matching, cannot keep trying"
+      _matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
+        const bs = bodySegments[bodyIndex];
+        if (!bs) {
+          for (let i = fileIndex; i < file.length; i++) {
+            sawTail = true;
+            const f = file[i];
+            if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+              return false;
+            }
+          }
+          return sawTail;
+        }
+        const [body, after] = bs;
+        while (fileIndex <= after) {
+          const m = this._matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
+          if (m && globStarDepth < this.maxGlobstarRecursion) {
+            const sub = this._matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
+            if (sub !== false) {
+              return sub;
+            }
+          }
+          const f = file[fileIndex];
+          if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+            return false;
+          }
+          fileIndex++;
+        }
+        return partial || null;
+      }
+      _matchOne(file, pattern, partial, fileIndex, patternIndex) {
+        let fi;
+        let pi;
+        let fl;
+        let pl;
+        for (fi = fileIndex, pi = patternIndex, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+          this.debug("matchOne loop");
+          const p = pattern[pi];
+          const f = file[fi];
+          this.debug(pattern, p, f);
+          if (p === false || p === exports.GLOBSTAR) {
+            return false;
+          }
+          let hit;
+          if (typeof p === "string") {
+            hit = f === p;
+            this.debug("string match", p, f, hit);
+          } else {
+            hit = p.test(f);
+            this.debug("pattern match", p, f, hit);
+          }
+          if (!hit)
+            return false;
+        }
+        if (fi === fl && pi === pl) {
+          return true;
+        } else if (fi === fl) {
+          return partial;
+        } else if (pi === pl) {
+          return fi === fl - 1 && file[fi] === "";
+        } else {
+          throw new Error("wtf?");
+        }
+      }
+      braceExpand() {
+        return (0, exports.braceExpand)(this.pattern, this.options);
+      }
+      parse(pattern) {
+        assertValidPattern2(pattern);
+        const options = this.options;
+        if (pattern === "**")
+          return exports.GLOBSTAR;
+        if (pattern === "")
+          return "";
+        let m;
+        let fastTest = null;
+        if (m = pattern.match(starRE2)) {
+          fastTest = options.dot ? starTestDot2 : starTest2;
+        } else if (m = pattern.match(starDotExtRE2)) {
+          fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot2 : starDotExtTestNocase2 : options.dot ? starDotExtTestDot2 : starDotExtTest2)(m[1]);
+        } else if (m = pattern.match(qmarksRE2)) {
+          fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot2 : qmarksTestNocase2 : options.dot ? qmarksTestDot2 : qmarksTest2)(m);
+        } else if (m = pattern.match(starDotStarRE2)) {
+          fastTest = options.dot ? starDotStarTestDot2 : starDotStarTest2;
+        } else if (m = pattern.match(dotStarRE2)) {
+          fastTest = dotStarTest2;
+        }
+        let re = "";
+        let hasMagic = false;
+        let escaping = false;
+        const patternListStack = [];
+        const negativeLists = [];
+        let stateChar = false;
+        let uflag = false;
+        let pl;
+        let dotTravAllowed = pattern.charAt(0) === ".";
+        let dotFileAllowed = options.dot || dotTravAllowed;
+        const patternStart = () => dotTravAllowed ? "" : dotFileAllowed ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)";
+        const subPatternStart = (p) => p.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)";
+        const clearStateChar = () => {
+          if (stateChar) {
+            switch (stateChar) {
+              case "*":
+                re += star3;
+                hasMagic = true;
+                break;
+              case "?":
+                re += qmark3;
+                hasMagic = true;
+                break;
+              default:
+                re += "\\" + stateChar;
+                break;
+            }
+            this.debug("clearStateChar %j %j", stateChar, re);
+            stateChar = false;
+          }
+        };
+        for (let i = 0, c; i < pattern.length && (c = pattern.charAt(i)); i++) {
+          this.debug("%s	%s %s %j", pattern, i, re, c);
+          if (escaping) {
+            if (c === "/") {
+              return false;
+            }
+            if (reSpecials2[c]) {
+              re += "\\";
+            }
+            re += c;
+            escaping = false;
+            continue;
+          }
+          switch (c) {
+            case "/": {
+              return false;
+            }
+            case "\\":
+              clearStateChar();
+              escaping = true;
+              continue;
+            case "?":
+            case "*":
+            case "+":
+            case "@":
+            case "!":
+              this.debug("%s	%s %s %j <-- stateChar", pattern, i, re, c);
+              if (c === "*" && stateChar === "*")
+                continue;
+              this.debug("call clearStateChar %j", stateChar);
+              clearStateChar();
+              stateChar = c;
+              if (options.noext)
+                clearStateChar();
+              continue;
+            case "(": {
+              if (!stateChar) {
+                re += "\\(";
+                continue;
+              }
+              const plEntry = {
+                type: stateChar,
+                start: i - 1,
+                reStart: re.length,
+                open: plTypes[stateChar].open,
+                close: plTypes[stateChar].close
+              };
+              this.debug(this.pattern, "	", plEntry);
+              patternListStack.push(plEntry);
+              re += plEntry.open;
+              if (plEntry.start === 0 && plEntry.type !== "!") {
+                dotTravAllowed = true;
+                re += subPatternStart(pattern.slice(i + 1));
+              }
+              this.debug("plType %j %j", stateChar, re);
+              stateChar = false;
+              continue;
+            }
+            case ")": {
+              const plEntry = patternListStack[patternListStack.length - 1];
+              if (!plEntry) {
+                re += "\\)";
+                continue;
+              }
+              patternListStack.pop();
+              clearStateChar();
+              hasMagic = true;
+              pl = plEntry;
+              re += pl.close;
+              if (pl.type === "!") {
+                negativeLists.push(Object.assign(pl, { reEnd: re.length }));
+              }
+              continue;
+            }
+            case "|": {
+              const plEntry = patternListStack[patternListStack.length - 1];
+              if (!plEntry) {
+                re += "\\|";
+                continue;
+              }
+              clearStateChar();
+              re += "|";
+              if (plEntry.start === 0 && plEntry.type !== "!") {
+                dotTravAllowed = true;
+                re += subPatternStart(pattern.slice(i + 1));
+              }
+              continue;
+            }
+            case "[":
+              clearStateChar();
+              const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(pattern, i);
+              if (consumed) {
+                re += src;
+                uflag = uflag || needUflag;
+                i += consumed - 1;
+                hasMagic = hasMagic || magic;
+              } else {
+                re += "\\[";
+              }
+              continue;
+            case "]":
+              re += "\\" + c;
+              continue;
+            default:
+              clearStateChar();
+              re += regExpEscape3(c);
+              break;
+          }
+        }
+        for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
+          let tail;
+          tail = re.slice(pl.reStart + pl.open.length);
+          this.debug(this.pattern, "setting tail", re, pl);
+          tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => {
+            if (!$2) {
+              $2 = "\\";
+            }
+            return $1 + $1 + $2 + "|";
+          });
+          this.debug("tail=%j\n   %s", tail, tail, pl, re);
+          const t = pl.type === "*" ? star3 : pl.type === "?" ? qmark3 : "\\" + pl.type;
+          hasMagic = true;
+          re = re.slice(0, pl.reStart) + t + "\\(" + tail;
+        }
+        clearStateChar();
+        if (escaping) {
+          re += "\\\\";
+        }
+        const addPatternStart2 = addPatternStartSet[re.charAt(0)];
+        for (let n = negativeLists.length - 1; n > -1; n--) {
+          const nl = negativeLists[n];
+          const nlBefore = re.slice(0, nl.reStart);
+          const nlFirst = re.slice(nl.reStart, nl.reEnd - 8);
+          let nlAfter = re.slice(nl.reEnd);
+          const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter;
+          const closeParensBefore = nlBefore.split(")").length;
+          const openParensBefore = nlBefore.split("(").length - closeParensBefore;
+          let cleanAfter = nlAfter;
+          for (let i = 0; i < openParensBefore; i++) {
+            cleanAfter = cleanAfter.replace(/\)[+*?]?/, "");
+          }
+          nlAfter = cleanAfter;
+          const dollar = nlAfter === "" ? "(?:$|\\/)" : "";
+          re = nlBefore + nlFirst + nlAfter + dollar + nlLast;
+        }
+        if (re !== "" && hasMagic) {
+          re = "(?=.)" + re;
+        }
+        if (addPatternStart2) {
+          re = patternStart() + re;
+        }
+        if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {
+          hasMagic = pattern.toUpperCase() !== pattern.toLowerCase();
+        }
+        if (!hasMagic) {
+          return globUnescape(re);
+        }
+        const flags = (options.nocase ? "i" : "") + (uflag ? "u" : "");
+        try {
+          const ext3 = fastTest ? {
+            _glob: pattern,
+            _src: re,
+            test: fastTest
+          } : {
+            _glob: pattern,
+            _src: re
+          };
+          return Object.assign(new RegExp("^" + re + "$", flags), ext3);
+        } catch (er) {
+          this.debug("invalid regexp", er);
+          return new RegExp("$.");
+        }
+      }
+      makeRe() {
+        if (this.regexp || this.regexp === false)
+          return this.regexp;
+        const set2 = this.set;
+        if (!set2.length) {
+          this.regexp = false;
+          return this.regexp;
+        }
+        const options = this.options;
+        const twoStar = options.noglobstar ? star3 : options.dot ? twoStarDot2 : twoStarNoDot2;
+        const flags = options.nocase ? "i" : "";
+        let re = set2.map((pattern) => {
+          const pp = pattern.map((p) => typeof p === "string" ? regExpEscape3(p) : p === exports.GLOBSTAR ? exports.GLOBSTAR : p._src);
+          pp.forEach((p, i) => {
+            const next = pp[i + 1];
+            const prev = pp[i - 1];
+            if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {
+              return;
+            }
+            if (prev === void 0) {
+              if (next !== void 0 && next !== exports.GLOBSTAR) {
+                pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
+              } else {
+                pp[i] = twoStar;
+              }
+            } else if (next === void 0) {
+              pp[i - 1] = prev + "(?:\\/|" + twoStar + ")?";
+            } else if (next !== exports.GLOBSTAR) {
+              pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
+              pp[i + 1] = exports.GLOBSTAR;
+            }
+          });
+          return pp.filter((p) => p !== exports.GLOBSTAR).join("/");
+        }).join("|");
+        re = "^(?:" + re + ")$";
+        if (this.negate)
+          re = "^(?!" + re + ").*$";
+        try {
+          this.regexp = new RegExp(re, flags);
+        } catch (ex) {
+          this.regexp = false;
+        }
+        return this.regexp;
+      }
+      slashSplit(p) {
+        if (this.preserveMultipleSlashes) {
+          return p.split("/");
+        } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
+          return ["", ...p.split(/\/+/)];
+        } else {
+          return p.split(/\/+/);
+        }
+      }
+      match(f, partial = this.partial) {
+        this.debug("match", f, this.pattern);
+        if (this.comment) {
+          return false;
+        }
+        if (this.empty) {
+          return f === "";
+        }
+        if (f === "/" && partial) {
+          return true;
+        }
+        const options = this.options;
+        if (this.isWindows) {
+          f = f.split("\\").join("/");
+        }
+        const ff = this.slashSplit(f);
+        this.debug(this.pattern, "split", ff);
+        const set2 = this.set;
+        this.debug(this.pattern, "set", set2);
+        let filename = ff[ff.length - 1];
+        if (!filename) {
+          for (let i = ff.length - 2; !filename && i >= 0; i--) {
+            filename = ff[i];
+          }
+        }
+        for (let i = 0; i < set2.length; i++) {
+          const pattern = set2[i];
+          let file = ff;
+          if (options.matchBase && pattern.length === 1) {
+            file = [filename];
+          }
+          const hit = this.matchOne(file, pattern, partial);
+          if (hit) {
+            if (options.flipNegate) {
+              return true;
+            }
+            return !this.negate;
+          }
+        }
+        if (options.flipNegate) {
+          return false;
+        }
+        return this.negate;
+      }
+      static defaults(def) {
+        return exports.minimatch.defaults(def).Minimatch;
+      }
+    };
+    exports.Minimatch = Minimatch2;
+    var escape_js_2 = require_escape();
+    Object.defineProperty(exports, "escape", { enumerable: true, get: function() {
+      return escape_js_2.escape;
+    } });
+    var unescape_js_2 = require_unescape();
+    Object.defineProperty(exports, "unescape", { enumerable: true, get: function() {
+      return unescape_js_2.unescape;
+    } });
+    exports.minimatch.Minimatch = Minimatch2;
+    exports.minimatch.escape = escape_js_1.escape;
+    exports.minimatch.unescape = unescape_js_1.unescape;
+  }
+});
+
+// 
+var require_index_cjs = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    var index_js_1 = __importDefault(require_cjs());
+    module.exports = Object.assign(index_js_1.default, { default: index_js_1.default, minimatch: index_js_1.default });
+  }
+});
+
+// 
+var require_folder_hash = __commonJS({
+  ""(exports, module) {
+    var crypto = __require("crypto");
+    var debug2 = require_src();
+    var minimatch2 = require_index_cjs();
+    var path5 = __require("path");
+    var defaultOptions2 = {
+      algo: "sha1",
+      // see crypto.getHashes() for options
+      algoOptions: {},
+      encoding: "base64",
+      // 'base64', 'base64url', 'hex' or 'binary'
+      files: {
+        exclude: [],
+        include: [],
+        matchBasename: true,
+        matchPath: false,
+        ignoreBasename: false,
+        ignoreRootName: false
+      },
+      folders: {
+        exclude: [],
+        include: [],
+        matchBasename: true,
+        matchPath: false,
+        ignoreBasename: false,
+        ignoreRootName: false
+      },
+      symbolicLinks: {
+        include: true,
+        ignoreBasename: false,
+        ignoreTargetPath: true,
+        ignoreTargetContent: false,
+        ignoreTargetContentAfterError: false
+      }
+    };
+    var log = {
+      match: debug2("fhash:match"),
+      params: (params2) => {
+        debug2("fhash:parameters")(params2);
+        return params2;
+      },
+      err: debug2("fhash:err"),
+      symlink: debug2("fhash:symlink"),
+      queue: debug2("fhash:queue"),
+      glob: debug2("fhash:glob")
+    };
+    function prep(fs3) {
+      let queue = [];
+      let queueTimer = void 0;
+      function hashElement2(name, dir, options, callback) {
+        callback = arguments[arguments.length - 1];
+        return parseParameters(arguments).then(({ basename: basename2, dir: dir2, options: options2 }) => {
+          options2.skipMatching = true;
+          return fs3.promises.lstat(path5.join(dir2, basename2)).then((stats) => {
+            stats.name = basename2;
+            return stats;
+          }).then((stats) => hashElementPromise(stats, dir2, options2, true));
+        }).then((result) => {
+          if (isFunction2(callback)) {
+            return callback(void 0, result);
+          } else {
+            return result;
+          }
+        }).catch((reason) => {
+          log.err("Fatal error:", reason);
+          if (isFunction2(callback)) {
+            return callback(reason);
+          } else {
+            throw reason;
+          }
+        });
+      }
+      function hashElementPromise(stats, dirname3, options, isRootElement = false) {
+        const name = stats.name;
+        let promise = void 0;
+        if (stats.isDirectory()) {
+          promise = hashFolderPromise(name, dirname3, options, isRootElement);
+        } else if (stats.isFile()) {
+          promise = hashFilePromise(name, dirname3, options, isRootElement);
+        } else if (stats.isSymbolicLink()) {
+          promise = hashSymLinkPromise(name, dirname3, options, isRootElement);
+        } else {
+          log.err("hashElementPromise cannot handle ", stats);
+          return Promise.resolve({ name, hash: "Error: unknown element type" });
+        }
+        return promise.catch((err) => {
+          if (err.code && (err.code === "EMFILE" || err.code === "ENFILE")) {
+            log.queue(`queued ${dirname3}/${name} because of ${err.code}`);
+            const promise2 = new Promise((resolve5, reject) => {
+              queue.push(() => {
+                log.queue(`Will processs queued ${dirname3}/${name}`);
+                return hashElementPromise(stats, dirname3, options, isRootElement).then((ok) => resolve5(ok)).catch((err2) => reject(err2));
+              });
+            });
+            if (queueTimer === void 0) {
+              queueTimer = setTimeout(processQueue, 0);
+            }
+            return promise2;
+          }
+          throw err;
+        });
+      }
+      function processQueue() {
+        queueTimer = void 0;
+        const runnables = queue;
+        queue = [];
+        runnables.forEach((run2) => run2());
+      }
+      async function hashFolderPromise(name, dir, options, isRootElement = false) {
+        const folderPath = path5.join(dir, name);
+        let ignoreBasenameOnce = options.ignoreBasenameOnce;
+        delete options.ignoreBasenameOnce;
+        if (options.skipMatching) {
+          log.match(`skipped '${folderPath}'`);
+          delete options.skipMatching;
+        } else if (ignore(name, folderPath, options.folders)) {
+          return void 0;
+        }
+        const files = await fs3.promises.readdir(folderPath, { withFileTypes: true });
+        const children = await Promise.all(
+          files.sort((a, b) => a.name.localeCompare(b.name)).map((child) => hashElementPromise(child, folderPath, options))
+        );
+        if (ignoreBasenameOnce)
+          options.ignoreBasenameOnce = true;
+        const hash = new HashedFolder(name, children.filter(notUndefined), options, isRootElement);
+        return hash;
+      }
+      function hashFilePromise(name, dir, options, isRootElement = false) {
+        const filePath = path5.join(dir, name);
+        if (options.skipMatching) {
+          log.match(`skipped '${filePath}'`);
+          delete options.skipMatching;
+        } else if (ignore(name, filePath, options.files)) {
+          return Promise.resolve(void 0);
+        }
+        return new Promise((resolve5, reject) => {
+          try {
+            const hash = crypto.createHash(options.algo, options.algoOptions);
+            if (options.files.ignoreBasename || options.ignoreBasenameOnce || isRootElement && options.files.ignoreRootName) {
+              delete options.ignoreBasenameOnce;
+              log.match(`omitted name of ${filePath} from hash`);
+            } else {
+              hash.update(name);
+            }
+            const f = fs3.createReadStream(filePath);
+            f.on("error", (err) => {
+              reject(err);
+            });
+            f.pipe(hash, { end: false });
+            f.on("end", () => {
+              const hashedFile = new HashedFile(name, hash, options.encoding);
+              return resolve5(hashedFile);
+            });
+          } catch (ex) {
+            return reject(ex);
+          }
+        });
+      }
+      async function hashSymLinkPromise(name, dir, options, isRootElement = false) {
+        const target = await fs3.promises.readlink(path5.join(dir, name));
+        log.symlink(`handling symbolic link ${name} -> ${target}`);
+        if (options.symbolicLinks.include) {
+          if (options.symbolicLinks.ignoreTargetContent) {
+            return symLinkIgnoreTargetContent(name, target, options, isRootElement);
+          } else {
+            return symLinkResolve(name, dir, target, options, isRootElement);
+          }
+        } else {
+          log.symlink("skipping symbolic link");
+          return Promise.resolve(void 0);
+        }
+      }
+      function symLinkIgnoreTargetContent(name, target, options, isRootElement) {
+        delete options.skipMatching;
+        log.symlink("ignoring symbolic link target content");
+        const hash = crypto.createHash(options.algo, options.algoOptions);
+        if (!options.symbolicLinks.ignoreBasename && !(isRootElement && options.files.ignoreRootName)) {
+          log.symlink("hash basename");
+          hash.update(name);
+        }
+        if (!options.symbolicLinks.ignoreTargetPath) {
+          log.symlink("hash targetpath");
+          hash.update(target);
+        }
+        return Promise.resolve(new HashedFile(name, hash, options.encoding));
+      }
+      async function symLinkResolve(name, dir, target, options, isRootElement) {
+        delete options.skipMatching;
+        if (options.symbolicLinks.ignoreBasename) {
+          options.ignoreBasenameOnce = true;
+        }
+        try {
+          const stats = await fs3.promises.stat(path5.join(dir, name));
+          stats.name = name;
+          const temp = await hashElementPromise(stats, dir, options, isRootElement);
+          if (!options.symbolicLinks.ignoreTargetPath) {
+            const hash = crypto.createHash(options.algo, options.algoOptions);
+            hash.update(temp.hash);
+            log.symlink("hash targetpath");
+            hash.update(target);
+            temp.hash = hash.digest(options.encoding);
+          }
+          return temp;
+        } catch (err) {
+          if (options.symbolicLinks.ignoreTargetContentAfterError) {
+            log.symlink(`Ignoring error "${err.code}" when hashing symbolic link ${name}`, err);
+            const hash = crypto.createHash(options.algo, options.algoOptions);
+            if (!options.symbolicLinks.ignoreBasename && !(isRootElement && options.files.ignoreRootName)) {
+              hash.update(name);
+            }
+            if (!options.symbolicLinks.ignoreTargetPath) {
+              hash.update(target);
+            }
+            return new HashedFile(name, hash, options.encoding);
+          } else {
+            log.symlink(`Error "${err.code}": When hashing symbolic link ${name}`, err);
+            throw err;
+          }
+        }
+      }
+      function ignore(name, path6, rules) {
+        if (rules.exclude) {
+          if (rules.matchBasename && rules.exclude(name)) {
+            log.match(`exclude basename '${name}'`);
+            return true;
+          } else if (rules.matchPath && rules.exclude(path6)) {
+            log.match(`exclude path '${path6}'`);
+            return true;
+          }
+        }
+        if (rules.include) {
+          if (rules.matchBasename && rules.include(name)) {
+            log.match(`include basename '${name}'`);
+            return false;
+          } else if (rules.matchPath && rules.include(path6)) {
+            log.match(`include path '${path6}'`);
+            return false;
+          } else {
+            log.match(`include rule failed for path '${path6}'`);
+            return true;
+          }
+        }
+        log.match(`Will not ignore unmatched '${path6}'`);
+        return false;
+      }
+      return hashElement2;
+    }
+    function parseParameters(args) {
+      let basename2 = args[0], dir = args[1], options_ = args[2];
+      if (!isString(basename2)) {
+        return Promise.reject(new TypeError("First argument must be a string"));
+      }
+      if (!isString(dir)) {
+        dir = path5.dirname(basename2);
+        basename2 = path5.basename(basename2);
+        options_ = args[1];
+      }
+      if (!isObject(options_))
+        options_ = {};
+      const options = {
+        algo: options_.algo || defaultOptions2.algo,
+        algoOptions: options_.algoOptions || defaultOptions2.algoOptions,
+        encoding: options_.encoding || defaultOptions2.encoding,
+        files: Object.assign({}, defaultOptions2.files, options_.files),
+        folders: Object.assign({}, defaultOptions2.folders, options_.folders),
+        match: Object.assign({}, defaultOptions2.match, options_.match),
+        symbolicLinks: Object.assign({}, defaultOptions2.symbolicLinks, options_.symbolicLinks)
+      };
+      options.files.exclude = reduceGlobPatterns(options.files.exclude, "exclude files");
+      options.files.include = reduceGlobPatterns(options.files.include, "include files");
+      options.folders.exclude = reduceGlobPatterns(options.folders.exclude, "exclude folders");
+      options.folders.include = reduceGlobPatterns(options.folders.include, "include folders");
+      return Promise.resolve(log.params({ basename: basename2, dir, options }));
+    }
+    var HashedFolder = function HashedFolder2(name, children, options, isRootElement = false) {
+      this.name = name;
+      this.children = children;
+      const hash = crypto.createHash(options.algo, options.algoOptions);
+      if (options.folders.ignoreBasename || options.ignoreBasenameOnce || isRootElement && options.folders.ignoreRootName) {
+        delete options.ignoreBasenameOnce;
+        log.match(`omitted name of folder ${name} from hash`);
+      } else {
+        hash.update(name);
+      }
+      children.forEach((child) => {
+        if (child.hash) {
+          hash.update(child.hash);
+        }
+      });
+      this.hash = hash.digest(options.encoding);
+    };
+    HashedFolder.prototype.toString = function(padding = "") {
+      const first = `${padding}{ name: '${this.name}', hash: '${this.hash}',
+`;
+      padding += "  ";
+      return `${first}${padding}children: ${this.childrenToString(padding)}}`;
+    };
+    HashedFolder.prototype.childrenToString = function(padding = "") {
+      if (this.children.length === 0) {
+        return "[]";
+      } else {
+        const nextPadding = padding + "  ";
+        const children = this.children.map((child) => child.toString(nextPadding)).join("\n");
+        return `[
+${children}
+${padding}]`;
+      }
+    };
+    var HashedFile = function HashedFile2(name, hash, encoding) {
+      this.name = name;
+      this.hash = hash.digest(encoding);
+    };
+    HashedFile.prototype.toString = function(padding = "") {
+      return padding + "{ name: '" + this.name + "', hash: '" + this.hash + "' }";
+    };
+    function isFunction2(any) {
+      return typeof any === "function";
+    }
+    function isString(str) {
+      return typeof str === "string" || str instanceof String;
+    }
+    function isObject(obj) {
+      return obj !== null && typeof obj === "object";
+    }
+    function notUndefined(obj) {
+      return typeof obj !== "undefined";
+    }
+    function reduceGlobPatterns(globs, name) {
+      if (isFunction2(globs)) {
+        log.glob(`Using function to ${name}`);
+        return globs;
+      } else if (!globs || !Array.isArray(globs) || globs.length === 0) {
+        return void 0;
+      } else {
+        const regex2 = new RegExp(
+          globs.reduce((acc, exclude) => {
+            return acc + "|" + minimatch2.makeRe(exclude).source;
+          }, "").substr(1)
+        );
+        log.glob(`Reduced glob patterns to ${name}`, { from: globs, to: regex2 });
+        return (param) => regex2.test(param);
+      }
+    }
+    module.exports = {
+      defaults: defaultOptions2,
+      hashElement: prep(__require("fs")),
+      // exposed for testing
+      prep,
+      parseParameters
+    };
+  }
+});
+
+// 
+var require_cli_width = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    module.exports = cliWidth2;
+    function normalizeOpts(options) {
+      const defaultOpts = {
+        defaultWidth: 0,
+        output: process.stdout,
+        tty: __require("tty")
+      };
+      if (!options) {
+        return defaultOpts;
+      }
+      Object.keys(defaultOpts).forEach(function(key) {
+        if (!options[key]) {
+          options[key] = defaultOpts[key];
+        }
+      });
+      return options;
+    }
+    function cliWidth2(options) {
+      const opts = normalizeOpts(options);
+      if (opts.output.getWindowSize) {
+        return opts.output.getWindowSize()[0] || opts.defaultWidth;
+      }
+      if (opts.tty.getWindowSize) {
+        return opts.tty.getWindowSize()[1] || opts.defaultWidth;
+      }
+      if (opts.output.columns) {
+        return opts.output.columns;
+      }
+      if (process.env.CLI_WIDTH) {
+        const width = parseInt(process.env.CLI_WIDTH, 10);
+        if (!isNaN(width) && width !== 0) {
+          return width;
+        }
+      }
+      return opts.defaultWidth;
+    }
+  }
+});
+
+// 
+var require_lib2 = __commonJS({
+  ""(exports, module) {
+    var Stream = __require("stream");
+    var MuteStream2 = class extends Stream {
+      #isTTY = null;
+      constructor(opts = {}) {
+        super(opts);
+        this.writable = this.readable = true;
+        this.muted = false;
+        this.on("pipe", this._onpipe);
+        this.replace = opts.replace;
+        this._prompt = opts.prompt || null;
+        this._hadControl = false;
+      }
+      #destSrc(key, def) {
+        if (this._dest) {
+          return this._dest[key];
+        }
+        if (this._src) {
+          return this._src[key];
+        }
+        return def;
+      }
+      #proxy(method, ...args) {
+        if (typeof this._dest?.[method] === "function") {
+          this._dest[method](...args);
+        }
+        if (typeof this._src?.[method] === "function") {
+          this._src[method](...args);
+        }
+      }
+      get isTTY() {
+        if (this.#isTTY !== null) {
+          return this.#isTTY;
+        }
+        return this.#destSrc("isTTY", false);
+      }
+      // basically just get replace the getter/setter with a regular value
+      set isTTY(val) {
+        this.#isTTY = val;
+      }
+      get rows() {
+        return this.#destSrc("rows");
+      }
+      get columns() {
+        return this.#destSrc("columns");
+      }
+      mute() {
+        this.muted = true;
+      }
+      unmute() {
+        this.muted = false;
+      }
+      _onpipe(src) {
+        this._src = src;
+      }
+      pipe(dest, options) {
+        this._dest = dest;
+        return super.pipe(dest, options);
+      }
+      pause() {
+        if (this._src) {
+          return this._src.pause();
+        }
+      }
+      resume() {
+        if (this._src) {
+          return this._src.resume();
+        }
+      }
+      write(c) {
+        if (this.muted) {
+          if (!this.replace) {
+            return true;
+          }
+          if (c.match(/^\u001b/)) {
+            if (c.indexOf(this._prompt) === 0) {
+              c = c.slice(this._prompt.length);
+              c = c.replace(/./g, this.replace);
+              c = this._prompt + c;
+            }
+            this._hadControl = true;
+            return this.emit("data", c);
+          } else {
+            if (this._prompt && this._hadControl && c.indexOf(this._prompt) === 0) {
+              this._hadControl = false;
+              this.emit("data", this._prompt);
+              c = c.slice(this._prompt.length);
+            }
+            c = c.toString().replace(/./g, this.replace);
+          }
+        }
+        this.emit("data", c);
+      }
+      end(c) {
+        if (this.muted) {
+          if (c && this.replace) {
+            c = c.toString().replace(/./g, this.replace);
+          } else {
+            c = null;
+          }
+        }
+        if (c) {
+          this.emit("data", c);
+        }
+        this.emit("end");
+      }
+      destroy(...args) {
+        return this.#proxy("destroy", ...args);
+      }
+      destroySoon(...args) {
+        return this.#proxy("destroySoon", ...args);
+      }
+      close(...args) {
+        return this.#proxy("close", ...args);
+      }
+    };
+    module.exports = MuteStream2;
+  }
+});
+
+// 
+var require_node2 = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    Object.defineProperty(exports, "__esModule", { value: true });
+    var fsModule;
+    exports.default = () => {
+      if (typeof module === "object" && typeof module.exports === "object") {
+        fsModule = fsModule ? fsModule : __require("fs");
+        return fsModule;
+      }
+      throw new Error("File system is not available");
+    };
+  }
+});
+
+// 
+var require_match = __commonJS({
+  ""(exports) {
+    "use strict";
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.default = (ctx, rec, confidence) => ({
+      confidence,
+      name: rec.name(ctx),
+      lang: rec.language ? rec.language() : void 0
+    });
+  }
+});
+
+// 
+var require_ascii = __commonJS({
+  ""(exports) {
+    "use strict";
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports, "__esModule", { value: true });
+    var match_1 = __importDefault(require_match());
+    var Ascii = class {
+      name() {
+        return "ASCII";
+      }
+      match(det) {
+        const input = det.rawInput;
+        for (let i = 0; i < det.rawLen; i++) {
+          const b = input[i];
+          if (b < 32 || b > 126) {
+            return (0, match_1.default)(det, this, 0);
+          }
+        }
+        return (0, match_1.default)(det, this, 100);
+      }
+    };
+    exports.default = Ascii;
+  }
+});
+
+// 
+var require_utf8 = __commonJS({
+  ""(exports) {
+    "use strict";
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports, "__esModule", { value: true });
+    var match_1 = __importDefault(require_match());
+    var Utf8 = class {
+      name() {
+        return "UTF-8";
+      }
+      match(det) {
+        let hasBOM = false, numValid = 0, numInvalid = 0, trailBytes = 0, confidence;
+        const input = det.rawInput;
+        if (det.rawLen >= 3 && (input[0] & 255) == 239 && (input[1] & 255) == 187 && (input[2] & 255) == 191) {
+          hasBOM = true;
+        }
+        for (let i = 0; i < det.rawLen; i++) {
+          const b = input[i];
+          if ((b & 128) == 0)
+            continue;
+          if ((b & 224) == 192) {
+            trailBytes = 1;
+          } else if ((b & 240) == 224) {
+            trailBytes = 2;
+          } else if ((b & 248) == 240) {
+            trailBytes = 3;
+          } else {
+            numInvalid++;
+            if (numInvalid > 5)
+              break;
+            trailBytes = 0;
+          }
+          for (; ; ) {
+            i++;
+            if (i >= det.rawLen)
+              break;
+            if ((input[i] & 192) != 128) {
+              numInvalid++;
+              break;
+            }
+            if (--trailBytes == 0) {
+              numValid++;
+              break;
+            }
+          }
+        }
+        confidence = 0;
+        if (hasBOM && numInvalid == 0)
+          confidence = 100;
+        else if (hasBOM && numValid > numInvalid * 10)
+          confidence = 80;
+        else if (numValid > 3 && numInvalid == 0)
+          confidence = 100;
+        else if (numValid > 0 && numInvalid == 0)
+          confidence = 80;
+        else if (numValid == 0 && numInvalid == 0)
+          confidence = 10;
+        else if (numValid > numInvalid * 10)
+          confidence = 25;
+        else
+          return null;
+        return (0, match_1.default)(det, this, confidence);
+      }
+    };
+    exports.default = Utf8;
+  }
+});
+
+// 
+var require_unicode = __commonJS({
+  ""(exports) {
+    "use strict";
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.UTF_32LE = exports.UTF_32BE = exports.UTF_16LE = exports.UTF_16BE = void 0;
+    var match_1 = __importDefault(require_match());
+    var UTF_16BE = class {
+      name() {
+        return "UTF-16BE";
+      }
+      match(det) {
+        const input = det.rawInput;
+        if (input.length >= 2 && (input[0] & 255) == 254 && (input[1] & 255) == 255) {
+          return (0, match_1.default)(det, this, 100);
+        }
+        return null;
+      }
+    };
+    exports.UTF_16BE = UTF_16BE;
+    var UTF_16LE = class {
+      name() {
+        return "UTF-16LE";
+      }
+      match(det) {
+        const input = det.rawInput;
+        if (input.length >= 2 && (input[0] & 255) == 255 && (input[1] & 255) == 254) {
+          if (input.length >= 4 && input[2] == 0 && input[3] == 0) {
+            return null;
+          }
+          return (0, match_1.default)(det, this, 100);
+        }
+        return null;
+      }
+    };
+    exports.UTF_16LE = UTF_16LE;
+    var UTF_32 = class {
+      name() {
+        return "UTF-32";
+      }
+      getChar(_input, _index) {
+        return -1;
+      }
+      match(det) {
+        let numValid = 0, numInvalid = 0, hasBOM = false, confidence = 0;
+        const limit = det.rawLen / 4 * 4;
+        const input = det.rawInput;
+        if (limit == 0) {
+          return null;
+        }
+        if (this.getChar(input, 0) == 65279) {
+          hasBOM = true;
+        }
+        for (let i = 0; i < limit; i += 4) {
+          const ch = this.getChar(input, i);
+          if (ch < 0 || ch >= 1114111 || ch >= 55296 && ch <= 57343) {
+            numInvalid += 1;
+          } else {
+            numValid += 1;
+          }
+        }
+        if (hasBOM && numInvalid == 0) {
+          confidence = 100;
+        } else if (hasBOM && numValid > numInvalid * 10) {
+          confidence = 80;
+        } else if (numValid > 3 && numInvalid == 0) {
+          confidence = 100;
+        } else if (numValid > 0 && numInvalid == 0) {
+          confidence = 80;
+        } else if (numValid > numInvalid * 10) {
+          confidence = 25;
+        }
+        return confidence == 0 ? null : (0, match_1.default)(det, this, confidence);
+      }
+    };
+    var UTF_32BE = class extends UTF_32 {
+      name() {
+        return "UTF-32BE";
+      }
+      getChar(input, index) {
+        return (input[index + 0] & 255) << 24 | (input[index + 1] & 255) << 16 | (input[index + 2] & 255) << 8 | input[index + 3] & 255;
+      }
+    };
+    exports.UTF_32BE = UTF_32BE;
+    var UTF_32LE = class extends UTF_32 {
+      name() {
+        return "UTF-32LE";
+      }
+      getChar(input, index) {
+        return (input[index + 3] & 255) << 24 | (input[index + 2] & 255) << 16 | (input[index + 1] & 255) << 8 | input[index + 0] & 255;
+      }
+    };
+    exports.UTF_32LE = UTF_32LE;
+  }
+});
+
+// 
+var require_mbcs = __commonJS({
+  ""(exports) {
+    "use strict";
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.gb_18030 = exports.euc_kr = exports.euc_jp = exports.big5 = exports.sjis = void 0;
+    var match_1 = __importDefault(require_match());
+    function binarySearch(arr, searchValue) {
+      const find = (arr2, searchValue2, left2, right2) => {
+        if (right2 < left2)
+          return -1;
+        const mid = Math.floor(left2 + right2 >>> 1);
+        if (searchValue2 > arr2[mid])
+          return find(arr2, searchValue2, mid + 1, right2);
+        if (searchValue2 < arr2[mid])
+          return find(arr2, searchValue2, left2, mid - 1);
+        return mid;
+      };
+      return find(arr, searchValue, 0, arr.length - 1);
+    }
+    var IteratedChar = class {
+      constructor() {
+        this.charValue = 0;
+        this.index = 0;
+        this.nextIndex = 0;
+        this.error = false;
+        this.done = false;
+      }
+      reset() {
+        this.charValue = 0;
+        this.index = -1;
+        this.nextIndex = 0;
+        this.error = false;
+        this.done = false;
+      }
+      nextByte(det) {
+        if (this.nextIndex >= det.rawLen) {
+          this.done = true;
+          return -1;
+        }
+        const byteValue = det.rawInput[this.nextIndex++] & 255;
+        return byteValue;
+      }
+    };
+    var mbcs = class {
+      constructor() {
+        this.commonChars = [];
+      }
+      name() {
+        return "mbcs";
+      }
+      match(det) {
+        let doubleByteCharCount = 0, commonCharCount = 0, badCharCount = 0, totalCharCount = 0, confidence = 0;
+        const iter = new IteratedChar();
+        detectBlock: {
+          for (iter.reset(); this.nextChar(iter, det); ) {
+            totalCharCount++;
+            if (iter.error) {
+              badCharCount++;
+            } else {
+              const cv = iter.charValue & 4294967295;
+              if (cv > 255) {
+                doubleByteCharCount++;
+                if (this.commonChars != null) {
+                  if (binarySearch(this.commonChars, cv) >= 0) {
+                    commonCharCount++;
+                  }
+                }
+              }
+            }
+            if (badCharCount >= 2 && badCharCount * 5 >= doubleByteCharCount) {
+              break detectBlock;
+            }
+          }
+          if (doubleByteCharCount <= 10 && badCharCount == 0) {
+            if (doubleByteCharCount == 0 && totalCharCount < 10) {
+              confidence = 0;
+            } else {
+              confidence = 10;
+            }
+            break detectBlock;
+          }
+          if (doubleByteCharCount < 20 * badCharCount) {
+            confidence = 0;
+            break detectBlock;
+          }
+          if (this.commonChars == null) {
+            confidence = 30 + doubleByteCharCount - 20 * badCharCount;
+            if (confidence > 100) {
+              confidence = 100;
+            }
+          } else {
+            const maxVal = Math.log(doubleByteCharCount / 4);
+            const scaleFactor = 90 / maxVal;
+            confidence = Math.floor(Math.log(commonCharCount + 1) * scaleFactor + 10);
+            confidence = Math.min(confidence, 100);
+          }
+        }
+        return confidence == 0 ? null : (0, match_1.default)(det, this, confidence);
+      }
+      nextChar(_iter, _det) {
+        return true;
+      }
+    };
+    var sjis = class extends mbcs {
+      constructor() {
+        super(...arguments);
+        this.commonChars = [
+          33088,
+          33089,
+          33090,
+          33093,
+          33115,
+          33129,
+          33130,
+          33141,
+          33142,
+          33440,
+          33442,
+          33444,
+          33449,
+          33450,
+          33451,
+          33453,
+          33455,
+          33457,
+          33459,
+          33461,
+          33463,
+          33469,
+          33470,
+          33473,
+          33476,
+          33477,
+          33478,
+          33480,
+          33481,
+          33484,
+          33485,
+          33500,
+          33504,
+          33511,
+          33512,
+          33513,
+          33514,
+          33520,
+          33521,
+          33601,
+          33603,
+          33614,
+          33615,
+          33624,
+          33630,
+          33634,
+          33639,
+          33653,
+          33654,
+          33673,
+          33674,
+          33675,
+          33677,
+          33683,
+          36502,
+          37882,
+          38314
+        ];
+      }
+      name() {
+        return "Shift_JIS";
+      }
+      language() {
+        return "ja";
+      }
+      nextChar(iter, det) {
+        iter.index = iter.nextIndex;
+        iter.error = false;
+        const firstByte = iter.charValue = iter.nextByte(det);
+        if (firstByte < 0)
+          return false;
+        if (firstByte <= 127 || firstByte > 160 && firstByte <= 223)
+          return true;
+        const secondByte = iter.nextByte(det);
+        if (secondByte < 0)
+          return false;
+        iter.charValue = firstByte << 8 | secondByte;
+        if (!(secondByte >= 64 && secondByte <= 127 || secondByte >= 128 && secondByte <= 255)) {
+          iter.error = true;
+        }
+        return true;
+      }
+    };
+    exports.sjis = sjis;
+    var big5 = class extends mbcs {
+      constructor() {
+        super(...arguments);
+        this.commonChars = [
+          41280,
+          41281,
+          41282,
+          41283,
+          41287,
+          41289,
+          41333,
+          41334,
+          42048,
+          42054,
+          42055,
+          42056,
+          42065,
+          42068,
+          42071,
+          42084,
+          42090,
+          42092,
+          42103,
+          42147,
+          42148,
+          42151,
+          42177,
+          42190,
+          42193,
+          42207,
+          42216,
+          42237,
+          42304,
+          42312,
+          42328,
+          42345,
+          42445,
+          42471,
+          42583,
+          42593,
+          42594,
+          42600,
+          42608,
+          42664,
+          42675,
+          42681,
+          42707,
+          42715,
+          42726,
+          42738,
+          42816,
+          42833,
+          42841,
+          42970,
+          43171,
+          43173,
+          43181,
+          43217,
+          43219,
+          43236,
+          43260,
+          43456,
+          43474,
+          43507,
+          43627,
+          43706,
+          43710,
+          43724,
+          43772,
+          44103,
+          44111,
+          44208,
+          44242,
+          44377,
+          44745,
+          45024,
+          45290,
+          45423,
+          45747,
+          45764,
+          45935,
+          46156,
+          46158,
+          46412,
+          46501,
+          46525,
+          46544,
+          46552,
+          46705,
+          47085,
+          47207,
+          47428,
+          47832,
+          47940,
+          48033,
+          48593,
+          49860,
+          50105,
+          50240,
+          50271
+        ];
+      }
+      name() {
+        return "Big5";
+      }
+      language() {
+        return "zh";
+      }
+      nextChar(iter, det) {
+        iter.index = iter.nextIndex;
+        iter.error = false;
+        const firstByte = iter.charValue = iter.nextByte(det);
+        if (firstByte < 0)
+          return false;
+        if (firstByte <= 127 || firstByte == 255)
+          return true;
+        const secondByte = iter.nextByte(det);
+        if (secondByte < 0)
+          return false;
+        iter.charValue = iter.charValue << 8 | secondByte;
+        if (secondByte < 64 || secondByte == 127 || secondByte == 255)
+          iter.error = true;
+        return true;
+      }
+    };
+    exports.big5 = big5;
+    function eucNextChar(iter, det) {
+      iter.index = iter.nextIndex;
+      iter.error = false;
+      let firstByte = 0;
+      let secondByte = 0;
+      let thirdByte = 0;
+      buildChar: {
+        firstByte = iter.charValue = iter.nextByte(det);
+        if (firstByte < 0) {
+          iter.done = true;
+          break buildChar;
+        }
+        if (firstByte <= 141) {
+          break buildChar;
+        }
+        secondByte = iter.nextByte(det);
+        iter.charValue = iter.charValue << 8 | secondByte;
+        if (firstByte >= 161 && firstByte <= 254) {
+          if (secondByte < 161) {
+            iter.error = true;
+          }
+          break buildChar;
+        }
+        if (firstByte == 142) {
+          if (secondByte < 161) {
+            iter.error = true;
+          }
+          break buildChar;
+        }
+        if (firstByte == 143) {
+          thirdByte = iter.nextByte(det);
+          iter.charValue = iter.charValue << 8 | thirdByte;
+          if (thirdByte < 161) {
+            iter.error = true;
+          }
+        }
+      }
+      return iter.done == false;
+    }
+    var euc_jp = class extends mbcs {
+      constructor() {
+        super(...arguments);
+        this.commonChars = [
+          41377,
+          41378,
+          41379,
+          41382,
+          41404,
+          41418,
+          41419,
+          41430,
+          41431,
+          42146,
+          42148,
+          42150,
+          42152,
+          42154,
+          42155,
+          42156,
+          42157,
+          42159,
+          42161,
+          42163,
+          42165,
+          42167,
+          42169,
+          42171,
+          42173,
+          42175,
+          42176,
+          42177,
+          42179,
+          42180,
+          42182,
+          42183,
+          42184,
+          42185,
+          42186,
+          42187,
+          42190,
+          42191,
+          42192,
+          42206,
+          42207,
+          42209,
+          42210,
+          42212,
+          42216,
+          42217,
+          42218,
+          42219,
+          42220,
+          42223,
+          42226,
+          42227,
+          42402,
+          42403,
+          42404,
+          42406,
+          42407,
+          42410,
+          42413,
+          42415,
+          42416,
+          42419,
+          42421,
+          42423,
+          42424,
+          42425,
+          42431,
+          42435,
+          42438,
+          42439,
+          42440,
+          42441,
+          42443,
+          42448,
+          42453,
+          42454,
+          42455,
+          42462,
+          42464,
+          42465,
+          42469,
+          42473,
+          42474,
+          42475,
+          42476,
+          42477,
+          42483,
+          47273,
+          47572,
+          47854,
+          48072,
+          48880,
+          49079,
+          50410,
+          50940,
+          51133,
+          51896,
+          51955,
+          52188,
+          52689
+        ];
+        this.nextChar = eucNextChar;
+      }
+      name() {
+        return "EUC-JP";
+      }
+      language() {
+        return "ja";
+      }
+    };
+    exports.euc_jp = euc_jp;
+    var euc_kr = class extends mbcs {
+      constructor() {
+        super(...arguments);
+        this.commonChars = [
+          45217,
+          45235,
+          45253,
+          45261,
+          45268,
+          45286,
+          45293,
+          45304,
+          45306,
+          45308,
+          45496,
+          45497,
+          45511,
+          45527,
+          45538,
+          45994,
+          46011,
+          46274,
+          46287,
+          46297,
+          46315,
+          46501,
+          46517,
+          46527,
+          46535,
+          46569,
+          46835,
+          47023,
+          47042,
+          47054,
+          47270,
+          47278,
+          47286,
+          47288,
+          47291,
+          47337,
+          47531,
+          47534,
+          47564,
+          47566,
+          47613,
+          47800,
+          47822,
+          47824,
+          47857,
+          48103,
+          48115,
+          48125,
+          48301,
+          48314,
+          48338,
+          48374,
+          48570,
+          48576,
+          48579,
+          48581,
+          48838,
+          48840,
+          48863,
+          48878,
+          48888,
+          48890,
+          49057,
+          49065,
+          49088,
+          49124,
+          49131,
+          49132,
+          49144,
+          49319,
+          49327,
+          49336,
+          49338,
+          49339,
+          49341,
+          49351,
+          49356,
+          49358,
+          49359,
+          49366,
+          49370,
+          49381,
+          49403,
+          49404,
+          49572,
+          49574,
+          49590,
+          49622,
+          49631,
+          49654,
+          49656,
+          50337,
+          50637,
+          50862,
+          51151,
+          51153,
+          51154,
+          51160,
+          51173,
+          51373
+        ];
+        this.nextChar = eucNextChar;
+      }
+      name() {
+        return "EUC-KR";
+      }
+      language() {
+        return "ko";
+      }
+    };
+    exports.euc_kr = euc_kr;
+    var gb_18030 = class extends mbcs {
+      constructor() {
+        super(...arguments);
+        this.commonChars = [
+          41377,
+          41378,
+          41379,
+          41380,
+          41392,
+          41393,
+          41457,
+          41459,
+          41889,
+          41900,
+          41914,
+          45480,
+          45496,
+          45502,
+          45755,
+          46025,
+          46070,
+          46323,
+          46525,
+          46532,
+          46563,
+          46767,
+          46804,
+          46816,
+          47010,
+          47016,
+          47037,
+          47062,
+          47069,
+          47284,
+          47327,
+          47350,
+          47531,
+          47561,
+          47576,
+          47610,
+          47613,
+          47821,
+          48039,
+          48086,
+          48097,
+          48122,
+          48316,
+          48347,
+          48382,
+          48588,
+          48845,
+          48861,
+          49076,
+          49094,
+          49097,
+          49332,
+          49389,
+          49611,
+          49883,
+          50119,
+          50396,
+          50410,
+          50636,
+          50935,
+          51192,
+          51371,
+          51403,
+          51413,
+          51431,
+          51663,
+          51706,
+          51889,
+          51893,
+          51911,
+          51920,
+          51926,
+          51957,
+          51965,
+          52460,
+          52728,
+          52906,
+          52932,
+          52946,
+          52965,
+          53173,
+          53186,
+          53206,
+          53442,
+          53445,
+          53456,
+          53460,
+          53671,
+          53930,
+          53938,
+          53941,
+          53947,
+          53972,
+          54211,
+          54224,
+          54269,
+          54466,
+          54490,
+          54754,
+          54992
+        ];
+      }
+      name() {
+        return "GB18030";
+      }
+      language() {
+        return "zh";
+      }
+      nextChar(iter, det) {
+        iter.index = iter.nextIndex;
+        iter.error = false;
+        let firstByte = 0;
+        let secondByte = 0;
+        let thirdByte = 0;
+        let fourthByte = 0;
+        buildChar: {
+          firstByte = iter.charValue = iter.nextByte(det);
+          if (firstByte < 0) {
+            iter.done = true;
+            break buildChar;
+          }
+          if (firstByte <= 128) {
+            break buildChar;
+          }
+          secondByte = iter.nextByte(det);
+          iter.charValue = iter.charValue << 8 | secondByte;
+          if (firstByte >= 129 && firstByte <= 254) {
+            if (secondByte >= 64 && secondByte <= 126 || secondByte >= 80 && secondByte <= 254) {
+              break buildChar;
+            }
+            if (secondByte >= 48 && secondByte <= 57) {
+              thirdByte = iter.nextByte(det);
+              if (thirdByte >= 129 && thirdByte <= 254) {
+                fourthByte = iter.nextByte(det);
+                if (fourthByte >= 48 && fourthByte <= 57) {
+                  iter.charValue = iter.charValue << 16 | thirdByte << 8 | fourthByte;
+                  break buildChar;
+                }
+              }
+            }
+            iter.error = true;
+            break buildChar;
+          }
+        }
+        return iter.done == false;
+      }
+    };
+    exports.gb_18030 = gb_18030;
+  }
+});
+
+// 
+var require_sbcs = __commonJS({
+  ""(exports) {
+    "use strict";
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.KOI8_R = exports.windows_1256 = exports.windows_1251 = exports.ISO_8859_9 = exports.ISO_8859_8 = exports.ISO_8859_7 = exports.ISO_8859_6 = exports.ISO_8859_5 = exports.ISO_8859_2 = exports.ISO_8859_1 = void 0;
+    var match_1 = __importDefault(require_match());
+    var N_GRAM_MASK = 16777215;
+    var NGramParser = class {
+      constructor(theNgramList, theByteMap) {
+        this.byteIndex = 0;
+        this.ngram = 0;
+        this.ngramCount = 0;
+        this.hitCount = 0;
+        this.spaceChar = 32;
+        this.ngramList = theNgramList;
+        this.byteMap = theByteMap;
+      }
+      search(table, value) {
+        let index = 0;
+        if (table[index + 32] <= value)
+          index += 32;
+        if (table[index + 16] <= value)
+          index += 16;
+        if (table[index + 8] <= value)
+          index += 8;
+        if (table[index + 4] <= value)
+          index += 4;
+        if (table[index + 2] <= value)
+          index += 2;
+        if (table[index + 1] <= value)
+          index += 1;
+        if (table[index] > value)
+          index -= 1;
+        if (index < 0 || table[index] != value)
+          return -1;
+        return index;
+      }
+      lookup(thisNgram) {
+        this.ngramCount += 1;
+        if (this.search(this.ngramList, thisNgram) >= 0) {
+          this.hitCount += 1;
+        }
+      }
+      addByte(b) {
+        this.ngram = (this.ngram << 8) + (b & 255) & N_GRAM_MASK;
+        this.lookup(this.ngram);
+      }
+      nextByte(det) {
+        if (this.byteIndex >= det.inputLen)
+          return -1;
+        return det.inputBytes[this.byteIndex++] & 255;
+      }
+      parse(det, spaceCh) {
+        let b, ignoreSpace = false;
+        this.spaceChar = spaceCh;
+        while ((b = this.nextByte(det)) >= 0) {
+          const mb = this.byteMap[b];
+          if (mb != 0) {
+            if (!(mb == this.spaceChar && ignoreSpace)) {
+              this.addByte(mb);
+            }
+            ignoreSpace = mb == this.spaceChar;
+          }
+        }
+        this.addByte(this.spaceChar);
+        const rawPercent = this.hitCount / this.ngramCount;
+        if (rawPercent > 0.33)
+          return 98;
+        return Math.floor(rawPercent * 300);
+      }
+    };
+    var NGramsPlusLang = class {
+      constructor(la, ng) {
+        this.fLang = la;
+        this.fNGrams = ng;
+      }
+    };
+    var isFlatNgrams = (val) => Array.isArray(val) && isFinite(val[0]);
+    var sbcs = class {
+      constructor() {
+        this.spaceChar = 32;
+        this.nGramLang = void 0;
+      }
+      ngrams() {
+        return [];
+      }
+      byteMap() {
+        return [];
+      }
+      name(_input) {
+        return "sbcs";
+      }
+      language() {
+        return this.nGramLang;
+      }
+      match(det) {
+        this.nGramLang = void 0;
+        const ngrams = this.ngrams();
+        if (isFlatNgrams(ngrams)) {
+          const parser2 = new NGramParser(ngrams, this.byteMap());
+          const confidence = parser2.parse(det, this.spaceChar);
+          return confidence <= 0 ? null : (0, match_1.default)(det, this, confidence);
+        }
+        let bestConfidence = -1;
+        for (let i = ngrams.length - 1; i >= 0; i--) {
+          const ngl = ngrams[i];
+          const parser2 = new NGramParser(ngl.fNGrams, this.byteMap());
+          const confidence = parser2.parse(det, this.spaceChar);
+          if (confidence > bestConfidence) {
+            bestConfidence = confidence;
+            this.nGramLang = ngl.fLang;
+          }
+        }
+        return bestConfidence <= 0 ? null : (0, match_1.default)(det, this, bestConfidence);
+      }
+    };
+    var ISO_8859_1 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          170,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          181,
+          32,
+          32,
+          32,
+          32,
+          186,
+          32,
+          32,
+          32,
+          32,
+          32,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          32,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          223,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          32,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          255
+        ];
+      }
+      ngrams() {
+        return [
+          new NGramsPlusLang("da", [
+            2122086,
+            2122100,
+            2122853,
+            2123118,
+            2123122,
+            2123375,
+            2123873,
+            2124064,
+            2125157,
+            2125671,
+            2126053,
+            2126697,
+            2126708,
+            2126953,
+            2127465,
+            6383136,
+            6385184,
+            6385252,
+            6386208,
+            6386720,
+            6579488,
+            6579566,
+            6579570,
+            6579572,
+            6627443,
+            6644768,
+            6644837,
+            6647328,
+            6647396,
+            6648352,
+            6648421,
+            6648608,
+            6648864,
+            6713202,
+            6776096,
+            6776174,
+            6776178,
+            6907749,
+            6908960,
+            6909543,
+            7038240,
+            7039845,
+            7103858,
+            7104871,
+            7105637,
+            7169380,
+            7234661,
+            7234848,
+            7235360,
+            7235429,
+            7300896,
+            7302432,
+            7303712,
+            7398688,
+            7479396,
+            7479397,
+            7479411,
+            7496992,
+            7566437,
+            7610483,
+            7628064,
+            7628146,
+            7629164,
+            7759218
+          ]),
+          new NGramsPlusLang("de", [
+            2122094,
+            2122101,
+            2122341,
+            2122849,
+            2122853,
+            2122857,
+            2123113,
+            2123621,
+            2123873,
+            2124142,
+            2125161,
+            2126691,
+            2126693,
+            2127214,
+            2127461,
+            2127471,
+            2127717,
+            2128501,
+            6448498,
+            6514720,
+            6514789,
+            6514804,
+            6578547,
+            6579566,
+            6579570,
+            6580581,
+            6627428,
+            6627443,
+            6646126,
+            6646132,
+            6647328,
+            6648352,
+            6648608,
+            6776174,
+            6841710,
+            6845472,
+            6906728,
+            6907168,
+            6909472,
+            6909541,
+            6911008,
+            7104867,
+            7105637,
+            7217249,
+            7217252,
+            7217267,
+            7234592,
+            7234661,
+            7234848,
+            7235360,
+            7235429,
+            7238757,
+            7479396,
+            7496805,
+            7497065,
+            7562088,
+            7566437,
+            7610468,
+            7628064,
+            7628142,
+            7628146,
+            7695972,
+            7695975,
+            7759218
+          ]),
+          new NGramsPlusLang("en", [
+            2122016,
+            2122094,
+            2122341,
+            2122607,
+            2123375,
+            2123873,
+            2123877,
+            2124142,
+            2125153,
+            2125670,
+            2125938,
+            2126437,
+            2126689,
+            2126708,
+            2126952,
+            2126959,
+            2127720,
+            6383972,
+            6384672,
+            6385184,
+            6385252,
+            6386464,
+            6386720,
+            6386789,
+            6386793,
+            6561889,
+            6561908,
+            6627425,
+            6627443,
+            6627444,
+            6644768,
+            6647412,
+            6648352,
+            6648608,
+            6713202,
+            6840692,
+            6841632,
+            6841714,
+            6906912,
+            6909472,
+            6909543,
+            6909806,
+            6910752,
+            7217249,
+            7217268,
+            7234592,
+            7235360,
+            7238688,
+            7300640,
+            7302688,
+            7303712,
+            7496992,
+            7500576,
+            7544929,
+            7544948,
+            7561577,
+            7566368,
+            7610484,
+            7628146,
+            7628897,
+            7628901,
+            7629167,
+            7630624,
+            7631648
+          ]),
+          new NGramsPlusLang("es", [
+            2122016,
+            2122593,
+            2122607,
+            2122853,
+            2123116,
+            2123118,
+            2123123,
+            2124142,
+            2124897,
+            2124911,
+            2125921,
+            2125935,
+            2125938,
+            2126197,
+            2126437,
+            2126693,
+            2127214,
+            2128160,
+            6365283,
+            6365284,
+            6365285,
+            6365292,
+            6365296,
+            6382441,
+            6382703,
+            6384672,
+            6386208,
+            6386464,
+            6515187,
+            6516590,
+            6579488,
+            6579564,
+            6582048,
+            6627428,
+            6627429,
+            6627436,
+            6646816,
+            6647328,
+            6647412,
+            6648608,
+            6648692,
+            6907246,
+            6943598,
+            7102752,
+            7106419,
+            7217253,
+            7238757,
+            7282788,
+            7282789,
+            7302688,
+            7303712,
+            7303968,
+            7364978,
+            7435621,
+            7495968,
+            7497075,
+            7544932,
+            7544933,
+            7544944,
+            7562528,
+            7628064,
+            7630624,
+            7693600,
+            15953440
+          ]),
+          new NGramsPlusLang("fr", [
+            2122101,
+            2122607,
+            2122849,
+            2122853,
+            2122869,
+            2123118,
+            2123124,
+            2124897,
+            2124901,
+            2125921,
+            2125935,
+            2125938,
+            2126197,
+            2126693,
+            2126703,
+            2127214,
+            2154528,
+            6385268,
+            6386793,
+            6513952,
+            6516590,
+            6579488,
+            6579571,
+            6583584,
+            6627425,
+            6627427,
+            6627428,
+            6627429,
+            6627436,
+            6627440,
+            6627443,
+            6647328,
+            6647412,
+            6648352,
+            6648608,
+            6648864,
+            6649202,
+            6909806,
+            6910752,
+            6911008,
+            7102752,
+            7103776,
+            7103859,
+            7169390,
+            7217252,
+            7234848,
+            7238432,
+            7238688,
+            7302688,
+            7302772,
+            7304562,
+            7435621,
+            7479404,
+            7496992,
+            7544929,
+            7544932,
+            7544933,
+            7544940,
+            7544944,
+            7610468,
+            7628064,
+            7629167,
+            7693600,
+            7696928
+          ]),
+          new NGramsPlusLang("it", [
+            2122092,
+            2122600,
+            2122607,
+            2122853,
+            2122857,
+            2123040,
+            2124140,
+            2124142,
+            2124897,
+            2125925,
+            2125938,
+            2127214,
+            6365283,
+            6365284,
+            6365296,
+            6365299,
+            6386799,
+            6514789,
+            6516590,
+            6579564,
+            6580512,
+            6627425,
+            6627427,
+            6627428,
+            6627433,
+            6627436,
+            6627440,
+            6627443,
+            6646816,
+            6646892,
+            6647412,
+            6648352,
+            6841632,
+            6889569,
+            6889571,
+            6889572,
+            6889587,
+            6906144,
+            6908960,
+            6909472,
+            6909806,
+            7102752,
+            7103776,
+            7104800,
+            7105633,
+            7234848,
+            7235872,
+            7237408,
+            7238757,
+            7282785,
+            7282788,
+            7282793,
+            7282803,
+            7302688,
+            7302757,
+            7366002,
+            7495968,
+            7496992,
+            7563552,
+            7627040,
+            7628064,
+            7629088,
+            7630624,
+            8022383
+          ]),
+          new NGramsPlusLang("nl", [
+            2122092,
+            2122341,
+            2122849,
+            2122853,
+            2122857,
+            2123109,
+            2123118,
+            2123621,
+            2123877,
+            2124142,
+            2125153,
+            2125157,
+            2125680,
+            2126949,
+            2127457,
+            2127461,
+            2127471,
+            2127717,
+            2128489,
+            6381934,
+            6381938,
+            6385184,
+            6385252,
+            6386208,
+            6386720,
+            6514804,
+            6579488,
+            6579566,
+            6579570,
+            6627426,
+            6627446,
+            6645102,
+            6645106,
+            6647328,
+            6648352,
+            6648435,
+            6648864,
+            6776174,
+            6841716,
+            6907168,
+            6909472,
+            6909543,
+            6910752,
+            7217250,
+            7217252,
+            7217253,
+            7217256,
+            7217263,
+            7217270,
+            7234661,
+            7235360,
+            7302756,
+            7303026,
+            7303200,
+            7303712,
+            7562088,
+            7566437,
+            7610468,
+            7628064,
+            7628142,
+            7628146,
+            7758190,
+            7759218,
+            7761775
+          ]),
+          new NGramsPlusLang("no", [
+            2122100,
+            2122102,
+            2122853,
+            2123118,
+            2123122,
+            2123375,
+            2123873,
+            2124064,
+            2125157,
+            2125671,
+            2126053,
+            2126693,
+            2126699,
+            2126703,
+            2126708,
+            2126953,
+            2127465,
+            2155808,
+            6385252,
+            6386208,
+            6386720,
+            6579488,
+            6579566,
+            6579572,
+            6627443,
+            6644768,
+            6647328,
+            6647397,
+            6648352,
+            6648421,
+            6648864,
+            6648948,
+            6713202,
+            6776174,
+            6908779,
+            6908960,
+            6909543,
+            7038240,
+            7039845,
+            7103776,
+            7105637,
+            7169380,
+            7169390,
+            7217267,
+            7234848,
+            7235360,
+            7235429,
+            7237221,
+            7300896,
+            7302432,
+            7303712,
+            7398688,
+            7479411,
+            7496992,
+            7565165,
+            7566437,
+            7610483,
+            7628064,
+            7628142,
+            7628146,
+            7629164,
+            7631904,
+            7631973,
+            7759218
+          ]),
+          new NGramsPlusLang("pt", [
+            2122016,
+            2122607,
+            2122849,
+            2122853,
+            2122863,
+            2123040,
+            2123123,
+            2125153,
+            2125423,
+            2125600,
+            2125921,
+            2125935,
+            2125938,
+            2126197,
+            2126437,
+            2126693,
+            2127213,
+            6365281,
+            6365283,
+            6365284,
+            6365296,
+            6382693,
+            6382703,
+            6384672,
+            6386208,
+            6386273,
+            6386464,
+            6516589,
+            6516590,
+            6578464,
+            6579488,
+            6582048,
+            6582131,
+            6627425,
+            6627428,
+            6647072,
+            6647412,
+            6648608,
+            6648692,
+            6906144,
+            6906721,
+            7169390,
+            7238757,
+            7238767,
+            7282785,
+            7282787,
+            7282788,
+            7282789,
+            7282800,
+            7303968,
+            7364978,
+            7435621,
+            7495968,
+            7497075,
+            7544929,
+            7544932,
+            7544933,
+            7544944,
+            7566433,
+            7628064,
+            7630624,
+            7693600,
+            14905120,
+            15197039
+          ]),
+          new NGramsPlusLang("sv", [
+            2122100,
+            2122102,
+            2122853,
+            2123118,
+            2123510,
+            2123873,
+            2124064,
+            2124142,
+            2124655,
+            2125157,
+            2125667,
+            2126053,
+            2126699,
+            2126703,
+            2126708,
+            2126953,
+            2127457,
+            2127465,
+            2155634,
+            6382693,
+            6385184,
+            6385252,
+            6386208,
+            6386804,
+            6514720,
+            6579488,
+            6579566,
+            6579570,
+            6579572,
+            6644768,
+            6647328,
+            6648352,
+            6648864,
+            6747762,
+            6776174,
+            6909036,
+            6909543,
+            7037216,
+            7105568,
+            7169380,
+            7217267,
+            7233824,
+            7234661,
+            7235360,
+            7235429,
+            7235950,
+            7299944,
+            7302432,
+            7302688,
+            7398688,
+            7479393,
+            7479411,
+            7495968,
+            7564129,
+            7565165,
+            7610483,
+            7627040,
+            7628064,
+            7628146,
+            7629164,
+            7631904,
+            7758194,
+            14971424,
+            16151072
+          ])
+        ];
+      }
+      name(input) {
+        return input && input.c1Bytes ? "windows-1252" : "ISO-8859-1";
+      }
+    };
+    exports.ISO_8859_1 = ISO_8859_1;
+    var ISO_8859_2 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          177,
+          32,
+          179,
+          32,
+          181,
+          182,
+          32,
+          32,
+          185,
+          186,
+          187,
+          188,
+          32,
+          190,
+          191,
+          32,
+          177,
+          32,
+          179,
+          32,
+          181,
+          182,
+          183,
+          32,
+          185,
+          186,
+          187,
+          188,
+          32,
+          190,
+          191,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          32,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          223,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          32,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          32
+        ];
+      }
+      ngrams() {
+        return [
+          new NGramsPlusLang("cs", [
+            2122016,
+            2122361,
+            2122863,
+            2124389,
+            2125409,
+            2125413,
+            2125600,
+            2125668,
+            2125935,
+            2125938,
+            2126072,
+            2126447,
+            2126693,
+            2126703,
+            2126708,
+            2126959,
+            2127392,
+            2127481,
+            2128481,
+            6365296,
+            6513952,
+            6514720,
+            6627440,
+            6627443,
+            6627446,
+            6647072,
+            6647533,
+            6844192,
+            6844260,
+            6910836,
+            6972704,
+            7042149,
+            7103776,
+            7104800,
+            7233824,
+            7268640,
+            7269408,
+            7269664,
+            7282800,
+            7300206,
+            7301737,
+            7304052,
+            7304480,
+            7304801,
+            7368548,
+            7368554,
+            7369327,
+            7403621,
+            7562528,
+            7565173,
+            7566433,
+            7566441,
+            7566446,
+            7628146,
+            7630573,
+            7630624,
+            7676016,
+            12477728,
+            14773997,
+            15296623,
+            15540336,
+            15540339,
+            15559968,
+            16278884
+          ]),
+          new NGramsPlusLang("hu", [
+            2122016,
+            2122106,
+            2122341,
+            2123111,
+            2123116,
+            2123365,
+            2123873,
+            2123887,
+            2124147,
+            2124645,
+            2124649,
+            2124790,
+            2124901,
+            2125153,
+            2125157,
+            2125161,
+            2125413,
+            2126714,
+            2126949,
+            2156915,
+            6365281,
+            6365291,
+            6365293,
+            6365299,
+            6384416,
+            6385184,
+            6388256,
+            6447470,
+            6448494,
+            6645625,
+            6646560,
+            6646816,
+            6646885,
+            6647072,
+            6647328,
+            6648421,
+            6648864,
+            6648933,
+            6648948,
+            6781216,
+            6844263,
+            6909556,
+            6910752,
+            7020641,
+            7075450,
+            7169383,
+            7170414,
+            7217249,
+            7233899,
+            7234923,
+            7234925,
+            7238688,
+            7300985,
+            7544929,
+            7567973,
+            7567988,
+            7568097,
+            7596391,
+            7610465,
+            7631904,
+            7659891,
+            8021362,
+            14773792,
+            15299360
+          ]),
+          new NGramsPlusLang("pl", [
+            2122618,
+            2122863,
+            2124064,
+            2124389,
+            2124655,
+            2125153,
+            2125161,
+            2125409,
+            2125417,
+            2125668,
+            2125935,
+            2125938,
+            2126697,
+            2127648,
+            2127721,
+            2127737,
+            2128416,
+            2128481,
+            6365296,
+            6365303,
+            6385257,
+            6514720,
+            6519397,
+            6519417,
+            6582048,
+            6584937,
+            6627440,
+            6627443,
+            6627447,
+            6627450,
+            6645615,
+            6646304,
+            6647072,
+            6647401,
+            6778656,
+            6906144,
+            6907168,
+            6907242,
+            7037216,
+            7039264,
+            7039333,
+            7170405,
+            7233824,
+            7235937,
+            7235941,
+            7282800,
+            7305057,
+            7305065,
+            7368556,
+            7369313,
+            7369327,
+            7369338,
+            7502437,
+            7502457,
+            7563754,
+            7564137,
+            7566433,
+            7825765,
+            7955304,
+            7957792,
+            8021280,
+            8022373,
+            8026400,
+            15955744
+          ]),
+          new NGramsPlusLang("ro", [
+            2122016,
+            2122083,
+            2122593,
+            2122597,
+            2122607,
+            2122613,
+            2122853,
+            2122857,
+            2124897,
+            2125153,
+            2125925,
+            2125938,
+            2126693,
+            2126819,
+            2127214,
+            2144873,
+            2158190,
+            6365283,
+            6365284,
+            6386277,
+            6386720,
+            6386789,
+            6386976,
+            6513010,
+            6516590,
+            6518048,
+            6546208,
+            6579488,
+            6627425,
+            6627427,
+            6627428,
+            6627440,
+            6627443,
+            6644e3,
+            6646048,
+            6646885,
+            6647412,
+            6648692,
+            6889569,
+            6889571,
+            6889572,
+            6889584,
+            6907168,
+            6908192,
+            6909472,
+            7102752,
+            7103776,
+            7106418,
+            7107945,
+            7234848,
+            7238770,
+            7303712,
+            7365998,
+            7496992,
+            7497057,
+            7501088,
+            7594784,
+            7628064,
+            7631477,
+            7660320,
+            7694624,
+            7695392,
+            12216608,
+            15625760
+          ])
+        ];
+      }
+      name(det) {
+        return det && det.c1Bytes ? "windows-1250" : "ISO-8859-2";
+      }
+    };
+    exports.ISO_8859_2 = ISO_8859_2;
+    var ISO_8859_5 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          247,
+          248,
+          249,
+          250,
+          251,
+          252,
+          32,
+          254,
+          255,
+          208,
+          209,
+          210,
+          211,
+          212,
+          213,
+          214,
+          215,
+          216,
+          217,
+          218,
+          219,
+          220,
+          221,
+          222,
+          223,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          208,
+          209,
+          210,
+          211,
+          212,
+          213,
+          214,
+          215,
+          216,
+          217,
+          218,
+          219,
+          220,
+          221,
+          222,
+          223,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          32,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          247,
+          248,
+          249,
+          250,
+          251,
+          252,
+          32,
+          254,
+          255
+        ];
+      }
+      ngrams() {
+        return [
+          2150944,
+          2151134,
+          2151646,
+          2152400,
+          2152480,
+          2153168,
+          2153182,
+          2153936,
+          2153941,
+          2154193,
+          2154462,
+          2154464,
+          2154704,
+          2154974,
+          2154978,
+          2155230,
+          2156514,
+          2158050,
+          13688280,
+          13689580,
+          13884960,
+          14015468,
+          14015960,
+          14016994,
+          14017056,
+          14164191,
+          14210336,
+          14211104,
+          14216992,
+          14407133,
+          14407712,
+          14413021,
+          14536736,
+          14538016,
+          14538965,
+          14538991,
+          14540320,
+          14540498,
+          14557394,
+          14557407,
+          14557409,
+          14602784,
+          14602960,
+          14603230,
+          14604576,
+          14605292,
+          14605344,
+          14606818,
+          14671579,
+          14672085,
+          14672088,
+          14672094,
+          14733522,
+          14734804,
+          14803664,
+          14803666,
+          14803672,
+          14806816,
+          14865883,
+          14868e3,
+          14868192,
+          14871584,
+          15196894,
+          15459616
+        ];
+      }
+      name() {
+        return "ISO-8859-5";
+      }
+      language() {
+        return "ru";
+      }
+    };
+    exports.ISO_8859_5 = ISO_8859_5;
+    var ISO_8859_6 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          193,
+          194,
+          195,
+          196,
+          197,
+          198,
+          199,
+          200,
+          201,
+          202,
+          203,
+          204,
+          205,
+          206,
+          207,
+          208,
+          209,
+          210,
+          211,
+          212,
+          213,
+          214,
+          215,
+          216,
+          217,
+          218,
+          32,
+          32,
+          32,
+          32,
+          32,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32
+        ];
+      }
+      ngrams() {
+        return [
+          2148324,
+          2148326,
+          2148551,
+          2152932,
+          2154986,
+          2155748,
+          2156006,
+          2156743,
+          13050055,
+          13091104,
+          13093408,
+          13095200,
+          13100064,
+          13100227,
+          13100231,
+          13100232,
+          13100234,
+          13100236,
+          13100237,
+          13100239,
+          13100243,
+          13100249,
+          13100258,
+          13100261,
+          13100264,
+          13100266,
+          13100320,
+          13100576,
+          13100746,
+          13115591,
+          13181127,
+          13181153,
+          13181156,
+          13181157,
+          13181160,
+          13246663,
+          13574343,
+          13617440,
+          13705415,
+          13748512,
+          13836487,
+          14229703,
+          14279913,
+          14805536,
+          14950599,
+          14993696,
+          15001888,
+          15002144,
+          15016135,
+          15058720,
+          15059232,
+          15066656,
+          15081671,
+          15147207,
+          15189792,
+          15255524,
+          15263264,
+          15278279,
+          15343815,
+          15343845,
+          15343848,
+          15386912,
+          15388960,
+          15394336
+        ];
+      }
+      name() {
+        return "ISO-8859-6";
+      }
+      language() {
+        return "ar";
+      }
+    };
+    exports.ISO_8859_6 = ISO_8859_6;
+    var ISO_8859_7 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          161,
+          162,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          220,
+          32,
+          221,
+          222,
+          223,
+          32,
+          252,
+          32,
+          253,
+          254,
+          192,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          32,
+          243,
+          244,
+          245,
+          246,
+          247,
+          248,
+          249,
+          250,
+          251,
+          220,
+          221,
+          222,
+          223,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          247,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          32
+        ];
+      }
+      ngrams() {
+        return [
+          2154989,
+          2154992,
+          2155497,
+          2155753,
+          2156016,
+          2156320,
+          2157281,
+          2157797,
+          2158049,
+          2158368,
+          2158817,
+          2158831,
+          2158833,
+          2159604,
+          2159605,
+          2159847,
+          2159855,
+          14672160,
+          14754017,
+          14754036,
+          14805280,
+          14806304,
+          14807292,
+          14807584,
+          14936545,
+          15067424,
+          15069728,
+          15147252,
+          15199520,
+          15200800,
+          15278324,
+          15327520,
+          15330014,
+          15331872,
+          15393257,
+          15393268,
+          15525152,
+          15540449,
+          15540453,
+          15540464,
+          15589664,
+          15725088,
+          15725856,
+          15790069,
+          15790575,
+          15793184,
+          15868129,
+          15868133,
+          15868138,
+          15868144,
+          15868148,
+          15983904,
+          15984416,
+          15987951,
+          16048416,
+          16048617,
+          16050157,
+          16050162,
+          16050666,
+          16052e3,
+          16052213,
+          16054765,
+          16379168,
+          16706848
+        ];
+      }
+      name(det) {
+        return det && det.c1Bytes ? "windows-1253" : "ISO-8859-7";
+      }
+      language() {
+        return "el";
+      }
+    };
+    exports.ISO_8859_7 = ISO_8859_7;
+    var ISO_8859_8 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          181,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          247,
+          248,
+          249,
+          250,
+          32,
+          32,
+          32,
+          32,
+          32
+        ];
+      }
+      ngrams() {
+        return [
+          new NGramsPlusLang("he", [
+            2154725,
+            2154727,
+            2154729,
+            2154746,
+            2154985,
+            2154990,
+            2155744,
+            2155749,
+            2155753,
+            2155758,
+            2155762,
+            2155769,
+            2155770,
+            2157792,
+            2157796,
+            2158304,
+            2159340,
+            2161132,
+            14744096,
+            14950624,
+            14950625,
+            14950628,
+            14950636,
+            14950638,
+            14950649,
+            15001056,
+            15065120,
+            15068448,
+            15068960,
+            15071264,
+            15071776,
+            15278308,
+            15328288,
+            15328762,
+            15329773,
+            15330592,
+            15331104,
+            15333408,
+            15333920,
+            15474912,
+            15474916,
+            15523872,
+            15524896,
+            15540448,
+            15540449,
+            15540452,
+            15540460,
+            15540462,
+            15540473,
+            15655968,
+            15671524,
+            15787040,
+            15788320,
+            15788525,
+            15920160,
+            16261348,
+            16312813,
+            16378912,
+            16392416,
+            16392417,
+            16392420,
+            16392428,
+            16392430,
+            16392441
+          ]),
+          new NGramsPlusLang("he", [
+            2154725,
+            2154732,
+            2155753,
+            2155756,
+            2155758,
+            2155760,
+            2157040,
+            2157810,
+            2157817,
+            2158053,
+            2158057,
+            2158565,
+            2158569,
+            2160869,
+            2160873,
+            2161376,
+            2161381,
+            2161385,
+            14688484,
+            14688492,
+            14688493,
+            14688506,
+            14738464,
+            14738916,
+            14740512,
+            14741024,
+            14754020,
+            14754029,
+            14754042,
+            14950628,
+            14950633,
+            14950636,
+            14950637,
+            14950639,
+            14950648,
+            14950650,
+            15002656,
+            15065120,
+            15066144,
+            15196192,
+            15327264,
+            15327520,
+            15328288,
+            15474916,
+            15474925,
+            15474938,
+            15528480,
+            15530272,
+            15591913,
+            15591920,
+            15591928,
+            15605988,
+            15605997,
+            15606010,
+            15655200,
+            15655968,
+            15918112,
+            16326884,
+            16326893,
+            16326906,
+            16376864,
+            16441376,
+            16442400,
+            16442857
+          ])
+        ];
+      }
+      name(det) {
+        return det && det.c1Bytes ? "windows-1255" : "ISO-8859-8";
+      }
+      language() {
+        return "he";
+      }
+    };
+    exports.ISO_8859_8 = ISO_8859_8;
+    var ISO_8859_9 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          170,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          181,
+          32,
+          32,
+          32,
+          32,
+          186,
+          32,
+          32,
+          32,
+          32,
+          32,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          32,
+          248,
+          249,
+          250,
+          251,
+          252,
+          105,
+          254,
+          223,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          32,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          255
+        ];
+      }
+      ngrams() {
+        return [
+          2122337,
+          2122345,
+          2122357,
+          2122849,
+          2122853,
+          2123621,
+          2123873,
+          2124140,
+          2124641,
+          2124655,
+          2125153,
+          2125676,
+          2126689,
+          2126945,
+          2127461,
+          2128225,
+          6365282,
+          6384416,
+          6384737,
+          6384993,
+          6385184,
+          6385405,
+          6386208,
+          6386273,
+          6386429,
+          6386685,
+          6388065,
+          6449522,
+          6578464,
+          6579488,
+          6580512,
+          6627426,
+          6627435,
+          6644841,
+          6647328,
+          6648352,
+          6648425,
+          6648681,
+          6909029,
+          6909472,
+          6909545,
+          6910496,
+          7102830,
+          7102834,
+          7103776,
+          7103858,
+          7217249,
+          7217250,
+          7217259,
+          7234657,
+          7234661,
+          7234848,
+          7235872,
+          7235950,
+          7273760,
+          7498094,
+          7535982,
+          7759136,
+          7954720,
+          7958386,
+          16608800,
+          16608868,
+          16609021,
+          16642301
+        ];
+      }
+      name(det) {
+        return det && det.c1Bytes ? "windows-1254" : "ISO-8859-9";
+      }
+      language() {
+        return "tr";
+      }
+    };
+    exports.ISO_8859_9 = ISO_8859_9;
+    var windows_1251 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          144,
+          131,
+          32,
+          131,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          154,
+          32,
+          156,
+          157,
+          158,
+          159,
+          144,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          154,
+          32,
+          156,
+          157,
+          158,
+          159,
+          32,
+          162,
+          162,
+          188,
+          32,
+          180,
+          32,
+          32,
+          184,
+          32,
+          186,
+          32,
+          32,
+          32,
+          32,
+          191,
+          32,
+          32,
+          179,
+          179,
+          180,
+          181,
+          32,
+          32,
+          184,
+          32,
+          186,
+          32,
+          188,
+          190,
+          190,
+          191,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          247,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          255,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          240,
+          241,
+          242,
+          243,
+          244,
+          245,
+          246,
+          247,
+          248,
+          249,
+          250,
+          251,
+          252,
+          253,
+          254,
+          255
+        ];
+      }
+      ngrams() {
+        return [
+          2155040,
+          2155246,
+          2155758,
+          2156512,
+          2156576,
+          2157280,
+          2157294,
+          2158048,
+          2158053,
+          2158305,
+          2158574,
+          2158576,
+          2158816,
+          2159086,
+          2159090,
+          2159342,
+          2160626,
+          2162162,
+          14740968,
+          14742268,
+          14937632,
+          15068156,
+          15068648,
+          15069682,
+          15069728,
+          15212783,
+          15263008,
+          15263776,
+          15269664,
+          15459821,
+          15460384,
+          15465709,
+          15589408,
+          15590688,
+          15591653,
+          15591679,
+          15592992,
+          15593186,
+          15605986,
+          15605999,
+          15606001,
+          15655456,
+          15655648,
+          15655918,
+          15657248,
+          15657980,
+          15658016,
+          15659506,
+          15724267,
+          15724773,
+          15724776,
+          15724782,
+          15786210,
+          15787492,
+          15856352,
+          15856354,
+          15856360,
+          15859488,
+          15918571,
+          15920672,
+          15920880,
+          15924256,
+          16249582,
+          16512288
+        ];
+      }
+      name() {
+        return "windows-1251";
+      }
+      language() {
+        return "ru";
+      }
+    };
+    exports.windows_1251 = windows_1251;
+    var windows_1256 = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          129,
+          32,
+          131,
+          32,
+          32,
+          32,
+          32,
+          136,
+          32,
+          138,
+          32,
+          156,
+          141,
+          142,
+          143,
+          144,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          152,
+          32,
+          154,
+          32,
+          156,
+          32,
+          32,
+          159,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          170,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          181,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          192,
+          193,
+          194,
+          195,
+          196,
+          197,
+          198,
+          199,
+          200,
+          201,
+          202,
+          203,
+          204,
+          205,
+          206,
+          207,
+          208,
+          209,
+          210,
+          211,
+          212,
+          213,
+          214,
+          32,
+          216,
+          217,
+          218,
+          219,
+          220,
+          221,
+          222,
+          223,
+          224,
+          225,
+          226,
+          227,
+          228,
+          229,
+          230,
+          231,
+          232,
+          233,
+          234,
+          235,
+          236,
+          237,
+          238,
+          239,
+          32,
+          32,
+          32,
+          32,
+          244,
+          32,
+          32,
+          32,
+          32,
+          249,
+          32,
+          251,
+          252,
+          32,
+          32,
+          255
+        ];
+      }
+      ngrams() {
+        return [
+          2148321,
+          2148324,
+          2148551,
+          2153185,
+          2153965,
+          2154977,
+          2155492,
+          2156231,
+          13050055,
+          13091104,
+          13093408,
+          13095200,
+          13099296,
+          13099459,
+          13099463,
+          13099464,
+          13099466,
+          13099468,
+          13099469,
+          13099471,
+          13099475,
+          13099482,
+          13099486,
+          13099491,
+          13099494,
+          13099501,
+          13099808,
+          13100064,
+          13100234,
+          13115591,
+          13181127,
+          13181149,
+          13181153,
+          13181155,
+          13181158,
+          13246663,
+          13574343,
+          13617440,
+          13705415,
+          13748512,
+          13836487,
+          14295239,
+          14344684,
+          14544160,
+          14753991,
+          14797088,
+          14806048,
+          14806304,
+          14885063,
+          14927648,
+          14928160,
+          14935072,
+          14950599,
+          15016135,
+          15058720,
+          15124449,
+          15131680,
+          15474887,
+          15540423,
+          15540451,
+          15540454,
+          15583520,
+          15585568,
+          15590432
+        ];
+      }
+      name() {
+        return "windows-1256";
+      }
+      language() {
+        return "ar";
+      }
+    };
+    exports.windows_1256 = windows_1256;
+    var KOI8_R = class extends sbcs {
+      byteMap() {
+        return [
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          0,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          97,
+          98,
+          99,
+          100,
+          101,
+          102,
+          103,
+          104,
+          105,
+          106,
+          107,
+          108,
+          109,
+          110,
+          111,
+          112,
+          113,
+          114,
+          115,
+          116,
+          117,
+          118,
+          119,
+          120,
+          121,
+          122,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          163,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          163,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          32,
+          192,
+          193,
+          194,
+          195,
+          196,
+          197,
+          198,
+          199,
+          200,
+          201,
+          202,
+          203,
+          204,
+          205,
+          206,
+          207,
+          208,
+          209,
+          210,
+          211,
+          212,
+          213,
+          214,
+          215,
+          216,
+          217,
+          218,
+          219,
+          220,
+          221,
+          222,
+          223,
+          192,
+          193,
+          194,
+          195,
+          196,
+          197,
+          198,
+          199,
+          200,
+          201,
+          202,
+          203,
+          204,
+          205,
+          206,
+          207,
+          208,
+          209,
+          210,
+          211,
+          212,
+          213,
+          214,
+          215,
+          216,
+          217,
+          218,
+          219,
+          220,
+          221,
+          222,
+          223
+        ];
+      }
+      ngrams() {
+        return [
+          2147535,
+          2148640,
+          2149313,
+          2149327,
+          2150081,
+          2150085,
+          2150338,
+          2150607,
+          2150610,
+          2151105,
+          2151375,
+          2151380,
+          2151631,
+          2152224,
+          2152399,
+          2153153,
+          2153684,
+          2154196,
+          12701385,
+          12702936,
+          12963032,
+          12963529,
+          12964820,
+          12964896,
+          13094688,
+          13181136,
+          13223200,
+          13224224,
+          13226272,
+          13419982,
+          13420832,
+          13424846,
+          13549856,
+          13550880,
+          13552069,
+          13552081,
+          13553440,
+          13553623,
+          13574352,
+          13574355,
+          13574359,
+          13617103,
+          13617696,
+          13618392,
+          13618464,
+          13620180,
+          13621024,
+          13621185,
+          13684684,
+          13685445,
+          13685449,
+          13685455,
+          13812183,
+          13813188,
+          13881632,
+          13882561,
+          13882569,
+          13882583,
+          13944268,
+          13946656,
+          13946834,
+          13948960,
+          14272544,
+          14603471
+        ];
+      }
+      name() {
+        return "KOI8-R";
+      }
+      language() {
+        return "ru";
+      }
+    };
+    exports.KOI8_R = KOI8_R;
+  }
+});
+
+// 
+var require_iso2022 = __commonJS({
+  ""(exports) {
+    "use strict";
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.ISO_2022_CN = exports.ISO_2022_KR = exports.ISO_2022_JP = void 0;
+    var match_1 = __importDefault(require_match());
+    var ISO_2022 = class {
+      constructor() {
+        this.escapeSequences = [];
+      }
+      name() {
+        return "ISO_2022";
+      }
+      match(det) {
+        let i, j;
+        let escN;
+        let hits = 0;
+        let misses = 0;
+        let shifts = 0;
+        let confidence;
+        const text = det.inputBytes;
+        const textLen = det.inputLen;
+        scanInput:
+          for (i = 0; i < textLen; i++) {
+            if (text[i] == 27) {
+              checkEscapes:
+                for (escN = 0; escN < this.escapeSequences.length; escN++) {
+                  const seq = this.escapeSequences[escN];
+                  if (textLen - i < seq.length)
+                    continue checkEscapes;
+                  for (j = 1; j < seq.length; j++)
+                    if (seq[j] != text[i + j])
+                      continue checkEscapes;
+                  hits++;
+                  i += seq.length - 1;
+                  continue scanInput;
+                }
+              misses++;
+            }
+            if (text[i] == 14 || text[i] == 15)
+              shifts++;
+          }
+        if (hits == 0)
+          return null;
+        confidence = (100 * hits - 100 * misses) / (hits + misses);
+        if (hits + shifts < 5)
+          confidence -= (5 - (hits + shifts)) * 10;
+        return confidence <= 0 ? null : (0, match_1.default)(det, this, confidence);
+      }
+    };
+    var ISO_2022_JP = class extends ISO_2022 {
+      constructor() {
+        super(...arguments);
+        this.escapeSequences = [
+          [27, 36, 40, 67],
+          [27, 36, 40, 68],
+          [27, 36, 64],
+          [27, 36, 65],
+          [27, 36, 66],
+          [27, 38, 64],
+          [27, 40, 66],
+          [27, 40, 72],
+          [27, 40, 73],
+          [27, 40, 74],
+          [27, 46, 65],
+          [27, 46, 70]
+        ];
+      }
+      name() {
+        return "ISO-2022-JP";
+      }
+      language() {
+        return "ja";
+      }
+    };
+    exports.ISO_2022_JP = ISO_2022_JP;
+    var ISO_2022_KR = class extends ISO_2022 {
+      constructor() {
+        super(...arguments);
+        this.escapeSequences = [[27, 36, 41, 67]];
+      }
+      name() {
+        return "ISO-2022-KR";
+      }
+      language() {
+        return "kr";
+      }
+    };
+    exports.ISO_2022_KR = ISO_2022_KR;
+    var ISO_2022_CN = class extends ISO_2022 {
+      constructor() {
+        super(...arguments);
+        this.escapeSequences = [
+          [27, 36, 41, 65],
+          [27, 36, 41, 71],
+          [27, 36, 42, 72],
+          [27, 36, 41, 69],
+          [27, 36, 43, 73],
+          [27, 36, 43, 74],
+          [27, 36, 43, 75],
+          [27, 36, 43, 76],
+          [27, 36, 43, 77],
+          [27, 78],
+          [27, 79]
+        ];
+      }
+      name() {
+        return "ISO-2022-CN";
+      }
+      language() {
+        return "zh";
+      }
+    };
+    exports.ISO_2022_CN = ISO_2022_CN;
+  }
+});
+
+// 
+var require_utils2 = __commonJS({
+  ""(exports) {
+    "use strict";
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.isByteArray = void 0;
+    var isByteArray = (input) => {
+      if (input == null || typeof input != "object")
+        return false;
+      return isFinite(input.length) && input.length >= 0;
+    };
+    exports.isByteArray = isByteArray;
+  }
+});
+
+// 
+var require_lib3 = __commonJS({
+  ""(exports) {
+    "use strict";
+    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
+      if (k2 === void 0)
+        k2 = k;
+      var desc = Object.getOwnPropertyDescriptor(m, k);
+      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+        desc = { enumerable: true, get: function() {
+          return m[k];
+        } };
+      }
+      Object.defineProperty(o, k2, desc);
+    } : function(o, m, k, k2) {
+      if (k2 === void 0)
+        k2 = k;
+      o[k2] = m[k];
+    });
+    var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
+      Object.defineProperty(o, "default", { enumerable: true, value: v });
+    } : function(o, v) {
+      o["default"] = v;
+    });
+    var __importStar = exports && exports.__importStar || /* @__PURE__ */ function() {
+      var ownKeys = function(o) {
+        ownKeys = Object.getOwnPropertyNames || function(o2) {
+          var ar = [];
+          for (var k in o2)
+            if (Object.prototype.hasOwnProperty.call(o2, k))
+              ar[ar.length] = k;
+          return ar;
+        };
+        return ownKeys(o);
+      };
+      return function(mod) {
+        if (mod && mod.__esModule)
+          return mod;
+        var result = {};
+        if (mod != null) {
+          for (var k = ownKeys(mod), i = 0; i < k.length; i++)
+            if (k[i] !== "default")
+              __createBinding(result, mod, k[i]);
+        }
+        __setModuleDefault(result, mod);
+        return result;
+      };
+    }();
+    var __importDefault = exports && exports.__importDefault || function(mod) {
+      return mod && mod.__esModule ? mod : { "default": mod };
+    };
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.detectFileSync = exports.detectFile = exports.analyse = exports.detect = void 0;
+    var node_1 = __importDefault(require_node2());
+    var ascii_1 = __importDefault(require_ascii());
+    var utf8_1 = __importDefault(require_utf8());
+    var unicode = __importStar(require_unicode());
+    var mbcs = __importStar(require_mbcs());
+    var sbcs = __importStar(require_sbcs());
+    var iso2022 = __importStar(require_iso2022());
+    var utils_1 = require_utils2();
+    var recognisers = [
+      new utf8_1.default(),
+      new unicode.UTF_16BE(),
+      new unicode.UTF_16LE(),
+      new unicode.UTF_32BE(),
+      new unicode.UTF_32LE(),
+      new mbcs.sjis(),
+      new mbcs.big5(),
+      new mbcs.euc_jp(),
+      new mbcs.euc_kr(),
+      new mbcs.gb_18030(),
+      new iso2022.ISO_2022_JP(),
+      new iso2022.ISO_2022_KR(),
+      new iso2022.ISO_2022_CN(),
+      new sbcs.ISO_8859_1(),
+      new sbcs.ISO_8859_2(),
+      new sbcs.ISO_8859_5(),
+      new sbcs.ISO_8859_6(),
+      new sbcs.ISO_8859_7(),
+      new sbcs.ISO_8859_8(),
+      new sbcs.ISO_8859_9(),
+      new sbcs.windows_1251(),
+      new sbcs.windows_1256(),
+      new sbcs.KOI8_R(),
+      new ascii_1.default()
+    ];
+    var detect2 = (buffer) => {
+      const matches = (0, exports.analyse)(buffer);
+      return matches.length > 0 ? matches[0].name : null;
+    };
+    exports.detect = detect2;
+    var analyse = (buffer) => {
+      if (!(0, utils_1.isByteArray)(buffer)) {
+        throw new Error("Input must be a byte array, e.g. Buffer or Uint8Array");
+      }
+      const byteStats = [];
+      for (let i = 0; i < 256; i++)
+        byteStats[i] = 0;
+      for (let i = buffer.length - 1; i >= 0; i--)
+        byteStats[buffer[i] & 255]++;
+      let c1Bytes = false;
+      for (let i = 128; i <= 159; i += 1) {
+        if (byteStats[i] !== 0) {
+          c1Bytes = true;
+          break;
+        }
+      }
+      const context3 = {
+        byteStats,
+        c1Bytes,
+        rawInput: buffer,
+        rawLen: buffer.length,
+        inputBytes: buffer,
+        inputLen: buffer.length
+      };
+      const matches = recognisers.map((rec) => {
+        return rec.match(context3);
+      }).filter((match2) => {
+        return !!match2;
+      }).sort((a, b) => {
+        return b.confidence - a.confidence;
+      });
+      return matches;
+    };
+    exports.analyse = analyse;
+    var detectFile = (filepath, opts = {}) => new Promise((resolve5, reject) => {
+      let fd;
+      const fs3 = (0, node_1.default)();
+      const handler2 = (err, buffer) => {
+        if (fd) {
+          fs3.closeSync(fd);
+        }
+        if (err) {
+          reject(err);
+        } else if (buffer) {
+          resolve5((0, exports.detect)(buffer));
+        } else {
+          reject(new Error("No error and no buffer received"));
+        }
+      };
+      const sampleSize = (opts === null || opts === void 0 ? void 0 : opts.sampleSize) || 0;
+      if (sampleSize > 0) {
+        fd = fs3.openSync(filepath, "r");
+        let sample = Buffer.allocUnsafe(sampleSize);
+        fs3.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
+          if (err) {
+            handler2(err, null);
+          } else {
+            if (bytesRead < sampleSize) {
+              sample = sample.subarray(0, bytesRead);
+            }
+            handler2(null, sample);
+          }
+        });
+        return;
+      }
+      fs3.readFile(filepath, handler2);
+    });
+    exports.detectFile = detectFile;
+    var detectFileSync = (filepath, opts = {}) => {
+      const fs3 = (0, node_1.default)();
+      if (opts && opts.sampleSize) {
+        const fd = fs3.openSync(filepath, "r");
+        let sample = Buffer.allocUnsafe(opts.sampleSize);
+        const bytesRead = fs3.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
+        if (bytesRead < opts.sampleSize) {
+          sample = sample.subarray(0, bytesRead);
+        }
+        fs3.closeSync(fd);
+        return (0, exports.detect)(sample);
+      }
+      return (0, exports.detect)(fs3.readFileSync(filepath));
+    };
+    exports.detectFileSync = detectFileSync;
+    exports.default = {
+      analyse: exports.analyse,
+      detect: exports.detect,
+      detectFileSync: exports.detectFileSync,
+      detectFile: exports.detectFile
+    };
+  }
+});
+
+// 
+var require_safer = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var buffer = __require("buffer");
+    var Buffer2 = buffer.Buffer;
+    var safer = {};
+    var key;
+    for (key in buffer) {
+      if (!buffer.hasOwnProperty(key))
+        continue;
+      if (key === "SlowBuffer" || key === "Buffer")
+        continue;
+      safer[key] = buffer[key];
+    }
+    var Safer = safer.Buffer = {};
+    for (key in Buffer2) {
+      if (!Buffer2.hasOwnProperty(key))
+        continue;
+      if (key === "allocUnsafe" || key === "allocUnsafeSlow")
+        continue;
+      Safer[key] = Buffer2[key];
+    }
+    safer.Buffer.prototype = Buffer2.prototype;
+    if (!Safer.from || Safer.from === Uint8Array.from) {
+      Safer.from = function(value, encodingOrOffset, length) {
+        if (typeof value === "number") {
+          throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value);
+        }
+        if (value && typeof value.length === "undefined") {
+          throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value);
+        }
+        return Buffer2(value, encodingOrOffset, length);
+      };
+    }
+    if (!Safer.alloc) {
+      Safer.alloc = function(size, fill, encoding) {
+        if (typeof size !== "number") {
+          throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size);
+        }
+        if (size < 0 || size >= 2 * (1 << 30)) {
+          throw new RangeError('The value "' + size + '" is invalid for option "size"');
+        }
+        var buf = Buffer2(size);
+        if (!fill || fill.length === 0) {
+          buf.fill(0);
+        } else if (typeof encoding === "string") {
+          buf.fill(fill, encoding);
+        } else {
+          buf.fill(fill);
+        }
+        return buf;
+      };
+    }
+    if (!safer.kStringMaxLength) {
+      try {
+        safer.kStringMaxLength = process.binding("buffer").kStringMaxLength;
+      } catch (e) {
+      }
+    }
+    if (!safer.constants) {
+      safer.constants = {
+        MAX_LENGTH: safer.kMaxLength
+      };
+      if (safer.kStringMaxLength) {
+        safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;
+      }
+    }
+    module.exports = safer;
+  }
+});
+
+// 
+var require_bom_handling = __commonJS({
+  ""(exports) {
+    "use strict";
+    var BOMChar = "\uFEFF";
+    exports.PrependBOM = PrependBOMWrapper;
+    function PrependBOMWrapper(encoder, options) {
+      this.encoder = encoder;
+      this.addBOM = true;
+    }
+    PrependBOMWrapper.prototype.write = function(str) {
+      if (this.addBOM) {
+        str = BOMChar + str;
+        this.addBOM = false;
+      }
+      return this.encoder.write(str);
+    };
+    PrependBOMWrapper.prototype.end = function() {
+      return this.encoder.end();
+    };
+    exports.StripBOM = StripBOMWrapper;
+    function StripBOMWrapper(decoder, options) {
+      this.decoder = decoder;
+      this.pass = false;
+      this.options = options || {};
+    }
+    StripBOMWrapper.prototype.write = function(buf) {
+      var res = this.decoder.write(buf);
+      if (this.pass || !res) {
+        return res;
+      }
+      if (res[0] === BOMChar) {
+        res = res.slice(1);
+        if (typeof this.options.stripBOM === "function") {
+          this.options.stripBOM();
+        }
+      }
+      this.pass = true;
+      return res;
+    };
+    StripBOMWrapper.prototype.end = function() {
+      return this.decoder.end();
+    };
+  }
+});
+
+// 
+var require_merge_exports = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var hasOwn2 = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn;
+    function mergeModules(target, module2) {
+      for (var key in module2) {
+        if (hasOwn2(module2, key)) {
+          target[key] = module2[key];
+        }
+      }
+    }
+    module.exports = mergeModules;
+  }
+});
+
+// 
+var require_internal = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    module.exports = {
+      // Encodings
+      utf8: { type: "_internal", bomAware: true },
+      cesu8: { type: "_internal", bomAware: true },
+      unicode11utf8: "utf8",
+      ucs2: { type: "_internal", bomAware: true },
+      utf16le: "ucs2",
+      binary: { type: "_internal" },
+      base64: { type: "_internal" },
+      hex: { type: "_internal" },
+      // Codec.
+      _internal: InternalCodec
+    };
+    function InternalCodec(codecOptions, iconv2) {
+      this.enc = codecOptions.encodingName;
+      this.bomAware = codecOptions.bomAware;
+      if (this.enc === "base64") {
+        this.encoder = InternalEncoderBase64;
+      } else if (this.enc === "utf8") {
+        this.encoder = InternalEncoderUtf8;
+      } else if (this.enc === "cesu8") {
+        this.enc = "utf8";
+        this.encoder = InternalEncoderCesu8;
+        if (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") {
+          this.decoder = InternalDecoderCesu8;
+          this.defaultCharUnicode = iconv2.defaultCharUnicode;
+        }
+      }
+    }
+    InternalCodec.prototype.encoder = InternalEncoder;
+    InternalCodec.prototype.decoder = InternalDecoder;
+    var StringDecoder = __require("string_decoder").StringDecoder;
+    function InternalDecoder(options, codec) {
+      this.decoder = new StringDecoder(codec.enc);
+    }
+    InternalDecoder.prototype.write = function(buf) {
+      if (!Buffer2.isBuffer(buf)) {
+        buf = Buffer2.from(buf);
+      }
+      return this.decoder.write(buf);
+    };
+    InternalDecoder.prototype.end = function() {
+      return this.decoder.end();
+    };
+    function InternalEncoder(options, codec) {
+      this.enc = codec.enc;
+    }
+    InternalEncoder.prototype.write = function(str) {
+      return Buffer2.from(str, this.enc);
+    };
+    InternalEncoder.prototype.end = function() {
+    };
+    function InternalEncoderBase64(options, codec) {
+      this.prevStr = "";
+    }
+    InternalEncoderBase64.prototype.write = function(str) {
+      str = this.prevStr + str;
+      var completeQuads = str.length - str.length % 4;
+      this.prevStr = str.slice(completeQuads);
+      str = str.slice(0, completeQuads);
+      return Buffer2.from(str, "base64");
+    };
+    InternalEncoderBase64.prototype.end = function() {
+      return Buffer2.from(this.prevStr, "base64");
+    };
+    function InternalEncoderCesu8(options, codec) {
+    }
+    InternalEncoderCesu8.prototype.write = function(str) {
+      var buf = Buffer2.alloc(str.length * 3);
+      var bufIdx = 0;
+      for (var i = 0; i < str.length; i++) {
+        var charCode = str.charCodeAt(i);
+        if (charCode < 128) {
+          buf[bufIdx++] = charCode;
+        } else if (charCode < 2048) {
+          buf[bufIdx++] = 192 + (charCode >>> 6);
+          buf[bufIdx++] = 128 + (charCode & 63);
+        } else {
+          buf[bufIdx++] = 224 + (charCode >>> 12);
+          buf[bufIdx++] = 128 + (charCode >>> 6 & 63);
+          buf[bufIdx++] = 128 + (charCode & 63);
+        }
+      }
+      return buf.slice(0, bufIdx);
+    };
+    InternalEncoderCesu8.prototype.end = function() {
+    };
+    function InternalDecoderCesu8(options, codec) {
+      this.acc = 0;
+      this.contBytes = 0;
+      this.accBytes = 0;
+      this.defaultCharUnicode = codec.defaultCharUnicode;
+    }
+    InternalDecoderCesu8.prototype.write = function(buf) {
+      var acc = this.acc;
+      var contBytes = this.contBytes;
+      var accBytes = this.accBytes;
+      var res = "";
+      for (var i = 0; i < buf.length; i++) {
+        var curByte = buf[i];
+        if ((curByte & 192) !== 128) {
+          if (contBytes > 0) {
+            res += this.defaultCharUnicode;
+            contBytes = 0;
+          }
+          if (curByte < 128) {
+            res += String.fromCharCode(curByte);
+          } else if (curByte < 224) {
+            acc = curByte & 31;
+            contBytes = 1;
+            accBytes = 1;
+          } else if (curByte < 240) {
+            acc = curByte & 15;
+            contBytes = 2;
+            accBytes = 1;
+          } else {
+            res += this.defaultCharUnicode;
+          }
+        } else {
+          if (contBytes > 0) {
+            acc = acc << 6 | curByte & 63;
+            contBytes--;
+            accBytes++;
+            if (contBytes === 0) {
+              if (accBytes === 2 && acc < 128 && acc > 0) {
+                res += this.defaultCharUnicode;
+              } else if (accBytes === 3 && acc < 2048) {
+                res += this.defaultCharUnicode;
+              } else {
+                res += String.fromCharCode(acc);
+              }
+            }
+          } else {
+            res += this.defaultCharUnicode;
+          }
+        }
+      }
+      this.acc = acc;
+      this.contBytes = contBytes;
+      this.accBytes = accBytes;
+      return res;
+    };
+    InternalDecoderCesu8.prototype.end = function() {
+      var res = 0;
+      if (this.contBytes > 0) {
+        res += this.defaultCharUnicode;
+      }
+      return res;
+    };
+    function InternalEncoderUtf8(options, codec) {
+      this.highSurrogate = "";
+    }
+    InternalEncoderUtf8.prototype.write = function(str) {
+      if (this.highSurrogate) {
+        str = this.highSurrogate + str;
+        this.highSurrogate = "";
+      }
+      if (str.length > 0) {
+        var charCode = str.charCodeAt(str.length - 1);
+        if (charCode >= 55296 && charCode < 56320) {
+          this.highSurrogate = str[str.length - 1];
+          str = str.slice(0, str.length - 1);
+        }
+      }
+      return Buffer2.from(str, this.enc);
+    };
+    InternalEncoderUtf8.prototype.end = function() {
+      if (this.highSurrogate) {
+        var str = this.highSurrogate;
+        this.highSurrogate = "";
+        return Buffer2.from(str, this.enc);
+      }
+    };
+  }
+});
+
+// 
+var require_utf32 = __commonJS({
+  ""(exports) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    exports._utf32 = Utf32Codec;
+    function Utf32Codec(codecOptions, iconv2) {
+      this.iconv = iconv2;
+      this.bomAware = true;
+      this.isLE = codecOptions.isLE;
+    }
+    exports.utf32le = { type: "_utf32", isLE: true };
+    exports.utf32be = { type: "_utf32", isLE: false };
+    exports.ucs4le = "utf32le";
+    exports.ucs4be = "utf32be";
+    Utf32Codec.prototype.encoder = Utf32Encoder;
+    Utf32Codec.prototype.decoder = Utf32Decoder;
+    function Utf32Encoder(options, codec) {
+      this.isLE = codec.isLE;
+      this.highSurrogate = 0;
+    }
+    Utf32Encoder.prototype.write = function(str) {
+      var src = Buffer2.from(str, "ucs2");
+      var dst = Buffer2.alloc(src.length * 2);
+      var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;
+      var offset = 0;
+      for (var i = 0; i < src.length; i += 2) {
+        var code = src.readUInt16LE(i);
+        var isHighSurrogate = code >= 55296 && code < 56320;
+        var isLowSurrogate = code >= 56320 && code < 57344;
+        if (this.highSurrogate) {
+          if (isHighSurrogate || !isLowSurrogate) {
+            write32.call(dst, this.highSurrogate, offset);
+            offset += 4;
+          } else {
+            var codepoint = (this.highSurrogate - 55296 << 10 | code - 56320) + 65536;
+            write32.call(dst, codepoint, offset);
+            offset += 4;
+            this.highSurrogate = 0;
+            continue;
+          }
+        }
+        if (isHighSurrogate) {
+          this.highSurrogate = code;
+        } else {
+          write32.call(dst, code, offset);
+          offset += 4;
+          this.highSurrogate = 0;
+        }
+      }
+      if (offset < dst.length) {
+        dst = dst.slice(0, offset);
+      }
+      return dst;
+    };
+    Utf32Encoder.prototype.end = function() {
+      if (!this.highSurrogate) {
+        return;
+      }
+      var buf = Buffer2.alloc(4);
+      if (this.isLE) {
+        buf.writeUInt32LE(this.highSurrogate, 0);
+      } else {
+        buf.writeUInt32BE(this.highSurrogate, 0);
+      }
+      this.highSurrogate = 0;
+      return buf;
+    };
+    function Utf32Decoder(options, codec) {
+      this.isLE = codec.isLE;
+      this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);
+      this.overflow = [];
+    }
+    Utf32Decoder.prototype.write = function(src) {
+      if (src.length === 0) {
+        return "";
+      }
+      var i = 0;
+      var codepoint = 0;
+      var dst = Buffer2.alloc(src.length + 4);
+      var offset = 0;
+      var isLE = this.isLE;
+      var overflow = this.overflow;
+      var badChar = this.badChar;
+      if (overflow.length > 0) {
+        for (; i < src.length && overflow.length < 4; i++) {
+          overflow.push(src[i]);
+        }
+        if (overflow.length === 4) {
+          if (isLE) {
+            codepoint = overflow[i] | overflow[i + 1] << 8 | overflow[i + 2] << 16 | overflow[i + 3] << 24;
+          } else {
+            codepoint = overflow[i + 3] | overflow[i + 2] << 8 | overflow[i + 1] << 16 | overflow[i] << 24;
+          }
+          overflow.length = 0;
+          offset = _writeCodepoint(dst, offset, codepoint, badChar);
+        }
+      }
+      for (; i < src.length - 3; i += 4) {
+        if (isLE) {
+          codepoint = src[i] | src[i + 1] << 8 | src[i + 2] << 16 | src[i + 3] << 24;
+        } else {
+          codepoint = src[i + 3] | src[i + 2] << 8 | src[i + 1] << 16 | src[i] << 24;
+        }
+        offset = _writeCodepoint(dst, offset, codepoint, badChar);
+      }
+      for (; i < src.length; i++) {
+        overflow.push(src[i]);
+      }
+      return dst.slice(0, offset).toString("ucs2");
+    };
+    function _writeCodepoint(dst, offset, codepoint, badChar) {
+      if (codepoint < 0 || codepoint > 1114111) {
+        codepoint = badChar;
+      }
+      if (codepoint >= 65536) {
+        codepoint -= 65536;
+        var high = 55296 | codepoint >> 10;
+        dst[offset++] = high & 255;
+        dst[offset++] = high >> 8;
+        var codepoint = 56320 | codepoint & 1023;
+      }
+      dst[offset++] = codepoint & 255;
+      dst[offset++] = codepoint >> 8;
+      return offset;
+    }
+    Utf32Decoder.prototype.end = function() {
+      this.overflow.length = 0;
+    };
+    exports.utf32 = Utf32AutoCodec;
+    exports.ucs4 = "utf32";
+    function Utf32AutoCodec(options, iconv2) {
+      this.iconv = iconv2;
+    }
+    Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder;
+    Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder;
+    function Utf32AutoEncoder(options, codec) {
+      options = options || {};
+      if (options.addBOM === void 0) {
+        options.addBOM = true;
+      }
+      this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options);
+    }
+    Utf32AutoEncoder.prototype.write = function(str) {
+      return this.encoder.write(str);
+    };
+    Utf32AutoEncoder.prototype.end = function() {
+      return this.encoder.end();
+    };
+    function Utf32AutoDecoder(options, codec) {
+      this.decoder = null;
+      this.initialBufs = [];
+      this.initialBufsLen = 0;
+      this.options = options || {};
+      this.iconv = codec.iconv;
+    }
+    Utf32AutoDecoder.prototype.write = function(buf) {
+      if (!this.decoder) {
+        this.initialBufs.push(buf);
+        this.initialBufsLen += buf.length;
+        if (this.initialBufsLen < 32) {
+          return "";
+        }
+        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+        var resStr = "";
+        for (var i = 0; i < this.initialBufs.length; i++) {
+          resStr += this.decoder.write(this.initialBufs[i]);
+        }
+        this.initialBufs.length = this.initialBufsLen = 0;
+        return resStr;
+      }
+      return this.decoder.write(buf);
+    };
+    Utf32AutoDecoder.prototype.end = function() {
+      if (!this.decoder) {
+        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+        var resStr = "";
+        for (var i = 0; i < this.initialBufs.length; i++) {
+          resStr += this.decoder.write(this.initialBufs[i]);
+        }
+        var trail = this.decoder.end();
+        if (trail) {
+          resStr += trail;
+        }
+        this.initialBufs.length = this.initialBufsLen = 0;
+        return resStr;
+      }
+      return this.decoder.end();
+    };
+    function detectEncoding(bufs, defaultEncoding) {
+      var b = [];
+      var charsProcessed = 0;
+      var invalidLE = 0;
+      var invalidBE = 0;
+      var bmpCharsLE = 0;
+      var bmpCharsBE = 0;
+      outerLoop:
+        for (var i = 0; i < bufs.length; i++) {
+          var buf = bufs[i];
+          for (var j = 0; j < buf.length; j++) {
+            b.push(buf[j]);
+            if (b.length === 4) {
+              if (charsProcessed === 0) {
+                if (b[0] === 255 && b[1] === 254 && b[2] === 0 && b[3] === 0) {
+                  return "utf-32le";
+                }
+                if (b[0] === 0 && b[1] === 0 && b[2] === 254 && b[3] === 255) {
+                  return "utf-32be";
+                }
+              }
+              if (b[0] !== 0 || b[1] > 16)
+                invalidBE++;
+              if (b[3] !== 0 || b[2] > 16)
+                invalidLE++;
+              if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0))
+                bmpCharsBE++;
+              if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0)
+                bmpCharsLE++;
+              b.length = 0;
+              charsProcessed++;
+              if (charsProcessed >= 100) {
+                break outerLoop;
+              }
+            }
+          }
+        }
+      if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE)
+        return "utf-32be";
+      if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE)
+        return "utf-32le";
+      return defaultEncoding || "utf-32le";
+    }
+  }
+});
+
+// 
+var require_utf16 = __commonJS({
+  ""(exports) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    exports.utf16be = Utf16BECodec;
+    function Utf16BECodec() {
+    }
+    Utf16BECodec.prototype.encoder = Utf16BEEncoder;
+    Utf16BECodec.prototype.decoder = Utf16BEDecoder;
+    Utf16BECodec.prototype.bomAware = true;
+    function Utf16BEEncoder() {
+    }
+    Utf16BEEncoder.prototype.write = function(str) {
+      var buf = Buffer2.from(str, "ucs2");
+      for (var i = 0; i < buf.length; i += 2) {
+        var tmp = buf[i];
+        buf[i] = buf[i + 1];
+        buf[i + 1] = tmp;
+      }
+      return buf;
+    };
+    Utf16BEEncoder.prototype.end = function() {
+    };
+    function Utf16BEDecoder() {
+      this.overflowByte = -1;
+    }
+    Utf16BEDecoder.prototype.write = function(buf) {
+      if (buf.length == 0) {
+        return "";
+      }
+      var buf2 = Buffer2.alloc(buf.length + 1);
+      var i = 0;
+      var j = 0;
+      if (this.overflowByte !== -1) {
+        buf2[0] = buf[0];
+        buf2[1] = this.overflowByte;
+        i = 1;
+        j = 2;
+      }
+      for (; i < buf.length - 1; i += 2, j += 2) {
+        buf2[j] = buf[i + 1];
+        buf2[j + 1] = buf[i];
+      }
+      this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1;
+      return buf2.slice(0, j).toString("ucs2");
+    };
+    Utf16BEDecoder.prototype.end = function() {
+      this.overflowByte = -1;
+    };
+    exports.utf16 = Utf16Codec;
+    function Utf16Codec(codecOptions, iconv2) {
+      this.iconv = iconv2;
+    }
+    Utf16Codec.prototype.encoder = Utf16Encoder;
+    Utf16Codec.prototype.decoder = Utf16Decoder;
+    function Utf16Encoder(options, codec) {
+      options = options || {};
+      if (options.addBOM === void 0) {
+        options.addBOM = true;
+      }
+      this.encoder = codec.iconv.getEncoder("utf-16le", options);
+    }
+    Utf16Encoder.prototype.write = function(str) {
+      return this.encoder.write(str);
+    };
+    Utf16Encoder.prototype.end = function() {
+      return this.encoder.end();
+    };
+    function Utf16Decoder(options, codec) {
+      this.decoder = null;
+      this.initialBufs = [];
+      this.initialBufsLen = 0;
+      this.options = options || {};
+      this.iconv = codec.iconv;
+    }
+    Utf16Decoder.prototype.write = function(buf) {
+      if (!this.decoder) {
+        this.initialBufs.push(buf);
+        this.initialBufsLen += buf.length;
+        if (this.initialBufsLen < 16) {
+          return "";
+        }
+        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+        var resStr = "";
+        for (var i = 0; i < this.initialBufs.length; i++) {
+          resStr += this.decoder.write(this.initialBufs[i]);
+        }
+        this.initialBufs.length = this.initialBufsLen = 0;
+        return resStr;
+      }
+      return this.decoder.write(buf);
+    };
+    Utf16Decoder.prototype.end = function() {
+      if (!this.decoder) {
+        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
+        this.decoder = this.iconv.getDecoder(encoding, this.options);
+        var resStr = "";
+        for (var i = 0; i < this.initialBufs.length; i++) {
+          resStr += this.decoder.write(this.initialBufs[i]);
+        }
+        var trail = this.decoder.end();
+        if (trail) {
+          resStr += trail;
+        }
+        this.initialBufs.length = this.initialBufsLen = 0;
+        return resStr;
+      }
+      return this.decoder.end();
+    };
+    function detectEncoding(bufs, defaultEncoding) {
+      var b = [];
+      var charsProcessed = 0;
+      var asciiCharsLE = 0;
+      var asciiCharsBE = 0;
+      outerLoop:
+        for (var i = 0; i < bufs.length; i++) {
+          var buf = bufs[i];
+          for (var j = 0; j < buf.length; j++) {
+            b.push(buf[j]);
+            if (b.length === 2) {
+              if (charsProcessed === 0) {
+                if (b[0] === 255 && b[1] === 254)
+                  return "utf-16le";
+                if (b[0] === 254 && b[1] === 255)
+                  return "utf-16be";
+              }
+              if (b[0] === 0 && b[1] !== 0)
+                asciiCharsBE++;
+              if (b[0] !== 0 && b[1] === 0)
+                asciiCharsLE++;
+              b.length = 0;
+              charsProcessed++;
+              if (charsProcessed >= 100) {
+                break outerLoop;
+              }
+            }
+          }
+        }
+      if (asciiCharsBE > asciiCharsLE)
+        return "utf-16be";
+      if (asciiCharsBE < asciiCharsLE)
+        return "utf-16le";
+      return defaultEncoding || "utf-16le";
+    }
+  }
+});
+
+// 
+var require_utf7 = __commonJS({
+  ""(exports) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    exports.utf7 = Utf7Codec;
+    exports.unicode11utf7 = "utf7";
+    function Utf7Codec(codecOptions, iconv2) {
+      this.iconv = iconv2;
+    }
+    Utf7Codec.prototype.encoder = Utf7Encoder;
+    Utf7Codec.prototype.decoder = Utf7Decoder;
+    Utf7Codec.prototype.bomAware = true;
+    var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
+    function Utf7Encoder(options, codec) {
+      this.iconv = codec.iconv;
+    }
+    Utf7Encoder.prototype.write = function(str) {
+      return Buffer2.from(str.replace(nonDirectChars, function(chunk) {
+        return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-";
+      }.bind(this)));
+    };
+    Utf7Encoder.prototype.end = function() {
+    };
+    function Utf7Decoder(options, codec) {
+      this.iconv = codec.iconv;
+      this.inBase64 = false;
+      this.base64Accum = "";
+    }
+    var base64Regex = /[A-Za-z0-9\/+]/;
+    var base64Chars = [];
+    for (i = 0; i < 256; i++) {
+      base64Chars[i] = base64Regex.test(String.fromCharCode(i));
+    }
+    var i;
+    var plusChar = "+".charCodeAt(0);
+    var minusChar = "-".charCodeAt(0);
+    var andChar = "&".charCodeAt(0);
+    Utf7Decoder.prototype.write = function(buf) {
+      var res = "";
+      var lastI = 0;
+      var inBase64 = this.inBase64;
+      var base64Accum = this.base64Accum;
+      for (var i2 = 0; i2 < buf.length; i2++) {
+        if (!inBase64) {
+          if (buf[i2] == plusChar) {
+            res += this.iconv.decode(buf.slice(lastI, i2), "ascii");
+            lastI = i2 + 1;
+            inBase64 = true;
+          }
+        } else {
+          if (!base64Chars[buf[i2]]) {
+            if (i2 == lastI && buf[i2] == minusChar) {
+              res += "+";
+            } else {
+              var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii");
+              res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be");
+            }
+            if (buf[i2] != minusChar) {
+              i2--;
+            }
+            lastI = i2 + 1;
+            inBase64 = false;
+            base64Accum = "";
+          }
+        }
+      }
+      if (!inBase64) {
+        res += this.iconv.decode(buf.slice(lastI), "ascii");
+      } else {
+        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii");
+        var canBeDecoded = b64str.length - b64str.length % 8;
+        base64Accum = b64str.slice(canBeDecoded);
+        b64str = b64str.slice(0, canBeDecoded);
+        res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be");
+      }
+      this.inBase64 = inBase64;
+      this.base64Accum = base64Accum;
+      return res;
+    };
+    Utf7Decoder.prototype.end = function() {
+      var res = "";
+      if (this.inBase64 && this.base64Accum.length > 0) {
+        res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be");
+      }
+      this.inBase64 = false;
+      this.base64Accum = "";
+      return res;
+    };
+    exports.utf7imap = Utf7IMAPCodec;
+    function Utf7IMAPCodec(codecOptions, iconv2) {
+      this.iconv = iconv2;
+    }
+    Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
+    Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
+    Utf7IMAPCodec.prototype.bomAware = true;
+    function Utf7IMAPEncoder(options, codec) {
+      this.iconv = codec.iconv;
+      this.inBase64 = false;
+      this.base64Accum = Buffer2.alloc(6);
+      this.base64AccumIdx = 0;
+    }
+    Utf7IMAPEncoder.prototype.write = function(str) {
+      var inBase64 = this.inBase64;
+      var base64Accum = this.base64Accum;
+      var base64AccumIdx = this.base64AccumIdx;
+      var buf = Buffer2.alloc(str.length * 5 + 10);
+      var bufIdx = 0;
+      for (var i2 = 0; i2 < str.length; i2++) {
+        var uChar = str.charCodeAt(i2);
+        if (uChar >= 32 && uChar <= 126) {
+          if (inBase64) {
+            if (base64AccumIdx > 0) {
+              bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx);
+              base64AccumIdx = 0;
+            }
+            buf[bufIdx++] = minusChar;
+            inBase64 = false;
+          }
+          if (!inBase64) {
+            buf[bufIdx++] = uChar;
+            if (uChar === andChar) {
+              buf[bufIdx++] = minusChar;
+            }
+          }
+        } else {
+          if (!inBase64) {
+            buf[bufIdx++] = andChar;
+            inBase64 = true;
+          }
+          if (inBase64) {
+            base64Accum[base64AccumIdx++] = uChar >> 8;
+            base64Accum[base64AccumIdx++] = uChar & 255;
+            if (base64AccumIdx == base64Accum.length) {
+              bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx);
+              base64AccumIdx = 0;
+            }
+          }
+        }
+      }
+      this.inBase64 = inBase64;
+      this.base64AccumIdx = base64AccumIdx;
+      return buf.slice(0, bufIdx);
+    };
+    Utf7IMAPEncoder.prototype.end = function() {
+      var buf = Buffer2.alloc(10);
+      var bufIdx = 0;
+      if (this.inBase64) {
+        if (this.base64AccumIdx > 0) {
+          bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx);
+          this.base64AccumIdx = 0;
+        }
+        buf[bufIdx++] = minusChar;
+        this.inBase64 = false;
+      }
+      return buf.slice(0, bufIdx);
+    };
+    function Utf7IMAPDecoder(options, codec) {
+      this.iconv = codec.iconv;
+      this.inBase64 = false;
+      this.base64Accum = "";
+    }
+    var base64IMAPChars = base64Chars.slice();
+    base64IMAPChars[",".charCodeAt(0)] = true;
+    Utf7IMAPDecoder.prototype.write = function(buf) {
+      var res = "";
+      var lastI = 0;
+      var inBase64 = this.inBase64;
+      var base64Accum = this.base64Accum;
+      for (var i2 = 0; i2 < buf.length; i2++) {
+        if (!inBase64) {
+          if (buf[i2] == andChar) {
+            res += this.iconv.decode(buf.slice(lastI, i2), "ascii");
+            lastI = i2 + 1;
+            inBase64 = true;
+          }
+        } else {
+          if (!base64IMAPChars[buf[i2]]) {
+            if (i2 == lastI && buf[i2] == minusChar) {
+              res += "&";
+            } else {
+              var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii").replace(/,/g, "/");
+              res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be");
+            }
+            if (buf[i2] != minusChar) {
+              i2--;
+            }
+            lastI = i2 + 1;
+            inBase64 = false;
+            base64Accum = "";
+          }
+        }
+      }
+      if (!inBase64) {
+        res += this.iconv.decode(buf.slice(lastI), "ascii");
+      } else {
+        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/");
+        var canBeDecoded = b64str.length - b64str.length % 8;
+        base64Accum = b64str.slice(canBeDecoded);
+        b64str = b64str.slice(0, canBeDecoded);
+        res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be");
+      }
+      this.inBase64 = inBase64;
+      this.base64Accum = base64Accum;
+      return res;
+    };
+    Utf7IMAPDecoder.prototype.end = function() {
+      var res = "";
+      if (this.inBase64 && this.base64Accum.length > 0) {
+        res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be");
+      }
+      this.inBase64 = false;
+      this.base64Accum = "";
+      return res;
+    };
+  }
+});
+
+// 
+var require_sbcs_codec = __commonJS({
+  ""(exports) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    exports._sbcs = SBCSCodec;
+    function SBCSCodec(codecOptions, iconv2) {
+      if (!codecOptions) {
+        throw new Error("SBCS codec is called without the data.");
+      }
+      if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) {
+        throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)");
+      }
+      if (codecOptions.chars.length === 128) {
+        var asciiString = "";
+        for (var i = 0; i < 128; i++) {
+          asciiString += String.fromCharCode(i);
+        }
+        codecOptions.chars = asciiString + codecOptions.chars;
+      }
+      this.decodeBuf = Buffer2.from(codecOptions.chars, "ucs2");
+      var encodeBuf = Buffer2.alloc(65536, iconv2.defaultCharSingleByte.charCodeAt(0));
+      for (var i = 0; i < codecOptions.chars.length; i++) {
+        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
+      }
+      this.encodeBuf = encodeBuf;
+    }
+    SBCSCodec.prototype.encoder = SBCSEncoder;
+    SBCSCodec.prototype.decoder = SBCSDecoder;
+    function SBCSEncoder(options, codec) {
+      this.encodeBuf = codec.encodeBuf;
+    }
+    SBCSEncoder.prototype.write = function(str) {
+      var buf = Buffer2.alloc(str.length);
+      for (var i = 0; i < str.length; i++) {
+        buf[i] = this.encodeBuf[str.charCodeAt(i)];
+      }
+      return buf;
+    };
+    SBCSEncoder.prototype.end = function() {
+    };
+    function SBCSDecoder(options, codec) {
+      this.decodeBuf = codec.decodeBuf;
+    }
+    SBCSDecoder.prototype.write = function(buf) {
+      var decodeBuf = this.decodeBuf;
+      var newBuf = Buffer2.alloc(buf.length * 2);
+      var idx1 = 0;
+      var idx2 = 0;
+      for (var i = 0; i < buf.length; i++) {
+        idx1 = buf[i] * 2;
+        idx2 = i * 2;
+        newBuf[idx2] = decodeBuf[idx1];
+        newBuf[idx2 + 1] = decodeBuf[idx1 + 1];
+      }
+      return newBuf.toString("ucs2");
+    };
+    SBCSDecoder.prototype.end = function() {
+    };
+  }
+});
+
+// 
+var require_sbcs_data = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    module.exports = {
+      // Not supported by iconv, not sure why.
+      10029: "maccenteuro",
+      maccenteuro: {
+        type: "_sbcs",
+        chars: "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"
+      },
+      808: "cp808",
+      ibm808: "cp808",
+      cp808: {
+        type: "_sbcs",
+        chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"
+      },
+      mik: {
+        type: "_sbcs",
+        chars: "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      cp720: {
+        type: "_sbcs",
+        chars: "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      // Aliases of generated encodings.
+      ascii8bit: "ascii",
+      usascii: "ascii",
+      ansix34: "ascii",
+      ansix341968: "ascii",
+      ansix341986: "ascii",
+      csascii: "ascii",
+      cp367: "ascii",
+      ibm367: "ascii",
+      isoir6: "ascii",
+      iso646us: "ascii",
+      iso646irv: "ascii",
+      us: "ascii",
+      latin1: "iso88591",
+      latin2: "iso88592",
+      latin3: "iso88593",
+      latin4: "iso88594",
+      latin5: "iso88599",
+      latin6: "iso885910",
+      latin7: "iso885913",
+      latin8: "iso885914",
+      latin9: "iso885915",
+      latin10: "iso885916",
+      csisolatin1: "iso88591",
+      csisolatin2: "iso88592",
+      csisolatin3: "iso88593",
+      csisolatin4: "iso88594",
+      csisolatincyrillic: "iso88595",
+      csisolatinarabic: "iso88596",
+      csisolatingreek: "iso88597",
+      csisolatinhebrew: "iso88598",
+      csisolatin5: "iso88599",
+      csisolatin6: "iso885910",
+      l1: "iso88591",
+      l2: "iso88592",
+      l3: "iso88593",
+      l4: "iso88594",
+      l5: "iso88599",
+      l6: "iso885910",
+      l7: "iso885913",
+      l8: "iso885914",
+      l9: "iso885915",
+      l10: "iso885916",
+      isoir14: "iso646jp",
+      isoir57: "iso646cn",
+      isoir100: "iso88591",
+      isoir101: "iso88592",
+      isoir109: "iso88593",
+      isoir110: "iso88594",
+      isoir144: "iso88595",
+      isoir127: "iso88596",
+      isoir126: "iso88597",
+      isoir138: "iso88598",
+      isoir148: "iso88599",
+      isoir157: "iso885910",
+      isoir166: "tis620",
+      isoir179: "iso885913",
+      isoir199: "iso885914",
+      isoir203: "iso885915",
+      isoir226: "iso885916",
+      cp819: "iso88591",
+      ibm819: "iso88591",
+      cyrillic: "iso88595",
+      arabic: "iso88596",
+      arabic8: "iso88596",
+      ecma114: "iso88596",
+      asmo708: "iso88596",
+      greek: "iso88597",
+      greek8: "iso88597",
+      ecma118: "iso88597",
+      elot928: "iso88597",
+      hebrew: "iso88598",
+      hebrew8: "iso88598",
+      turkish: "iso88599",
+      turkish8: "iso88599",
+      thai: "iso885911",
+      thai8: "iso885911",
+      celtic: "iso885914",
+      celtic8: "iso885914",
+      isoceltic: "iso885914",
+      tis6200: "tis620",
+      tis62025291: "tis620",
+      tis62025330: "tis620",
+      1e4: "macroman",
+      10006: "macgreek",
+      10007: "maccyrillic",
+      10079: "maciceland",
+      10081: "macturkish",
+      cspc8codepage437: "cp437",
+      cspc775baltic: "cp775",
+      cspc850multilingual: "cp850",
+      cspcp852: "cp852",
+      cspc862latinhebrew: "cp862",
+      cpgr: "cp869",
+      msee: "cp1250",
+      mscyrl: "cp1251",
+      msansi: "cp1252",
+      msgreek: "cp1253",
+      msturk: "cp1254",
+      mshebr: "cp1255",
+      msarab: "cp1256",
+      winbaltrim: "cp1257",
+      cp20866: "koi8r",
+      20866: "koi8r",
+      ibm878: "koi8r",
+      cskoi8r: "koi8r",
+      cp21866: "koi8u",
+      21866: "koi8u",
+      ibm1168: "koi8u",
+      strk10482002: "rk1048",
+      tcvn5712: "tcvn",
+      tcvn57121: "tcvn",
+      gb198880: "iso646cn",
+      cn: "iso646cn",
+      csiso14jisc6220ro: "iso646jp",
+      jisc62201969ro: "iso646jp",
+      jp: "iso646jp",
+      cshproman8: "hproman8",
+      r8: "hproman8",
+      roman8: "hproman8",
+      xroman8: "hproman8",
+      ibm1051: "hproman8",
+      mac: "macintosh",
+      csmacintosh: "macintosh"
+    };
+  }
+});
+
+// 
+var require_sbcs_data_generated = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    module.exports = {
+      "437": "cp437",
+      "737": "cp737",
+      "775": "cp775",
+      "850": "cp850",
+      "852": "cp852",
+      "855": "cp855",
+      "856": "cp856",
+      "857": "cp857",
+      "858": "cp858",
+      "860": "cp860",
+      "861": "cp861",
+      "862": "cp862",
+      "863": "cp863",
+      "864": "cp864",
+      "865": "cp865",
+      "866": "cp866",
+      "869": "cp869",
+      "874": "windows874",
+      "922": "cp922",
+      "1046": "cp1046",
+      "1124": "cp1124",
+      "1125": "cp1125",
+      "1129": "cp1129",
+      "1133": "cp1133",
+      "1161": "cp1161",
+      "1162": "cp1162",
+      "1163": "cp1163",
+      "1250": "windows1250",
+      "1251": "windows1251",
+      "1252": "windows1252",
+      "1253": "windows1253",
+      "1254": "windows1254",
+      "1255": "windows1255",
+      "1256": "windows1256",
+      "1257": "windows1257",
+      "1258": "windows1258",
+      "28591": "iso88591",
+      "28592": "iso88592",
+      "28593": "iso88593",
+      "28594": "iso88594",
+      "28595": "iso88595",
+      "28596": "iso88596",
+      "28597": "iso88597",
+      "28598": "iso88598",
+      "28599": "iso88599",
+      "28600": "iso885910",
+      "28601": "iso885911",
+      "28603": "iso885913",
+      "28604": "iso885914",
+      "28605": "iso885915",
+      "28606": "iso885916",
+      "windows874": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "win874": "windows874",
+      "cp874": "windows874",
+      "windows1250": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"
+      },
+      "win1250": "windows1250",
+      "cp1250": "windows1250",
+      "windows1251": {
+        "type": "_sbcs",
+        "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
+      },
+      "win1251": "windows1251",
+      "cp1251": "windows1251",
+      "windows1252": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
+      },
+      "win1252": "windows1252",
+      "cp1252": "windows1252",
+      "windows1253": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"
+      },
+      "win1253": "windows1253",
+      "cp1253": "windows1253",
+      "windows1254": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"
+      },
+      "win1254": "windows1254",
+      "cp1254": "windows1254",
+      "windows1255": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"
+      },
+      "win1255": "windows1255",
+      "cp1255": "windows1255",
+      "windows1256": {
+        "type": "_sbcs",
+        "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"
+      },
+      "win1256": "windows1256",
+      "cp1256": "windows1256",
+      "windows1257": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"
+      },
+      "win1257": "windows1257",
+      "cp1257": "windows1257",
+      "windows1258": {
+        "type": "_sbcs",
+        "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
+      },
+      "win1258": "windows1258",
+      "cp1258": "windows1258",
+      "iso88591": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
+      },
+      "cp28591": "iso88591",
+      "iso88592": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"
+      },
+      "cp28592": "iso88592",
+      "iso88593": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"
+      },
+      "cp28593": "iso88593",
+      "iso88594": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"
+      },
+      "cp28594": "iso88594",
+      "iso88595": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"
+      },
+      "cp28595": "iso88595",
+      "iso88596": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "cp28596": "iso88596",
+      "iso88597": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"
+      },
+      "cp28597": "iso88597",
+      "iso88598": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"
+      },
+      "cp28598": "iso88598",
+      "iso88599": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"
+      },
+      "cp28599": "iso88599",
+      "iso885910": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"
+      },
+      "cp28600": "iso885910",
+      "iso885911": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "cp28601": "iso885911",
+      "iso885913": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"
+      },
+      "cp28603": "iso885913",
+      "iso885914": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"
+      },
+      "cp28604": "iso885914",
+      "iso885915": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
+      },
+      "cp28605": "iso885915",
+      "iso885916": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"
+      },
+      "cp28606": "iso885916",
+      "cp437": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      "ibm437": "cp437",
+      "csibm437": "cp437",
+      "cp737": {
+        "type": "_sbcs",
+        "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      "ibm737": "cp737",
+      "csibm737": "cp737",
+      "cp775": {
+        "type": "_sbcs",
+        "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"
+      },
+      "ibm775": "cp775",
+      "csibm775": "cp775",
+      "cp850": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
+      },
+      "ibm850": "cp850",
+      "csibm850": "cp850",
+      "cp852": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"
+      },
+      "ibm852": "cp852",
+      "csibm852": "cp852",
+      "cp855": {
+        "type": "_sbcs",
+        "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"
+      },
+      "ibm855": "cp855",
+      "csibm855": "cp855",
+      "cp856": {
+        "type": "_sbcs",
+        "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
+      },
+      "ibm856": "cp856",
+      "csibm856": "cp856",
+      "cp857": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
+      },
+      "ibm857": "cp857",
+      "csibm857": "cp857",
+      "cp858": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"
+      },
+      "ibm858": "cp858",
+      "csibm858": "cp858",
+      "cp860": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      "ibm860": "cp860",
+      "csibm860": "cp860",
+      "cp861": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      "ibm861": "cp861",
+      "csibm861": "cp861",
+      "cp862": {
+        "type": "_sbcs",
+        "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      "ibm862": "cp862",
+      "csibm862": "cp862",
+      "cp863": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      "ibm863": "cp863",
+      "csibm863": "cp863",
+      "cp864": {
+        "type": "_sbcs",
+        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD"
+      },
+      "ibm864": "cp864",
+      "csibm864": "cp864",
+      "cp865": {
+        "type": "_sbcs",
+        "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"
+      },
+      "ibm865": "cp865",
+      "csibm865": "cp865",
+      "cp866": {
+        "type": "_sbcs",
+        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"
+      },
+      "ibm866": "cp866",
+      "csibm866": "cp866",
+      "cp869": {
+        "type": "_sbcs",
+        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"
+      },
+      "ibm869": "cp869",
+      "csibm869": "cp869",
+      "cp922": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"
+      },
+      "ibm922": "cp922",
+      "csibm922": "cp922",
+      "cp1046": {
+        "type": "_sbcs",
+        "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"
+      },
+      "ibm1046": "cp1046",
+      "csibm1046": "cp1046",
+      "cp1124": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"
+      },
+      "ibm1124": "cp1124",
+      "csibm1124": "cp1124",
+      "cp1125": {
+        "type": "_sbcs",
+        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"
+      },
+      "ibm1125": "cp1125",
+      "csibm1125": "cp1125",
+      "cp1129": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
+      },
+      "ibm1129": "cp1129",
+      "csibm1129": "cp1129",
+      "cp1133": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"
+      },
+      "ibm1133": "cp1133",
+      "csibm1133": "cp1133",
+      "cp1161": {
+        "type": "_sbcs",
+        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"
+      },
+      "ibm1161": "cp1161",
+      "csibm1161": "cp1161",
+      "cp1162": {
+        "type": "_sbcs",
+        "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "ibm1162": "cp1162",
+      "csibm1162": "cp1162",
+      "cp1163": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"
+      },
+      "ibm1163": "cp1163",
+      "csibm1163": "cp1163",
+      "maccroatian": {
+        "type": "_sbcs",
+        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"
+      },
+      "maccyrillic": {
+        "type": "_sbcs",
+        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"
+      },
+      "macgreek": {
+        "type": "_sbcs",
+        "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"
+      },
+      "maciceland": {
+        "type": "_sbcs",
+        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
+      },
+      "macroman": {
+        "type": "_sbcs",
+        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
+      },
+      "macromania": {
+        "type": "_sbcs",
+        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
+      },
+      "macthai": {
+        "type": "_sbcs",
+        "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "macturkish": {
+        "type": "_sbcs",
+        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
+      },
+      "macukraine": {
+        "type": "_sbcs",
+        "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"
+      },
+      "koi8r": {
+        "type": "_sbcs",
+        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
+      },
+      "koi8u": {
+        "type": "_sbcs",
+        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
+      },
+      "koi8ru": {
+        "type": "_sbcs",
+        "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
+      },
+      "koi8t": {
+        "type": "_sbcs",
+        "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"
+      },
+      "armscii8": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"
+      },
+      "rk1048": {
+        "type": "_sbcs",
+        "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
+      },
+      "tcvn": {
+        "type": "_sbcs",
+        "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b	\n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0"
+      },
+      "georgianacademy": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
+      },
+      "georgianps": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"
+      },
+      "pt154": {
+        "type": "_sbcs",
+        "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"
+      },
+      "viscii": {
+        "type": "_sbcs",
+        "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b	\n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE"
+      },
+      "iso646cn": {
+        "type": "_sbcs",
+        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "iso646jp": {
+        "type": "_sbcs",
+        "chars": "\0\x07\b	\n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "hproman8": {
+        "type": "_sbcs",
+        "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"
+      },
+      "macintosh": {
+        "type": "_sbcs",
+        "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"
+      },
+      "ascii": {
+        "type": "_sbcs",
+        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"
+      },
+      "tis620": {
+        "type": "_sbcs",
+        "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"
+      }
+    };
+  }
+});
+
+// 
+var require_dbcs_codec = __commonJS({
+  ""(exports) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    exports._dbcs = DBCSCodec;
+    var UNASSIGNED = -1;
+    var GB18030_CODE = -2;
+    var SEQ_START = -10;
+    var NODE_START = -1e3;
+    var UNASSIGNED_NODE = new Array(256);
+    var DEF_CHAR = -1;
+    for (i = 0; i < 256; i++) {
+      UNASSIGNED_NODE[i] = UNASSIGNED;
+    }
+    var i;
+    function DBCSCodec(codecOptions, iconv2) {
+      this.encodingName = codecOptions.encodingName;
+      if (!codecOptions) {
+        throw new Error("DBCS codec is called without the data.");
+      }
+      if (!codecOptions.table) {
+        throw new Error("Encoding '" + this.encodingName + "' has no data.");
+      }
+      var mappingTable = codecOptions.table();
+      this.decodeTables = [];
+      this.decodeTables[0] = UNASSIGNED_NODE.slice(0);
+      this.decodeTableSeq = [];
+      for (var i2 = 0; i2 < mappingTable.length; i2++) {
+        this._addDecodeChunk(mappingTable[i2]);
+      }
+      if (typeof codecOptions.gb18030 === "function") {
+        this.gb18030 = codecOptions.gb18030();
+        var commonThirdByteNodeIdx = this.decodeTables.length;
+        this.decodeTables.push(UNASSIGNED_NODE.slice(0));
+        var commonFourthByteNodeIdx = this.decodeTables.length;
+        this.decodeTables.push(UNASSIGNED_NODE.slice(0));
+        var firstByteNode = this.decodeTables[0];
+        for (var i2 = 129; i2 <= 254; i2++) {
+          var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i2]];
+          for (var j = 48; j <= 57; j++) {
+            if (secondByteNode[j] === UNASSIGNED) {
+              secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;
+            } else if (secondByteNode[j] > NODE_START) {
+              throw new Error("gb18030 decode tables conflict at byte 2");
+            }
+            var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];
+            for (var k = 129; k <= 254; k++) {
+              if (thirdByteNode[k] === UNASSIGNED) {
+                thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;
+              } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {
+                continue;
+              } else if (thirdByteNode[k] > NODE_START) {
+                throw new Error("gb18030 decode tables conflict at byte 3");
+              }
+              var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];
+              for (var l = 48; l <= 57; l++) {
+                if (fourthByteNode[l] === UNASSIGNED) {
+                  fourthByteNode[l] = GB18030_CODE;
+                }
+              }
+            }
+          }
+        }
+      }
+      this.defaultCharUnicode = iconv2.defaultCharUnicode;
+      this.encodeTable = [];
+      this.encodeTableSeq = [];
+      var skipEncodeChars = {};
+      if (codecOptions.encodeSkipVals) {
+        for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) {
+          var val = codecOptions.encodeSkipVals[i2];
+          if (typeof val === "number") {
+            skipEncodeChars[val] = true;
+          } else {
+            for (var j = val.from; j <= val.to; j++) {
+              skipEncodeChars[j] = true;
+            }
+          }
+        }
+      }
+      this._fillEncodeTable(0, 0, skipEncodeChars);
+      if (codecOptions.encodeAdd) {
+        for (var uChar in codecOptions.encodeAdd) {
+          if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) {
+            this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
+          }
+        }
+      }
+      this.defCharSB = this.encodeTable[0][iconv2.defaultCharSingleByte.charCodeAt(0)];
+      if (this.defCharSB === UNASSIGNED)
+        this.defCharSB = this.encodeTable[0]["?"];
+      if (this.defCharSB === UNASSIGNED)
+        this.defCharSB = "?".charCodeAt(0);
+    }
+    DBCSCodec.prototype.encoder = DBCSEncoder;
+    DBCSCodec.prototype.decoder = DBCSDecoder;
+    DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
+      var bytes = [];
+      for (; addr > 0; addr >>>= 8) {
+        bytes.push(addr & 255);
+      }
+      if (bytes.length == 0) {
+        bytes.push(0);
+      }
+      var node = this.decodeTables[0];
+      for (var i2 = bytes.length - 1; i2 > 0; i2--) {
+        var val = node[bytes[i2]];
+        if (val == UNASSIGNED) {
+          node[bytes[i2]] = NODE_START - this.decodeTables.length;
+          this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
+        } else if (val <= NODE_START) {
+          node = this.decodeTables[NODE_START - val];
+        } else {
+          throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
+        }
+      }
+      return node;
+    };
+    DBCSCodec.prototype._addDecodeChunk = function(chunk) {
+      var curAddr = parseInt(chunk[0], 16);
+      var writeTable = this._getDecodeTrieNode(curAddr);
+      curAddr = curAddr & 255;
+      for (var k = 1; k < chunk.length; k++) {
+        var part = chunk[k];
+        if (typeof part === "string") {
+          for (var l = 0; l < part.length; ) {
+            var code = part.charCodeAt(l++);
+            if (code >= 55296 && code < 56320) {
+              var codeTrail = part.charCodeAt(l++);
+              if (codeTrail >= 56320 && codeTrail < 57344) {
+                writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320);
+              } else {
+                throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]);
+              }
+            } else if (code > 4080 && code <= 4095) {
+              var len = 4095 - code + 2;
+              var seq = [];
+              for (var m = 0; m < len; m++) {
+                seq.push(part.charCodeAt(l++));
+              }
+              writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
+              this.decodeTableSeq.push(seq);
+            } else {
+              writeTable[curAddr++] = code;
+            }
+          }
+        } else if (typeof part === "number") {
+          var charCode = writeTable[curAddr - 1] + 1;
+          for (var l = 0; l < part; l++) {
+            writeTable[curAddr++] = charCode++;
+          }
+        } else {
+          throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]);
+        }
+      }
+      if (curAddr > 255) {
+        throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
+      }
+    };
+    DBCSCodec.prototype._getEncodeBucket = function(uCode) {
+      var high = uCode >> 8;
+      if (this.encodeTable[high] === void 0) {
+        this.encodeTable[high] = UNASSIGNED_NODE.slice(0);
+      }
+      return this.encodeTable[high];
+    };
+    DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
+      var bucket = this._getEncodeBucket(uCode);
+      var low = uCode & 255;
+      if (bucket[low] <= SEQ_START) {
+        this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode;
+      } else if (bucket[low] == UNASSIGNED) {
+        bucket[low] = dbcsCode;
+      }
+    };
+    DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
+      var uCode = seq[0];
+      var bucket = this._getEncodeBucket(uCode);
+      var low = uCode & 255;
+      var node;
+      if (bucket[low] <= SEQ_START) {
+        node = this.encodeTableSeq[SEQ_START - bucket[low]];
+      } else {
+        node = {};
+        if (bucket[low] !== UNASSIGNED)
+          node[DEF_CHAR] = bucket[low];
+        bucket[low] = SEQ_START - this.encodeTableSeq.length;
+        this.encodeTableSeq.push(node);
+      }
+      for (var j = 1; j < seq.length - 1; j++) {
+        var oldVal = node[uCode];
+        if (typeof oldVal === "object") {
+          node = oldVal;
+        } else {
+          node = node[uCode] = {};
+          if (oldVal !== void 0) {
+            node[DEF_CHAR] = oldVal;
+          }
+        }
+      }
+      uCode = seq[seq.length - 1];
+      node[uCode] = dbcsCode;
+    };
+    DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
+      var node = this.decodeTables[nodeIdx];
+      var hasValues = false;
+      var subNodeEmpty = {};
+      for (var i2 = 0; i2 < 256; i2++) {
+        var uCode = node[i2];
+        var mbCode = prefix + i2;
+        if (skipEncodeChars[mbCode]) {
+          continue;
+        }
+        if (uCode >= 0) {
+          this._setEncodeChar(uCode, mbCode);
+          hasValues = true;
+        } else if (uCode <= NODE_START) {
+          var subNodeIdx = NODE_START - uCode;
+          if (!subNodeEmpty[subNodeIdx]) {
+            var newPrefix = mbCode << 8 >>> 0;
+            if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) {
+              hasValues = true;
+            } else {
+              subNodeEmpty[subNodeIdx] = true;
+            }
+          }
+        } else if (uCode <= SEQ_START) {
+          this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
+          hasValues = true;
+        }
+      }
+      return hasValues;
+    };
+    function DBCSEncoder(options, codec) {
+      this.leadSurrogate = -1;
+      this.seqObj = void 0;
+      this.encodeTable = codec.encodeTable;
+      this.encodeTableSeq = codec.encodeTableSeq;
+      this.defaultCharSingleByte = codec.defCharSB;
+      this.gb18030 = codec.gb18030;
+    }
+    DBCSEncoder.prototype.write = function(str) {
+      var newBuf = Buffer2.alloc(str.length * (this.gb18030 ? 4 : 3));
+      var leadSurrogate = this.leadSurrogate;
+      var seqObj = this.seqObj;
+      var nextChar = -1;
+      var i2 = 0;
+      var j = 0;
+      while (true) {
+        if (nextChar === -1) {
+          if (i2 == str.length)
+            break;
+          var uCode = str.charCodeAt(i2++);
+        } else {
+          var uCode = nextChar;
+          nextChar = -1;
+        }
+        if (uCode >= 55296 && uCode < 57344) {
+          if (uCode < 56320) {
+            if (leadSurrogate === -1) {
+              leadSurrogate = uCode;
+              continue;
+            } else {
+              leadSurrogate = uCode;
+              uCode = UNASSIGNED;
+            }
+          } else {
+            if (leadSurrogate !== -1) {
+              uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320);
+              leadSurrogate = -1;
+            } else {
+              uCode = UNASSIGNED;
+            }
+          }
+        } else if (leadSurrogate !== -1) {
+          nextChar = uCode;
+          uCode = UNASSIGNED;
+          leadSurrogate = -1;
+        }
+        var dbcsCode = UNASSIGNED;
+        if (seqObj !== void 0 && uCode != UNASSIGNED) {
+          var resCode = seqObj[uCode];
+          if (typeof resCode === "object") {
+            seqObj = resCode;
+            continue;
+          } else if (typeof resCode === "number") {
+            dbcsCode = resCode;
+          } else if (resCode == void 0) {
+            resCode = seqObj[DEF_CHAR];
+            if (resCode !== void 0) {
+              dbcsCode = resCode;
+              nextChar = uCode;
+            } else {
+            }
+          }
+          seqObj = void 0;
+        } else if (uCode >= 0) {
+          var subtable = this.encodeTable[uCode >> 8];
+          if (subtable !== void 0) {
+            dbcsCode = subtable[uCode & 255];
+          }
+          if (dbcsCode <= SEQ_START) {
+            seqObj = this.encodeTableSeq[SEQ_START - dbcsCode];
+            continue;
+          }
+          if (dbcsCode == UNASSIGNED && this.gb18030) {
+            var idx = findIdx(this.gb18030.uChars, uCode);
+            if (idx != -1) {
+              var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
+              newBuf[j++] = 129 + Math.floor(dbcsCode / 12600);
+              dbcsCode = dbcsCode % 12600;
+              newBuf[j++] = 48 + Math.floor(dbcsCode / 1260);
+              dbcsCode = dbcsCode % 1260;
+              newBuf[j++] = 129 + Math.floor(dbcsCode / 10);
+              dbcsCode = dbcsCode % 10;
+              newBuf[j++] = 48 + dbcsCode;
+              continue;
+            }
+          }
+        }
+        if (dbcsCode === UNASSIGNED) {
+          dbcsCode = this.defaultCharSingleByte;
+        }
+        if (dbcsCode < 256) {
+          newBuf[j++] = dbcsCode;
+        } else if (dbcsCode < 65536) {
+          newBuf[j++] = dbcsCode >> 8;
+          newBuf[j++] = dbcsCode & 255;
+        } else if (dbcsCode < 16777216) {
+          newBuf[j++] = dbcsCode >> 16;
+          newBuf[j++] = dbcsCode >> 8 & 255;
+          newBuf[j++] = dbcsCode & 255;
+        } else {
+          newBuf[j++] = dbcsCode >>> 24;
+          newBuf[j++] = dbcsCode >>> 16 & 255;
+          newBuf[j++] = dbcsCode >>> 8 & 255;
+          newBuf[j++] = dbcsCode & 255;
+        }
+      }
+      this.seqObj = seqObj;
+      this.leadSurrogate = leadSurrogate;
+      return newBuf.slice(0, j);
+    };
+    DBCSEncoder.prototype.end = function() {
+      if (this.leadSurrogate === -1 && this.seqObj === void 0) {
+        return;
+      }
+      var newBuf = Buffer2.alloc(10);
+      var j = 0;
+      if (this.seqObj) {
+        var dbcsCode = this.seqObj[DEF_CHAR];
+        if (dbcsCode !== void 0) {
+          if (dbcsCode < 256) {
+            newBuf[j++] = dbcsCode;
+          } else {
+            newBuf[j++] = dbcsCode >> 8;
+            newBuf[j++] = dbcsCode & 255;
+          }
+        } else {
+        }
+        this.seqObj = void 0;
+      }
+      if (this.leadSurrogate !== -1) {
+        newBuf[j++] = this.defaultCharSingleByte;
+        this.leadSurrogate = -1;
+      }
+      return newBuf.slice(0, j);
+    };
+    DBCSEncoder.prototype.findIdx = findIdx;
+    function DBCSDecoder(options, codec) {
+      this.nodeIdx = 0;
+      this.prevBytes = [];
+      this.decodeTables = codec.decodeTables;
+      this.decodeTableSeq = codec.decodeTableSeq;
+      this.defaultCharUnicode = codec.defaultCharUnicode;
+      this.gb18030 = codec.gb18030;
+    }
+    DBCSDecoder.prototype.write = function(buf) {
+      var newBuf = Buffer2.alloc(buf.length * 2);
+      var nodeIdx = this.nodeIdx;
+      var prevBytes = this.prevBytes;
+      var prevOffset = this.prevBytes.length;
+      var seqStart = -this.prevBytes.length;
+      var uCode;
+      for (var i2 = 0, j = 0; i2 < buf.length; i2++) {
+        var curByte = i2 >= 0 ? buf[i2] : prevBytes[i2 + prevOffset];
+        var uCode = this.decodeTables[nodeIdx][curByte];
+        if (uCode >= 0) {
+        } else if (uCode === UNASSIGNED) {
+          uCode = this.defaultCharUnicode.charCodeAt(0);
+          i2 = seqStart;
+        } else if (uCode === GB18030_CODE) {
+          if (i2 >= 3) {
+            var ptr = (buf[i2 - 3] - 129) * 12600 + (buf[i2 - 2] - 48) * 1260 + (buf[i2 - 1] - 129) * 10 + (curByte - 48);
+          } else {
+            var ptr = (prevBytes[i2 - 3 + prevOffset] - 129) * 12600 + ((i2 - 2 >= 0 ? buf[i2 - 2] : prevBytes[i2 - 2 + prevOffset]) - 48) * 1260 + ((i2 - 1 >= 0 ? buf[i2 - 1] : prevBytes[i2 - 1 + prevOffset]) - 129) * 10 + (curByte - 48);
+          }
+          var idx = findIdx(this.gb18030.gbChars, ptr);
+          uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
+        } else if (uCode <= NODE_START) {
+          nodeIdx = NODE_START - uCode;
+          continue;
+        } else if (uCode <= SEQ_START) {
+          var seq = this.decodeTableSeq[SEQ_START - uCode];
+          for (var k = 0; k < seq.length - 1; k++) {
+            uCode = seq[k];
+            newBuf[j++] = uCode & 255;
+            newBuf[j++] = uCode >> 8;
+          }
+          uCode = seq[seq.length - 1];
+        } else {
+          throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
+        }
+        if (uCode >= 65536) {
+          uCode -= 65536;
+          var uCodeLead = 55296 | uCode >> 10;
+          newBuf[j++] = uCodeLead & 255;
+          newBuf[j++] = uCodeLead >> 8;
+          uCode = 56320 | uCode & 1023;
+        }
+        newBuf[j++] = uCode & 255;
+        newBuf[j++] = uCode >> 8;
+        nodeIdx = 0;
+        seqStart = i2 + 1;
+      }
+      this.nodeIdx = nodeIdx;
+      this.prevBytes = seqStart >= 0 ? Array.prototype.slice.call(buf, seqStart) : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));
+      return newBuf.slice(0, j).toString("ucs2");
+    };
+    DBCSDecoder.prototype.end = function() {
+      var ret = "";
+      while (this.prevBytes.length > 0) {
+        ret += this.defaultCharUnicode;
+        var bytesArr = this.prevBytes.slice(1);
+        this.prevBytes = [];
+        this.nodeIdx = 0;
+        if (bytesArr.length > 0) {
+          ret += this.write(bytesArr);
+        }
+      }
+      this.prevBytes = [];
+      this.nodeIdx = 0;
+      return ret;
+    };
+    function findIdx(table, val) {
+      if (table[0] > val) {
+        return -1;
+      }
+      var l = 0;
+      var r = table.length;
+      while (l < r - 1) {
+        var mid = l + (r - l + 1 >> 1);
+        if (table[mid] <= val) {
+          l = mid;
+        } else {
+          r = mid;
+        }
+      }
+      return l;
+    }
+  }
+});
+
+// 
+var require_shiftjis = __commonJS({
+  ""(exports, module) {
+    module.exports = [
+      ["0", "\0", 128],
+      ["a1", "\uFF61", 62],
+      ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"],
+      ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],
+      ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],
+      ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],
+      ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],
+      ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],
+      ["81fc", "\u25EF"],
+      ["824f", "\uFF10", 9],
+      ["8260", "\uFF21", 25],
+      ["8281", "\uFF41", 25],
+      ["829f", "\u3041", 82],
+      ["8340", "\u30A1", 62],
+      ["8380", "\u30E0", 22],
+      ["839f", "\u0391", 16, "\u03A3", 6],
+      ["83bf", "\u03B1", 16, "\u03C3", 6],
+      ["8440", "\u0410", 5, "\u0401\u0416", 25],
+      ["8470", "\u0430", 5, "\u0451\u0436", 7],
+      ["8480", "\u043E", 17],
+      ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],
+      ["8740", "\u2460", 19, "\u2160", 9],
+      ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],
+      ["877e", "\u337B"],
+      ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],
+      ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],
+      ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],
+      ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],
+      ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],
+      ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],
+      ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],
+      ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],
+      ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],
+      ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],
+      ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],
+      ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],
+      ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],
+      ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],
+      ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],
+      ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],
+      ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],
+      ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],
+      ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],
+      ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],
+      ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],
+      ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],
+      ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],
+      ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],
+      ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],
+      ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],
+      ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],
+      ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],
+      ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],
+      ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],
+      ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],
+      ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],
+      ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],
+      ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],
+      ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],
+      ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],
+      ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],
+      ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],
+      ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],
+      ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],
+      ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],
+      ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],
+      ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],
+      ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],
+      ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],
+      ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],
+      ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],
+      ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],
+      ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],
+      ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],
+      ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],
+      ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],
+      ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],
+      ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],
+      ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],
+      ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],
+      ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],
+      ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],
+      ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],
+      ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],
+      ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],
+      ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],
+      ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],
+      ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],
+      ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],
+      ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],
+      ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],
+      ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],
+      ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],
+      ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],
+      ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],
+      ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],
+      ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],
+      ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],
+      ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"],
+      ["f040", "\uE000", 62],
+      ["f080", "\uE03F", 124],
+      ["f140", "\uE0BC", 62],
+      ["f180", "\uE0FB", 124],
+      ["f240", "\uE178", 62],
+      ["f280", "\uE1B7", 124],
+      ["f340", "\uE234", 62],
+      ["f380", "\uE273", 124],
+      ["f440", "\uE2F0", 62],
+      ["f480", "\uE32F", 124],
+      ["f540", "\uE3AC", 62],
+      ["f580", "\uE3EB", 124],
+      ["f640", "\uE468", 62],
+      ["f680", "\uE4A7", 124],
+      ["f740", "\uE524", 62],
+      ["f780", "\uE563", 124],
+      ["f840", "\uE5E0", 62],
+      ["f880", "\uE61F", 124],
+      ["f940", "\uE69C"],
+      ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],
+      ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],
+      ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],
+      ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],
+      ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]
+    ];
+  }
+});
+
+// 
+var require_eucjp = __commonJS({
+  ""(exports, module) {
+    module.exports = [
+      ["0", "\0", 127],
+      ["8ea1", "\uFF61", 62],
+      ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],
+      ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],
+      ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],
+      ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],
+      ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],
+      ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],
+      ["a2fe", "\u25EF"],
+      ["a3b0", "\uFF10", 9],
+      ["a3c1", "\uFF21", 25],
+      ["a3e1", "\uFF41", 25],
+      ["a4a1", "\u3041", 82],
+      ["a5a1", "\u30A1", 85],
+      ["a6a1", "\u0391", 16, "\u03A3", 6],
+      ["a6c1", "\u03B1", 16, "\u03C3", 6],
+      ["a7a1", "\u0410", 5, "\u0401\u0416", 25],
+      ["a7d1", "\u0430", 5, "\u0451\u0436", 25],
+      ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],
+      ["ada1", "\u2460", 19, "\u2160", 9],
+      ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],
+      ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],
+      ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],
+      ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],
+      ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],
+      ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],
+      ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],
+      ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],
+      ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],
+      ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],
+      ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],
+      ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],
+      ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],
+      ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],
+      ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],
+      ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],
+      ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],
+      ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],
+      ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],
+      ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],
+      ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],
+      ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],
+      ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],
+      ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],
+      ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],
+      ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],
+      ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],
+      ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],
+      ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],
+      ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],
+      ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],
+      ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],
+      ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],
+      ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],
+      ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],
+      ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],
+      ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],
+      ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],
+      ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],
+      ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],
+      ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],
+      ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],
+      ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],
+      ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],
+      ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],
+      ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],
+      ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],
+      ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],
+      ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],
+      ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],
+      ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],
+      ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],
+      ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],
+      ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],
+      ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],
+      ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],
+      ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],
+      ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],
+      ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],
+      ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],
+      ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],
+      ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],
+      ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],
+      ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],
+      ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],
+      ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],
+      ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],
+      ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],
+      ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],
+      ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],
+      ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"],
+      ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],
+      ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],
+      ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],
+      ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],
+      ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"],
+      ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],
+      ["8fa2c2", "\xA1\xA6\xBF"],
+      ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],
+      ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"],
+      ["8fa6e7", "\u038C"],
+      ["8fa6e9", "\u038E\u03AB"],
+      ["8fa6ec", "\u038F"],
+      ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],
+      ["8fa7c2", "\u0402", 10, "\u040E\u040F"],
+      ["8fa7f2", "\u0452", 10, "\u045E\u045F"],
+      ["8fa9a1", "\xC6\u0110"],
+      ["8fa9a4", "\u0126"],
+      ["8fa9a6", "\u0132"],
+      ["8fa9a8", "\u0141\u013F"],
+      ["8fa9ab", "\u014A\xD8\u0152"],
+      ["8fa9af", "\u0166\xDE"],
+      ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],
+      ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],
+      ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],
+      ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],
+      ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],
+      ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],
+      ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],
+      ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],
+      ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],
+      ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],
+      ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],
+      ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],
+      ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"],
+      ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],
+      ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],
+      ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],
+      ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],
+      ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],
+      ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],
+      ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],
+      ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],
+      ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],
+      ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],
+      ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],
+      ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],
+      ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],
+      ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],
+      ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],
+      ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],
+      ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],
+      ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],
+      ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],
+      ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],
+      ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],
+      ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],
+      ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],
+      ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],
+      ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],
+      ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],
+      ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],
+      ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5],
+      ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],
+      ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],
+      ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],
+      ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],
+      ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],
+      ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],
+      ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],
+      ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],
+      ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],
+      ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],
+      ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],
+      ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],
+      ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],
+      ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],
+      ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],
+      ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],
+      ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],
+      ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],
+      ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],
+      ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],
+      ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],
+      ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],
+      ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4],
+      ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],
+      ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],
+      ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],
+      ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]
+    ];
+  }
+});
+
+// 
+var require_cp936 = __commonJS({
+  ""(exports, module) {
+    module.exports = [
+      ["0", "\0", 127, "\u20AC"],
+      ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"],
+      ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],
+      ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11],
+      ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"],
+      ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"],
+      ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5],
+      ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],
+      ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],
+      ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],
+      ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],
+      ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],
+      ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"],
+      ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4],
+      ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6],
+      ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],
+      ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7],
+      ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],
+      ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],
+      ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],
+      ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5],
+      ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"],
+      ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6],
+      ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],
+      ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4],
+      ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4],
+      ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],
+      ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],
+      ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6],
+      ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],
+      ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],
+      ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],
+      ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6],
+      ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"],
+      ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"],
+      ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],
+      ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],
+      ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"],
+      ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],
+      ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8],
+      ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"],
+      ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"],
+      ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],
+      ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],
+      ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5],
+      ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],
+      ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],
+      ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],
+      ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"],
+      ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5],
+      ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6],
+      ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],
+      ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"],
+      ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],
+      ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],
+      ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],
+      ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5],
+      ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"],
+      ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],
+      ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6],
+      ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"],
+      ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"],
+      ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4],
+      ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19],
+      ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],
+      ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],
+      ["a2a1", "\u2170", 9],
+      ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9],
+      ["a2e5", "\u3220", 9],
+      ["a2f1", "\u2160", 11],
+      ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"],
+      ["a4a1", "\u3041", 82],
+      ["a5a1", "\u30A1", 85],
+      ["a6a1", "\u0391", 16, "\u03A3", 6],
+      ["a6c1", "\u03B1", 16, "\u03C3", 6],
+      ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],
+      ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"],
+      ["a6f4", "\uFE33\uFE34"],
+      ["a7a1", "\u0410", 5, "\u0401\u0416", 25],
+      ["a7d1", "\u0430", 5, "\u0451\u0436", 25],
+      ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6],
+      ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],
+      ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],
+      ["a8bd", "\u0144\u0148"],
+      ["a8c0", "\u0261"],
+      ["a8c5", "\u3105", 36],
+      ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],
+      ["a959", "\u2121\u3231"],
+      ["a95c", "\u2010"],
+      ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8],
+      ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"],
+      ["a996", "\u3007"],
+      ["a9a4", "\u2500", 75],
+      ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8],
+      ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"],
+      ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4],
+      ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4],
+      ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11],
+      ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"],
+      ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12],
+      ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"],
+      ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],
+      ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"],
+      ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],
+      ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],
+      ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],
+      ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],
+      ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],
+      ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],
+      ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4],
+      ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],
+      ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],
+      ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],
+      ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9],
+      ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],
+      ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"],
+      ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],
+      ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],
+      ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],
+      ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16],
+      ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],
+      ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],
+      ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],
+      ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"],
+      ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],
+      ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"],
+      ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],
+      ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9],
+      ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],
+      ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5],
+      ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],
+      ["bd40", "\u7D37", 54, "\u7D6F", 7],
+      ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],
+      ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42],
+      ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],
+      ["bf40", "\u7DFB", 62],
+      ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],
+      ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"],
+      ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],
+      ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"],
+      ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],
+      ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],
+      ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],
+      ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],
+      ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],
+      ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"],
+      ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],
+      ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],
+      ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],
+      ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],
+      ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],
+      ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"],
+      ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],
+      ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"],
+      ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],
+      ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],
+      ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],
+      ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10],
+      ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],
+      ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"],
+      ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],
+      ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],
+      ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],
+      ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],
+      ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],
+      ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"],
+      ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],
+      ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9],
+      ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],
+      ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],
+      ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],
+      ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5],
+      ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],
+      ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"],
+      ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],
+      ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6],
+      ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],
+      ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21],
+      ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],
+      ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46],
+      ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],
+      ["d640", "\u8AE4", 34, "\u8B08", 27],
+      ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],
+      ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25],
+      ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],
+      ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"],
+      ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],
+      ["d940", "\u8CAE", 62],
+      ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],
+      ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"],
+      ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],
+      ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],
+      ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],
+      ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7],
+      ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],
+      ["dd40", "\u8EE5", 62],
+      ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],
+      ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],
+      ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],
+      ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"],
+      ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],
+      ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"],
+      ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],
+      ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],
+      ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],
+      ["e240", "\u91E6", 62],
+      ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],
+      ["e340", "\u9246", 45, "\u9275", 16],
+      ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],
+      ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31],
+      ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],
+      ["e540", "\u930A", 51, "\u933F", 10],
+      ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],
+      ["e640", "\u936C", 34, "\u9390", 27],
+      ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],
+      ["e740", "\u93CE", 7, "\u93D7", 54],
+      ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],
+      ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"],
+      ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],
+      ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42],
+      ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],
+      ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],
+      ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],
+      ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"],
+      ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],
+      ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7],
+      ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],
+      ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46],
+      ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],
+      ["ee40", "\u980F", 62],
+      ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],
+      ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4],
+      ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],
+      ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26],
+      ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],
+      ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47],
+      ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],
+      ["f240", "\u99FA", 62],
+      ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],
+      ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],
+      ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],
+      ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5],
+      ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],
+      ["f540", "\u9B7C", 62],
+      ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],
+      ["f640", "\u9BDC", 62],
+      ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],
+      ["f740", "\u9C3C", 62],
+      ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],
+      ["f840", "\u9CE3", 62],
+      ["f880", "\u9D22", 32],
+      ["f940", "\u9D43", 62],
+      ["f980", "\u9D82", 32],
+      ["fa40", "\u9DA3", 62],
+      ["fa80", "\u9DE2", 32],
+      ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"],
+      ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"],
+      ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6],
+      ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"],
+      ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38],
+      ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"],
+      ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]
+    ];
+  }
+});
+
+// 
+var require_gbk_added = __commonJS({
+  ""(exports, module) {
+    module.exports = [
+      ["a140", "\uE4C6", 62],
+      ["a180", "\uE505", 32],
+      ["a240", "\uE526", 62],
+      ["a280", "\uE565", 32],
+      ["a2ab", "\uE766", 5],
+      ["a2e3", "\u20AC\uE76D"],
+      ["a2ef", "\uE76E\uE76F"],
+      ["a2fd", "\uE770\uE771"],
+      ["a340", "\uE586", 62],
+      ["a380", "\uE5C5", 31, "\u3000"],
+      ["a440", "\uE5E6", 62],
+      ["a480", "\uE625", 32],
+      ["a4f4", "\uE772", 10],
+      ["a540", "\uE646", 62],
+      ["a580", "\uE685", 32],
+      ["a5f7", "\uE77D", 7],
+      ["a640", "\uE6A6", 62],
+      ["a680", "\uE6E5", 32],
+      ["a6b9", "\uE785", 7],
+      ["a6d9", "\uE78D", 6],
+      ["a6ec", "\uE794\uE795"],
+      ["a6f3", "\uE796"],
+      ["a6f6", "\uE797", 8],
+      ["a740", "\uE706", 62],
+      ["a780", "\uE745", 32],
+      ["a7c2", "\uE7A0", 14],
+      ["a7f2", "\uE7AF", 12],
+      ["a896", "\uE7BC", 10],
+      ["a8bc", "\u1E3F"],
+      ["a8bf", "\u01F9"],
+      ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"],
+      ["a8ea", "\uE7CD", 20],
+      ["a958", "\uE7E2"],
+      ["a95b", "\uE7E3"],
+      ["a95d", "\uE7E4\uE7E5\uE7E6"],
+      ["a989", "\u303E\u2FF0", 11],
+      ["a997", "\uE7F4", 12],
+      ["a9f0", "\uE801", 14],
+      ["aaa1", "\uE000", 93],
+      ["aba1", "\uE05E", 93],
+      ["aca1", "\uE0BC", 93],
+      ["ada1", "\uE11A", 93],
+      ["aea1", "\uE178", 93],
+      ["afa1", "\uE1D6", 93],
+      ["d7fa", "\uE810", 4],
+      ["f8a1", "\uE234", 93],
+      ["f9a1", "\uE292", 93],
+      ["faa1", "\uE2F0", 93],
+      ["fba1", "\uE34E", 93],
+      ["fca1", "\uE3AC", 93],
+      ["fda1", "\uE40A", 93],
+      ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],
+      ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93],
+      ["8135f437", "\uE7C7"]
+    ];
+  }
+});
+
+// 
+var require_gb18030_ranges = __commonJS({
+  ""(exports, module) {
+    module.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] };
+  }
+});
+
+// 
+var require_cp949 = __commonJS({
+  ""(exports, module) {
+    module.exports = [
+      ["0", "\0", 127],
+      ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"],
+      ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"],
+      ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"],
+      ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5],
+      ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],
+      ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18],
+      ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7],
+      ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],
+      ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8],
+      ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8],
+      ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18],
+      ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"],
+      ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4],
+      ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"],
+      ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"],
+      ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"],
+      ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10],
+      ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],
+      ["8741", "\uB19E", 9, "\uB1A9", 15],
+      ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],
+      ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4],
+      ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4],
+      ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],
+      ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],
+      ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"],
+      ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"],
+      ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15],
+      ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"],
+      ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"],
+      ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"],
+      ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"],
+      ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8],
+      ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18],
+      ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4],
+      ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5],
+      ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16],
+      ["8d41", "\uB6C3", 16, "\uB6D5", 8],
+      ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],
+      ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],
+      ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8],
+      ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19],
+      ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7],
+      ["8f41", "\uB885", 7, "\uB88E", 17],
+      ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4],
+      ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5],
+      ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"],
+      ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15],
+      ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],
+      ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5],
+      ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5],
+      ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6],
+      ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],
+      ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4],
+      ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],
+      ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],
+      ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8],
+      ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],
+      ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8],
+      ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12],
+      ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24],
+      ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"],
+      ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"],
+      ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14],
+      ["9641", "\uBEB8", 23, "\uBED2\uBED3"],
+      ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8],
+      ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44],
+      ["9741", "\uBF83", 16, "\uBF95", 8],
+      ["9761", "\uBF9E", 17, "\uBFB1", 7],
+      ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"],
+      ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"],
+      ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15],
+      ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],
+      ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"],
+      ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],
+      ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],
+      ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16],
+      ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"],
+      ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"],
+      ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8],
+      ["9b61", "\uC333", 17, "\uC346", 7],
+      ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"],
+      ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5],
+      ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9],
+      ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12],
+      ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8],
+      ["9d61", "\uC4C6", 25],
+      ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],
+      ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"],
+      ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"],
+      ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"],
+      ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"],
+      ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],
+      ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],
+      ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"],
+      ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13],
+      ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],
+      ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"],
+      ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"],
+      ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],
+      ["a241", "\uC910\uC912", 5, "\uC919", 18],
+      ["a261", "\uC92D", 6, "\uC935", 18],
+      ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],
+      ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"],
+      ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16],
+      ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"],
+      ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],
+      ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12],
+      ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93],
+      ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"],
+      ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"],
+      ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9],
+      ["a5b0", "\u2160", 9],
+      ["a5c1", "\u0391", 16, "\u03A3", 6],
+      ["a5e1", "\u03B1", 16, "\u03C3", 6],
+      ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],
+      ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6],
+      ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7],
+      ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7],
+      ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"],
+      ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],
+      ["a841", "\uCB6D", 10, "\uCB7A", 14],
+      ["a861", "\uCB89", 18, "\uCB9D", 6],
+      ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"],
+      ["a8a6", "\u0132"],
+      ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],
+      ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],
+      ["a941", "\uCBC5", 14, "\uCBD5", 10],
+      ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18],
+      ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],
+      ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],
+      ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"],
+      ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82],
+      ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"],
+      ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5],
+      ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85],
+      ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],
+      ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4],
+      ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25],
+      ["acd1", "\u0430", 5, "\u0451\u0436", 25],
+      ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7],
+      ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],
+      ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"],
+      ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16],
+      ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4],
+      ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],
+      ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19],
+      ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"],
+      ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],
+      ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12],
+      ["b061", "\uCEBB", 5, "\uCEC2", 19],
+      ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],
+      ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],
+      ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11],
+      ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],
+      ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"],
+      ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"],
+      ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],
+      ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],
+      ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5],
+      ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],
+      ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5],
+      ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"],
+      ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],
+      ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5],
+      ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4],
+      ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],
+      ["b641", "\uD105", 7, "\uD10E", 17],
+      ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],
+      ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],
+      ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"],
+      ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],
+      ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],
+      ["b841", "\uD1D0", 7, "\uD1D9", 17],
+      ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13],
+      ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],
+      ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"],
+      ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"],
+      ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],
+      ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"],
+      ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5],
+      ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],
+      ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"],
+      ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"],
+      ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],
+      ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],
+      ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"],
+      ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],
+      ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],
+      ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13],
+      ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],
+      ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14],
+      ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"],
+      ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"],
+      ["bf41", "\uD49E", 10, "\uD4AA", 14],
+      ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],
+      ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],
+      ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5],
+      ["c061", "\uD51E", 25],
+      ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],
+      ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"],
+      ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"],
+      ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],
+      ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],
+      ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"],
+      ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],
+      ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4],
+      ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11],
+      ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],
+      ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],
+      ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4],
+      ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],
+      ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"],
+      ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4],
+      ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],
+      ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5],
+      ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],
+      ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],
+      ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],
+      ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],
+      ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],
+      ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],
+      ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],
+      ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],
+      ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],
+      ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],
+      ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],
+      ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],
+      ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],
+      ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],
+      ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],
+      ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],
+      ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],
+      ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],
+      ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],
+      ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],
+      ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],
+      ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],
+      ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],
+      ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],
+      ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],
+      ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],
+      ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],
+      ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],
+      ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],
+      ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],
+      ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],
+      ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],
+      ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],
+      ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],
+      ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],
+      ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],
+      ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],
+      ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],
+      ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],
+      ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],
+      ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],
+      ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],
+      ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],
+      ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],
+      ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],
+      ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],
+      ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],
+      ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],
+      ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],
+      ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],
+      ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],
+      ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],
+      ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],
+      ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],
+      ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]
+    ];
+  }
+});
+
+// 
+var require_cp950 = __commonJS({
+  ""(exports, module) {
+    module.exports = [
+      ["0", "\0", 127],
+      ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],
+      ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],
+      ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],
+      ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21],
+      ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10],
+      ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"],
+      ["a3e1", "\u20AC"],
+      ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],
+      ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],
+      ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],
+      ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],
+      ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],
+      ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],
+      ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],
+      ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],
+      ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],
+      ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],
+      ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],
+      ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],
+      ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],
+      ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],
+      ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],
+      ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],
+      ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],
+      ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],
+      ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],
+      ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],
+      ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],
+      ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],
+      ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],
+      ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],
+      ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],
+      ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],
+      ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],
+      ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],
+      ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],
+      ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],
+      ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],
+      ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],
+      ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],
+      ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],
+      ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],
+      ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],
+      ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],
+      ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],
+      ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],
+      ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],
+      ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],
+      ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],
+      ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],
+      ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],
+      ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],
+      ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],
+      ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],
+      ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],
+      ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],
+      ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],
+      ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],
+      ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],
+      ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],
+      ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],
+      ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],
+      ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],
+      ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],
+      ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],
+      ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],
+      ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],
+      ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],
+      ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],
+      ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],
+      ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],
+      ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],
+      ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],
+      ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],
+      ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],
+      ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],
+      ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],
+      ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],
+      ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],
+      ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],
+      ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],
+      ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],
+      ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],
+      ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],
+      ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],
+      ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],
+      ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],
+      ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],
+      ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],
+      ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],
+      ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],
+      ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],
+      ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],
+      ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],
+      ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],
+      ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],
+      ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],
+      ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],
+      ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],
+      ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],
+      ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],
+      ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],
+      ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],
+      ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],
+      ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],
+      ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],
+      ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],
+      ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],
+      ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],
+      ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],
+      ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],
+      ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],
+      ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],
+      ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],
+      ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],
+      ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],
+      ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],
+      ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],
+      ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],
+      ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],
+      ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],
+      ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],
+      ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],
+      ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],
+      ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],
+      ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],
+      ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],
+      ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],
+      ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],
+      ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],
+      ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],
+      ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],
+      ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],
+      ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],
+      ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],
+      ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],
+      ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],
+      ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],
+      ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],
+      ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],
+      ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],
+      ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],
+      ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],
+      ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],
+      ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],
+      ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],
+      ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],
+      ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],
+      ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],
+      ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],
+      ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],
+      ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],
+      ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],
+      ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],
+      ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],
+      ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],
+      ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],
+      ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],
+      ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],
+      ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],
+      ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],
+      ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],
+      ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],
+      ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],
+      ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],
+      ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],
+      ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],
+      ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],
+      ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],
+      ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],
+      ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],
+      ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],
+      ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],
+      ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]
+    ];
+  }
+});
+
+// 
+var require_big5_added = __commonJS({
+  ""(exports, module) {
+    module.exports = [
+      ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],
+      ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],
+      ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],
+      ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],
+      ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],
+      ["8940", "\u{2A3A9}\u{21145}"],
+      ["8943", "\u650A"],
+      ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"],
+      ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],
+      ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],
+      ["89ab", "\u918C\u78B8\u915E\u80BC"],
+      ["89b0", "\u8D0B\u80F6\u{209E7}"],
+      ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],
+      ["89c1", "\u6E9A\u823E\u7519"],
+      ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],
+      ["8a40", "\u{27D84}\u5525"],
+      ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],
+      ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],
+      ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],
+      ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],
+      ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],
+      ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],
+      ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],
+      ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],
+      ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],
+      ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],
+      ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],
+      ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],
+      ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],
+      ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],
+      ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],
+      ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],
+      ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],
+      ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],
+      ["8cc9", "\u9868\u676B\u4276\u573D"],
+      ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],
+      ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],
+      ["8d40", "\u{20B9F}"],
+      ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],
+      ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],
+      ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],
+      ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],
+      ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],
+      ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],
+      ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],
+      ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],
+      ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],
+      ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],
+      ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],
+      ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],
+      ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],
+      ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],
+      ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],
+      ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],
+      ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],
+      ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],
+      ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],
+      ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],
+      ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],
+      ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],
+      ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],
+      ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],
+      ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],
+      ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],
+      ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],
+      ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],
+      ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],
+      ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],
+      ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],
+      ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],
+      ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],
+      ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],
+      ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],
+      ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],
+      ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],
+      ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],
+      ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],
+      ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],
+      ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],
+      ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],
+      ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],
+      ["9fae", "\u9159\u9681\u915C"],
+      ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],
+      ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],
+      ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],
+      ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],
+      ["9fe7", "\u6BFA\u8818\u7F78"],
+      ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"],
+      ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],
+      ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],
+      ["a055", "\u{2183B}\u{26E05}"],
+      ["a058", "\u8A7E\u{2251B}"],
+      ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],
+      ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],
+      ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],
+      ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"],
+      ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],
+      ["a0ae", "\u77FE"],
+      ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],
+      ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],
+      ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],
+      ["a3c0", "\u2400", 31, "\u2421"],
+      ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23],
+      ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"],
+      ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4],
+      ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],
+      ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"],
+      ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],
+      ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],
+      ["f9fe", "\uFFED"],
+      ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],
+      ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],
+      ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],
+      ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],
+      ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],
+      ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],
+      ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],
+      ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],
+      ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],
+      ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]
+    ];
+  }
+});
+
+// 
+var require_dbcs_data = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    module.exports = {
+      // == Japanese/ShiftJIS ====================================================
+      // All japanese encodings are based on JIS X set of standards:
+      // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
+      // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.
+      //              Has several variations in 1978, 1983, 1990 and 1997.
+      // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
+      // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
+      //              2 planes, first is superset of 0208, second - revised 0212.
+      //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
+      // Byte encodings are:
+      //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
+      //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
+      //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
+      //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
+      //               0x00-0x7F       - lower part of 0201
+      //               0x8E, 0xA1-0xDF - upper part of 0201
+      //               (0xA1-0xFE)x2   - 0208 plane (94x94).
+      //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
+      //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
+      //               Used as-is in ISO2022 family.
+      //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,
+      //                0201-1976 Roman, 0208-1978, 0208-1983.
+      //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
+      //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
+      //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
+      //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
+      //
+      // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
+      //
+      // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
+      shiftjis: {
+        type: "_dbcs",
+        table: function() {
+          return require_shiftjis();
+        },
+        encodeAdd: { "\xA5": 92, "\u203E": 126 },
+        encodeSkipVals: [{ from: 60736, to: 63808 }]
+      },
+      csshiftjis: "shiftjis",
+      mskanji: "shiftjis",
+      sjis: "shiftjis",
+      windows31j: "shiftjis",
+      ms31j: "shiftjis",
+      xsjis: "shiftjis",
+      windows932: "shiftjis",
+      ms932: "shiftjis",
+      932: "shiftjis",
+      cp932: "shiftjis",
+      eucjp: {
+        type: "_dbcs",
+        table: function() {
+          return require_eucjp();
+        },
+        encodeAdd: { "\xA5": 92, "\u203E": 126 }
+      },
+      // TODO: KDDI extension to Shift_JIS
+      // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
+      // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
+      // == Chinese/GBK ==========================================================
+      // http://en.wikipedia.org/wiki/GBK
+      // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
+      // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
+      gb2312: "cp936",
+      gb231280: "cp936",
+      gb23121980: "cp936",
+      csgb2312: "cp936",
+      csiso58gb231280: "cp936",
+      euccn: "cp936",
+      // Microsoft's CP936 is a subset and approximation of GBK.
+      windows936: "cp936",
+      ms936: "cp936",
+      936: "cp936",
+      cp936: {
+        type: "_dbcs",
+        table: function() {
+          return require_cp936();
+        }
+      },
+      // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
+      gbk: {
+        type: "_dbcs",
+        table: function() {
+          return require_cp936().concat(require_gbk_added());
+        }
+      },
+      xgbk: "gbk",
+      isoir58: "gbk",
+      // GB18030 is an algorithmic extension of GBK.
+      // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
+      // http://icu-project.org/docs/papers/gb18030.html
+      // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
+      // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
+      gb18030: {
+        type: "_dbcs",
+        table: function() {
+          return require_cp936().concat(require_gbk_added());
+        },
+        gb18030: function() {
+          return require_gb18030_ranges();
+        },
+        encodeSkipVals: [128],
+        encodeAdd: { "\u20AC": 41699 }
+      },
+      chinese: "gb18030",
+      // == Korean ===============================================================
+      // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
+      windows949: "cp949",
+      ms949: "cp949",
+      949: "cp949",
+      cp949: {
+        type: "_dbcs",
+        table: function() {
+          return require_cp949();
+        }
+      },
+      cseuckr: "cp949",
+      csksc56011987: "cp949",
+      euckr: "cp949",
+      isoir149: "cp949",
+      korean: "cp949",
+      ksc56011987: "cp949",
+      ksc56011989: "cp949",
+      ksc5601: "cp949",
+      // == Big5/Taiwan/Hong Kong ================================================
+      // There are lots of tables for Big5 and cp950. Please see the following links for history:
+      // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
+      // Variations, in roughly number of defined chars:
+      //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
+      //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
+      //  * Big5-2003 (Taiwan standard) almost superset of cp950.
+      //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
+      //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.
+      //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
+      //    Plus, it has 4 combining sequences.
+      //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
+      //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
+      //    Implementations are not consistent within browsers; sometimes labeled as just big5.
+      //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
+      //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
+      //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
+      //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
+      //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
+      //
+      // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
+      // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
+      windows950: "cp950",
+      ms950: "cp950",
+      950: "cp950",
+      cp950: {
+        type: "_dbcs",
+        table: function() {
+          return require_cp950();
+        }
+      },
+      // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
+      big5: "big5hkscs",
+      big5hkscs: {
+        type: "_dbcs",
+        table: function() {
+          return require_cp950().concat(require_big5_added());
+        },
+        encodeSkipVals: [
+          // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of
+          // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.
+          // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.
+          36457,
+          36463,
+          36478,
+          36523,
+          36532,
+          36557,
+          36560,
+          36695,
+          36713,
+          36718,
+          36811,
+          36862,
+          36973,
+          36986,
+          37060,
+          37084,
+          37105,
+          37311,
+          37551,
+          37552,
+          37553,
+          37554,
+          37585,
+          37959,
+          38090,
+          38361,
+          38652,
+          39285,
+          39798,
+          39800,
+          39803,
+          39878,
+          39902,
+          39916,
+          39926,
+          40002,
+          40019,
+          40034,
+          40040,
+          40043,
+          40055,
+          40124,
+          40125,
+          40144,
+          40279,
+          40282,
+          40388,
+          40431,
+          40443,
+          40617,
+          40687,
+          40701,
+          40800,
+          40907,
+          41079,
+          41180,
+          41183,
+          36812,
+          37576,
+          38468,
+          38637,
+          // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345
+          41636,
+          41637,
+          41639,
+          41638,
+          41676,
+          41678
+        ]
+      },
+      cnbig5: "big5hkscs",
+      csbig5: "big5hkscs",
+      xxbig5: "big5hkscs"
+    };
+  }
+});
+
+// 
+var require_encodings = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var mergeModules = require_merge_exports();
+    var modules = [
+      require_internal(),
+      require_utf32(),
+      require_utf16(),
+      require_utf7(),
+      require_sbcs_codec(),
+      require_sbcs_data(),
+      require_sbcs_data_generated(),
+      require_dbcs_codec(),
+      require_dbcs_data()
+    ];
+    for (i = 0; i < modules.length; i++) {
+      module = modules[i];
+      mergeModules(exports, module);
+    }
+    var module;
+    var i;
+  }
+});
+
+// 
+var require_streams = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    module.exports = function(streamModule) {
+      var Transform = streamModule.Transform;
+      function IconvLiteEncoderStream(conv, options) {
+        this.conv = conv;
+        options = options || {};
+        options.decodeStrings = false;
+        Transform.call(this, options);
+      }
+      IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
+        constructor: { value: IconvLiteEncoderStream }
+      });
+      IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
+        if (typeof chunk !== "string") {
+          return done(new Error("Iconv encoding stream needs strings as its input."));
+        }
+        try {
+          var res = this.conv.write(chunk);
+          if (res && res.length)
+            this.push(res);
+          done();
+        } catch (e) {
+          done(e);
+        }
+      };
+      IconvLiteEncoderStream.prototype._flush = function(done) {
+        try {
+          var res = this.conv.end();
+          if (res && res.length)
+            this.push(res);
+          done();
+        } catch (e) {
+          done(e);
+        }
+      };
+      IconvLiteEncoderStream.prototype.collect = function(cb) {
+        var chunks = [];
+        this.on("error", cb);
+        this.on("data", function(chunk) {
+          chunks.push(chunk);
+        });
+        this.on("end", function() {
+          cb(null, Buffer2.concat(chunks));
+        });
+        return this;
+      };
+      function IconvLiteDecoderStream(conv, options) {
+        this.conv = conv;
+        options = options || {};
+        options.encoding = this.encoding = "utf8";
+        Transform.call(this, options);
+      }
+      IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
+        constructor: { value: IconvLiteDecoderStream }
+      });
+      IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
+        if (!Buffer2.isBuffer(chunk) && !(chunk instanceof Uint8Array)) {
+          return done(new Error("Iconv decoding stream needs buffers as its input."));
+        }
+        try {
+          var res = this.conv.write(chunk);
+          if (res && res.length)
+            this.push(res, this.encoding);
+          done();
+        } catch (e) {
+          done(e);
+        }
+      };
+      IconvLiteDecoderStream.prototype._flush = function(done) {
+        try {
+          var res = this.conv.end();
+          if (res && res.length)
+            this.push(res, this.encoding);
+          done();
+        } catch (e) {
+          done(e);
+        }
+      };
+      IconvLiteDecoderStream.prototype.collect = function(cb) {
+        var res = "";
+        this.on("error", cb);
+        this.on("data", function(chunk) {
+          res += chunk;
+        });
+        this.on("end", function() {
+          cb(null, res);
+        });
+        return this;
+      };
+      return {
+        IconvLiteEncoderStream,
+        IconvLiteDecoderStream
+      };
+    };
+  }
+});
+
+// 
+var require_lib4 = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var Buffer2 = require_safer().Buffer;
+    var bomHandling = require_bom_handling();
+    var mergeModules = require_merge_exports();
+    module.exports.encodings = null;
+    module.exports.defaultCharUnicode = "\uFFFD";
+    module.exports.defaultCharSingleByte = "?";
+    module.exports.encode = function encode(str, encoding, options) {
+      str = "" + (str || "");
+      var encoder = module.exports.getEncoder(encoding, options);
+      var res = encoder.write(str);
+      var trail = encoder.end();
+      return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res;
+    };
+    module.exports.decode = function decode(buf, encoding, options) {
+      if (typeof buf === "string") {
+        if (!module.exports.skipDecodeWarning) {
+          console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding");
+          module.exports.skipDecodeWarning = true;
+        }
+        buf = Buffer2.from("" + (buf || ""), "binary");
+      }
+      var decoder = module.exports.getDecoder(encoding, options);
+      var res = decoder.write(buf);
+      var trail = decoder.end();
+      return trail ? res + trail : res;
+    };
+    module.exports.encodingExists = function encodingExists(enc) {
+      try {
+        module.exports.getCodec(enc);
+        return true;
+      } catch (e) {
+        return false;
+      }
+    };
+    module.exports.toEncoding = module.exports.encode;
+    module.exports.fromEncoding = module.exports.decode;
+    module.exports._codecDataCache = { __proto__: null };
+    module.exports.getCodec = function getCodec(encoding) {
+      if (!module.exports.encodings) {
+        var raw = require_encodings();
+        module.exports.encodings = { __proto__: null };
+        mergeModules(module.exports.encodings, raw);
+      }
+      var enc = module.exports._canonicalizeEncoding(encoding);
+      var codecOptions = {};
+      while (true) {
+        var codec = module.exports._codecDataCache[enc];
+        if (codec) {
+          return codec;
+        }
+        var codecDef = module.exports.encodings[enc];
+        switch (typeof codecDef) {
+          case "string":
+            enc = codecDef;
+            break;
+          case "object":
+            for (var key in codecDef) {
+              codecOptions[key] = codecDef[key];
+            }
+            if (!codecOptions.encodingName) {
+              codecOptions.encodingName = enc;
+            }
+            enc = codecDef.type;
+            break;
+          case "function":
+            if (!codecOptions.encodingName) {
+              codecOptions.encodingName = enc;
+            }
+            codec = new codecDef(codecOptions, module.exports);
+            module.exports._codecDataCache[codecOptions.encodingName] = codec;
+            return codec;
+          default:
+            throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')");
+        }
+      }
+    };
+    module.exports._canonicalizeEncoding = function(encoding) {
+      return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "");
+    };
+    module.exports.getEncoder = function getEncoder(encoding, options) {
+      var codec = module.exports.getCodec(encoding);
+      var encoder = new codec.encoder(options, codec);
+      if (codec.bomAware && options && options.addBOM) {
+        encoder = new bomHandling.PrependBOM(encoder, options);
+      }
+      return encoder;
+    };
+    module.exports.getDecoder = function getDecoder(encoding, options) {
+      var codec = module.exports.getCodec(encoding);
+      var decoder = new codec.decoder(options, codec);
+      if (codec.bomAware && !(options && options.stripBOM === false)) {
+        decoder = new bomHandling.StripBOM(decoder, options);
+      }
+      return decoder;
+    };
+    module.exports.enableStreamingAPI = function enableStreamingAPI(streamModule2) {
+      if (module.exports.supportsStreams) {
+        return;
+      }
+      var streams = require_streams()(streamModule2);
+      module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;
+      module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;
+      module.exports.encodeStream = function encodeStream(encoding, options) {
+        return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options);
+      };
+      module.exports.decodeStream = function decodeStream(encoding, options) {
+        return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options);
+      };
+      module.exports.supportsStreams = true;
+    };
+    var streamModule;
+    try {
+      streamModule = __require("stream");
+    } catch (e) {
+    }
+    if (streamModule && streamModule.Transform) {
+      module.exports.enableStreamingAPI(streamModule);
+    } else {
+      module.exports.encodeStream = module.exports.decodeStream = function() {
+        throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.");
+      };
+    }
+    if (false) {
+      console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
+    }
+  }
+});
+
+// 
+var require_eta = __commonJS({
+  ""(exports, module) {
+    var ETA = class {
+      constructor(length, initTime, initValue) {
+        this.etaBufferLength = length || 100;
+        this.valueBuffer = [initValue];
+        this.timeBuffer = [initTime];
+        this.eta = "0";
+      }
+      // add new values to calculation buffer
+      update(time, value, total) {
+        this.valueBuffer.push(value);
+        this.timeBuffer.push(time);
+        this.calculate(total - value);
+      }
+      // fetch estimated time
+      getTime() {
+        return this.eta;
+      }
+      // eta calculation - request number of remaining events
+      calculate(remaining) {
+        const currentBufferSize = this.valueBuffer.length;
+        const buffer = Math.min(this.etaBufferLength, currentBufferSize);
+        const v_diff = this.valueBuffer[currentBufferSize - 1] - this.valueBuffer[currentBufferSize - buffer];
+        const t_diff = this.timeBuffer[currentBufferSize - 1] - this.timeBuffer[currentBufferSize - buffer];
+        const vt_rate = v_diff / t_diff;
+        this.valueBuffer = this.valueBuffer.slice(-this.etaBufferLength);
+        this.timeBuffer = this.timeBuffer.slice(-this.etaBufferLength);
+        const eta = Math.ceil(remaining / vt_rate / 1e3);
+        if (isNaN(eta)) {
+          this.eta = "NULL";
+        } else if (!isFinite(eta)) {
+          this.eta = "INF";
+        } else if (eta > 1e7) {
+          this.eta = "INF";
+        } else if (eta < 0) {
+          this.eta = 0;
+        } else {
+          this.eta = eta;
+        }
+      }
+    };
+    module.exports = ETA;
+  }
+});
+
+// 
+var require_terminal = __commonJS({
+  ""(exports, module) {
+    var _readline = __require("readline");
+    var Terminal = class {
+      constructor(outputStream) {
+        this.stream = outputStream;
+        this.linewrap = true;
+        this.dy = 0;
+      }
+      // save cursor position + settings
+      cursorSave() {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        this.stream.write("\x1B7");
+      }
+      // restore last cursor position + settings
+      cursorRestore() {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        this.stream.write("\x1B8");
+      }
+      // show/hide cursor
+      cursor(enabled) {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        if (enabled) {
+          this.stream.write("\x1B[?25h");
+        } else {
+          this.stream.write("\x1B[?25l");
+        }
+      }
+      // change cursor positionn
+      cursorTo(x = null, y = null) {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        _readline.cursorTo(this.stream, x, y);
+      }
+      // change relative cursor position
+      cursorRelative(dx = null, dy = null) {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        this.dy = this.dy + dy;
+        _readline.moveCursor(this.stream, dx, dy);
+      }
+      // relative reset
+      cursorRelativeReset() {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        _readline.moveCursor(this.stream, 0, -this.dy);
+        _readline.cursorTo(this.stream, 0, null);
+        this.dy = 0;
+      }
+      // clear to the right from cursor
+      clearRight() {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        _readline.clearLine(this.stream, 1);
+      }
+      // clear the full line
+      clearLine() {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        _readline.clearLine(this.stream, 0);
+      }
+      // clear everyting beyond the current line
+      clearBottom() {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        _readline.clearScreenDown(this.stream);
+      }
+      // add new line; increment counter
+      newline() {
+        this.stream.write("\n");
+        this.dy++;
+      }
+      // write content to output stream
+      // @TODO use string-width to strip length
+      write(s, rawWrite = false) {
+        if (this.linewrap === true && rawWrite === false) {
+          this.stream.write(s.substr(0, this.getWidth()));
+        } else {
+          this.stream.write(s);
+        }
+      }
+      // control line wrapping
+      lineWrapping(enabled) {
+        if (!this.stream.isTTY) {
+          return;
+        }
+        this.linewrap = enabled;
+        if (enabled) {
+          this.stream.write("\x1B[?7h");
+        } else {
+          this.stream.write("\x1B[?7l");
+        }
+      }
+      // tty environment ?
+      isTTY() {
+        return this.stream.isTTY === true;
+      }
+      // get terminal width
+      getWidth() {
+        return this.stream.columns || (this.stream.isTTY ? 80 : 200);
+      }
+    };
+    module.exports = Terminal;
+  }
+});
+
+// 
+var require_ansi_regex = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    module.exports = ({ onlyFirst = false } = {}) => {
+      const pattern = [
+        "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
+        "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
+      ].join("|");
+      return new RegExp(pattern, onlyFirst ? void 0 : "g");
+    };
+  }
+});
+
+// 
+var require_strip_ansi = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var ansiRegex2 = require_ansi_regex();
+    module.exports = (string) => typeof string === "string" ? string.replace(ansiRegex2(), "") : string;
+  }
+});
+
+// 
+var require_is_fullwidth_code_point = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var isFullwidthCodePoint = (codePoint) => {
+      if (Number.isNaN(codePoint)) {
+        return false;
+      }
+      if (codePoint >= 4352 && (codePoint <= 4447 || // Hangul Jamo
+      codePoint === 9001 || // LEFT-POINTING ANGLE BRACKET
+      codePoint === 9002 || // RIGHT-POINTING ANGLE BRACKET
+      // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+      11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+      12880 <= codePoint && codePoint <= 19903 || // CJK Unified Ideographs .. Yi Radicals
+      19968 <= codePoint && codePoint <= 42182 || // Hangul Jamo Extended-A
+      43360 <= codePoint && codePoint <= 43388 || // Hangul Syllables
+      44032 <= codePoint && codePoint <= 55203 || // CJK Compatibility Ideographs
+      63744 <= codePoint && codePoint <= 64255 || // Vertical Forms
+      65040 <= codePoint && codePoint <= 65049 || // CJK Compatibility Forms .. Small Form Variants
+      65072 <= codePoint && codePoint <= 65131 || // Halfwidth and Fullwidth Forms
+      65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || // Kana Supplement
+      110592 <= codePoint && codePoint <= 110593 || // Enclosed Ideographic Supplement
+      127488 <= codePoint && codePoint <= 127569 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+      131072 <= codePoint && codePoint <= 262141)) {
+        return true;
+      }
+      return false;
+    };
+    module.exports = isFullwidthCodePoint;
+    module.exports.default = isFullwidthCodePoint;
+  }
+});
+
+// 
+var require_emoji_regex = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    module.exports = function() {
+      return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+    };
+  }
+});
+
+// 
+var require_string_width = __commonJS({
+  ""(exports, module) {
+    "use strict";
+    var stripAnsi2 = require_strip_ansi();
+    var isFullwidthCodePoint = require_is_fullwidth_code_point();
+    var emojiRegex = require_emoji_regex();
+    var stringWidth2 = (string) => {
+      if (typeof string !== "string" || string.length === 0) {
+        return 0;
+      }
+      string = stripAnsi2(string);
+      if (string.length === 0) {
+        return 0;
+      }
+      string = string.replace(emojiRegex(), "  ");
+      let width = 0;
+      for (let i = 0; i < string.length; i++) {
+        const code = string.codePointAt(i);
+        if (code <= 31 || code >= 127 && code <= 159) {
+          continue;
+        }
+        if (code >= 768 && code <= 879) {
+          continue;
+        }
+        if (code > 65535) {
+          i++;
+        }
+        width += isFullwidthCodePoint(code) ? 2 : 1;
+      }
+      return width;
+    };
+    module.exports = stringWidth2;
+    module.exports.default = stringWidth2;
+  }
+});
+
+// 
+var require_format_value = __commonJS({
+  ""(exports, module) {
+    module.exports = function formatValue(v, options, type) {
+      if (options.autopadding !== true) {
+        return v;
+      }
+      function autopadding(value, length) {
+        return (options.autopaddingChar + value).slice(-length);
+      }
+      switch (type) {
+        case "percentage":
+          return autopadding(v, 3);
+        default:
+          return v;
+      }
+    };
+  }
+});
+
+// 
+var require_format_bar = __commonJS({
+  ""(exports, module) {
+    module.exports = function formatBar(progress, options) {
+      const completeSize = Math.round(progress * options.barsize);
+      const incompleteSize = options.barsize - completeSize;
+      return options.barCompleteString.substr(0, completeSize) + options.barGlue + options.barIncompleteString.substr(0, incompleteSize);
+    };
+  }
+});
+
+// 
+var require_format_time = __commonJS({
+  ""(exports, module) {
+    module.exports = function formatTime(t, options, roundToMultipleOf) {
+      function round(input) {
+        if (roundToMultipleOf) {
+          return roundToMultipleOf * Math.round(input / roundToMultipleOf);
+        } else {
+          return input;
+        }
+      }
+      function autopadding(v) {
+        return (options.autopaddingChar + v).slice(-2);
+      }
+      if (t > 3600) {
+        return autopadding(Math.floor(t / 3600)) + "h" + autopadding(round(t % 3600 / 60)) + "m";
+      } else if (t > 60) {
+        return autopadding(Math.floor(t / 60)) + "m" + autopadding(round(t % 60)) + "s";
+      } else if (t > 10) {
+        return autopadding(round(t)) + "s";
+      } else {
+        return autopadding(t) + "s";
+      }
+    };
+  }
+});
+
+// 
+var require_formatter = __commonJS({
+  ""(exports, module) {
+    var _stringWidth = require_string_width();
+    var _defaultFormatValue = require_format_value();
+    var _defaultFormatBar = require_format_bar();
+    var _defaultFormatTime = require_format_time();
+    module.exports = function defaultFormatter(options, params2, payload) {
+      let s = options.format;
+      const formatTime = options.formatTime || _defaultFormatTime;
+      const formatValue = options.formatValue || _defaultFormatValue;
+      const formatBar = options.formatBar || _defaultFormatBar;
+      const percentage = Math.floor(params2.progress * 100) + "";
+      const stopTime = params2.stopTime || Date.now();
+      const elapsedTime = Math.round((stopTime - params2.startTime) / 1e3);
+      const context3 = Object.assign({}, payload, {
+        bar: formatBar(params2.progress, options),
+        percentage: formatValue(percentage, options, "percentage"),
+        total: formatValue(params2.total, options, "total"),
+        value: formatValue(params2.value, options, "value"),
+        eta: formatValue(params2.eta, options, "eta"),
+        eta_formatted: formatTime(params2.eta, options, 5),
+        duration: formatValue(elapsedTime, options, "duration"),
+        duration_formatted: formatTime(elapsedTime, options, 1)
+      });
+      s = s.replace(/\{(\w+)\}/g, function(match2, key) {
+        if (typeof context3[key] !== "undefined") {
+          return context3[key];
+        }
+        return match2;
+      });
+      const fullMargin = Math.max(0, params2.maxWidth - _stringWidth(s) - 2);
+      const halfMargin = Math.floor(fullMargin / 2);
+      switch (options.align) {
+        case "right":
+          s = fullMargin > 0 ? " ".repeat(fullMargin) + s : s;
+          break;
+        case "center":
+          s = halfMargin > 0 ? " ".repeat(halfMargin) + s : s;
+          break;
+        case "left":
+        default:
+          break;
+      }
+      return s;
+    };
+  }
+});
+
+// 
+var require_options = __commonJS({
+  ""(exports, module) {
+    function mergeOption(v, defaultValue) {
+      if (typeof v === "undefined" || v === null) {
+        return defaultValue;
+      } else {
+        return v;
+      }
+    }
+    module.exports = {
+      // set global options
+      parse: function parse3(rawOptions, preset) {
+        const options = {};
+        const opt = Object.assign({}, preset, rawOptions);
+        options.throttleTime = 1e3 / mergeOption(opt.fps, 10);
+        options.stream = mergeOption(opt.stream, process.stderr);
+        options.terminal = mergeOption(opt.terminal, null);
+        options.clearOnComplete = mergeOption(opt.clearOnComplete, false);
+        options.stopOnComplete = mergeOption(opt.stopOnComplete, false);
+        options.barsize = mergeOption(opt.barsize, 40);
+        options.align = mergeOption(opt.align, "left");
+        options.hideCursor = mergeOption(opt.hideCursor, false);
+        options.linewrap = mergeOption(opt.linewrap, false);
+        options.barGlue = mergeOption(opt.barGlue, "");
+        options.barCompleteChar = mergeOption(opt.barCompleteChar, "=");
+        options.barIncompleteChar = mergeOption(opt.barIncompleteChar, "-");
+        options.format = mergeOption(opt.format, "progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}");
+        options.formatTime = mergeOption(opt.formatTime, null);
+        options.formatValue = mergeOption(opt.formatValue, null);
+        options.formatBar = mergeOption(opt.formatBar, null);
+        options.etaBufferLength = mergeOption(opt.etaBuffer, 10);
+        options.etaAsynchronousUpdate = mergeOption(opt.etaAsynchronousUpdate, false);
+        options.progressCalculationRelative = mergeOption(opt.progressCalculationRelative, false);
+        options.synchronousUpdate = mergeOption(opt.synchronousUpdate, true);
+        options.noTTYOutput = mergeOption(opt.noTTYOutput, false);
+        options.notTTYSchedule = mergeOption(opt.notTTYSchedule, 2e3);
+        options.emptyOnZero = mergeOption(opt.emptyOnZero, false);
+        options.forceRedraw = mergeOption(opt.forceRedraw, false);
+        options.autopadding = mergeOption(opt.autopadding, false);
+        options.gracefulExit = mergeOption(opt.gracefulExit, false);
+        return options;
+      },
+      // derived options: instance specific, has to be created for every bar element
+      assignDerivedOptions: function assignDerivedOptions(options) {
+        options.barCompleteString = options.barCompleteChar.repeat(options.barsize + 1);
+        options.barIncompleteString = options.barIncompleteChar.repeat(options.barsize + 1);
+        options.autopaddingChar = options.autopadding ? mergeOption(options.autopaddingChar, "   ") : "";
+        return options;
+      }
+    };
+  }
+});
+
+// 
+var require_generic_bar = __commonJS({
+  ""(exports, module) {
+    var _ETA = require_eta();
+    var _Terminal = require_terminal();
+    var _formatter = require_formatter();
+    var _options = require_options();
+    var _EventEmitter = __require("events");
+    module.exports = class GenericBar extends _EventEmitter {
+      constructor(options) {
+        super();
+        this.options = _options.assignDerivedOptions(options);
+        this.terminal = this.options.terminal ? this.options.terminal : new _Terminal(this.options.stream);
+        this.value = 0;
+        this.startValue = 0;
+        this.total = 100;
+        this.lastDrawnString = null;
+        this.startTime = null;
+        this.stopTime = null;
+        this.lastRedraw = Date.now();
+        this.eta = new _ETA(this.options.etaBufferLength, 0, 0);
+        this.payload = {};
+        this.isActive = false;
+        this.formatter = typeof this.options.format === "function" ? this.options.format : _formatter;
+      }
+      // internal render function
+      render(forceRendering = false) {
+        const params2 = {
+          progress: this.getProgress(),
+          eta: this.eta.getTime(),
+          startTime: this.startTime,
+          stopTime: this.stopTime,
+          total: this.total,
+          value: this.value,
+          maxWidth: this.terminal.getWidth()
+        };
+        if (this.options.etaAsynchronousUpdate) {
+          this.updateETA();
+        }
+        const s = this.formatter(this.options, params2, this.payload);
+        const forceRedraw = forceRendering || this.options.forceRedraw || this.options.noTTYOutput && !this.terminal.isTTY();
+        if (forceRedraw || this.lastDrawnString != s) {
+          this.emit("redraw-pre");
+          this.terminal.cursorTo(0, null);
+          this.terminal.write(s);
+          this.terminal.clearRight();
+          this.lastDrawnString = s;
+          this.lastRedraw = Date.now();
+          this.emit("redraw-post");
+        }
+      }
+      // start the progress bar
+      start(total, startValue, payload) {
+        this.value = startValue || 0;
+        this.total = typeof total !== "undefined" && total >= 0 ? total : 100;
+        this.startValue = startValue || 0;
+        this.payload = payload || {};
+        this.startTime = Date.now();
+        this.stopTime = null;
+        this.lastDrawnString = "";
+        this.eta = new _ETA(this.options.etaBufferLength, this.startTime, this.value);
+        this.isActive = true;
+        this.emit("start", total, startValue);
+      }
+      // stop the bar
+      stop() {
+        this.isActive = false;
+        this.stopTime = Date.now();
+        this.emit("stop", this.total, this.value);
+      }
+      // update the bar value
+      // update(value, payload)
+      // update(payload)
+      update(arg0, arg1 = {}) {
+        if (typeof arg0 === "number") {
+          this.value = arg0;
+          this.eta.update(Date.now(), arg0, this.total);
+        }
+        const payloadData = (typeof arg0 === "object" ? arg0 : arg1) || {};
+        this.emit("update", this.total, this.value);
+        for (const key in payloadData) {
+          this.payload[key] = payloadData[key];
+        }
+        if (this.value >= this.getTotal() && this.options.stopOnComplete) {
+          this.stop();
+        }
+      }
+      // calculate the actual progress value
+      getProgress() {
+        let progress = this.value / this.total;
+        if (this.options.progressCalculationRelative) {
+          progress = (this.value - this.startValue) / (this.total - this.startValue);
+        }
+        if (isNaN(progress)) {
+          progress = this.options && this.options.emptyOnZero ? 0 : 1;
+        }
+        progress = Math.min(Math.max(progress, 0), 1);
+        return progress;
+      }
+      // update the bar value
+      // increment(delta, payload)
+      // increment(payload)
+      increment(arg0 = 1, arg1 = {}) {
+        if (typeof arg0 === "object") {
+          this.update(this.value + 1, arg0);
+        } else {
+          this.update(this.value + arg0, arg1);
+        }
+      }
+      // get the total (limit) value
+      getTotal() {
+        return this.total;
+      }
+      // set the total (limit) value
+      setTotal(total) {
+        if (typeof total !== "undefined" && total >= 0) {
+          this.total = total;
+        }
+      }
+      // force eta calculation update (long running processes)
+      updateETA() {
+        this.eta.update(Date.now(), this.value, this.total);
+      }
+    };
+  }
+});
+
+// 
+var require_single_bar = __commonJS({
+  ""(exports, module) {
+    var _GenericBar = require_generic_bar();
+    var _options = require_options();
+    module.exports = class SingleBar extends _GenericBar {
+      constructor(options, preset) {
+        super(_options.parse(options, preset));
+        this.timer = null;
+        if (this.options.noTTYOutput && this.terminal.isTTY() === false) {
+          this.options.synchronousUpdate = false;
+        }
+        this.schedulingRate = this.terminal.isTTY() ? this.options.throttleTime : this.options.notTTYSchedule;
+        this.sigintCallback = null;
+      }
+      // internal render function
+      render() {
+        if (this.timer) {
+          clearTimeout(this.timer);
+          this.timer = null;
+        }
+        super.render();
+        if (this.options.noTTYOutput && this.terminal.isTTY() === false) {
+          this.terminal.newline();
+        }
+        this.timer = setTimeout(this.render.bind(this), this.schedulingRate);
+      }
+      update(current, payload) {
+        if (!this.timer) {
+          return;
+        }
+        super.update(current, payload);
+        if (this.options.synchronousUpdate && this.lastRedraw + this.options.throttleTime * 2 < Date.now()) {
+          this.render();
+        }
+      }
+      // start the progress bar
+      start(total, startValue, payload) {
+        if (this.options.noTTYOutput === false && this.terminal.isTTY() === false) {
+          return;
+        }
+        if (this.sigintCallback === null && this.options.gracefulExit) {
+          this.sigintCallback = this.stop.bind(this);
+          process.once("SIGINT", this.sigintCallback);
+          process.once("SIGTERM", this.sigintCallback);
+        }
+        this.terminal.cursorSave();
+        if (this.options.hideCursor === true) {
+          this.terminal.cursor(false);
+        }
+        if (this.options.linewrap === false) {
+          this.terminal.lineWrapping(false);
+        }
+        super.start(total, startValue, payload);
+        this.render();
+      }
+      // stop the bar
+      stop() {
+        if (!this.timer) {
+          return;
+        }
+        if (this.sigintCallback) {
+          process.removeListener("SIGINT", this.sigintCallback);
+          process.removeListener("SIGTERM", this.sigintCallback);
+          this.sigintCallback = null;
+        }
+        this.render();
+        super.stop();
+        clearTimeout(this.timer);
+        this.timer = null;
+        if (this.options.hideCursor === true) {
+          this.terminal.cursor(true);
+        }
+        if (this.options.linewrap === false) {
+          this.terminal.lineWrapping(true);
+        }
+        this.terminal.cursorRestore();
+        if (this.options.clearOnComplete) {
+          this.terminal.cursorTo(0, null);
+          this.terminal.clearLine();
+        } else {
+          this.terminal.newline();
+        }
+      }
+    };
+  }
+});
+
+// 
+var require_multi_bar = __commonJS({
+  ""(exports, module) {
+    var _Terminal = require_terminal();
+    var _BarElement = require_generic_bar();
+    var _options = require_options();
+    var _EventEmitter = __require("events");
+    module.exports = class MultiBar extends _EventEmitter {
+      constructor(options, preset) {
+        super();
+        this.bars = [];
+        this.options = _options.parse(options, preset);
+        this.options.synchronousUpdate = false;
+        this.terminal = this.options.terminal ? this.options.terminal : new _Terminal(this.options.stream);
+        this.timer = null;
+        this.isActive = false;
+        this.schedulingRate = this.terminal.isTTY() ? this.options.throttleTime : this.options.notTTYSchedule;
+        this.loggingBuffer = [];
+        this.sigintCallback = null;
+      }
+      // add a new bar to the stack
+      create(total, startValue, payload, barOptions = {}) {
+        const bar = new _BarElement(Object.assign(
+          {},
+          // global options
+          this.options,
+          // terminal instance
+          {
+            terminal: this.terminal
+          },
+          // overrides
+          barOptions
+        ));
+        this.bars.push(bar);
+        if (this.options.noTTYOutput === false && this.terminal.isTTY() === false) {
+          return bar;
+        }
+        if (this.sigintCallback === null && this.options.gracefulExit) {
+          this.sigintCallback = this.stop.bind(this);
+          process.once("SIGINT", this.sigintCallback);
+          process.once("SIGTERM", this.sigintCallback);
+        }
+        if (!this.isActive) {
+          if (this.options.hideCursor === true) {
+            this.terminal.cursor(false);
+          }
+          if (this.options.linewrap === false) {
+            this.terminal.lineWrapping(false);
+          }
+          this.timer = setTimeout(this.update.bind(this), this.schedulingRate);
+        }
+        this.isActive = true;
+        bar.start(total, startValue, payload);
+        this.emit("start");
+        return bar;
+      }
+      // remove a bar from the stack
+      remove(bar) {
+        const index = this.bars.indexOf(bar);
+        if (index < 0) {
+          return false;
+        }
+        this.bars.splice(index, 1);
+        this.update();
+        this.terminal.newline();
+        this.terminal.clearBottom();
+        return true;
+      }
+      // internal update routine
+      update() {
+        if (this.timer) {
+          clearTimeout(this.timer);
+          this.timer = null;
+        }
+        this.emit("update-pre");
+        this.terminal.cursorRelativeReset();
+        this.emit("redraw-pre");
+        if (this.loggingBuffer.length > 0) {
+          this.terminal.clearLine();
+          while (this.loggingBuffer.length > 0) {
+            this.terminal.write(this.loggingBuffer.shift(), true);
+          }
+        }
+        for (let i = 0; i < this.bars.length; i++) {
+          if (i > 0) {
+            this.terminal.newline();
+          }
+          this.bars[i].render();
+        }
+        this.emit("redraw-post");
+        if (this.options.noTTYOutput && this.terminal.isTTY() === false) {
+          this.terminal.newline();
+          this.terminal.newline();
+        }
+        this.timer = setTimeout(this.update.bind(this), this.schedulingRate);
+        this.emit("update-post");
+        if (this.options.stopOnComplete && !this.bars.find((bar) => bar.isActive)) {
+          this.stop();
+        }
+      }
+      stop() {
+        clearTimeout(this.timer);
+        this.timer = null;
+        if (this.sigintCallback) {
+          process.removeListener("SIGINT", this.sigintCallback);
+          process.removeListener("SIGTERM", this.sigintCallback);
+          this.sigintCallback = null;
+        }
+        this.isActive = false;
+        if (this.options.hideCursor === true) {
+          this.terminal.cursor(true);
+        }
+        if (this.options.linewrap === false) {
+          this.terminal.lineWrapping(true);
+        }
+        this.terminal.cursorRelativeReset();
+        this.emit("stop-pre-clear");
+        if (this.options.clearOnComplete) {
+          this.terminal.clearBottom();
+        } else {
+          for (let i = 0; i < this.bars.length; i++) {
+            if (i > 0) {
+              this.terminal.newline();
+            }
+            this.bars[i].render();
+            this.bars[i].stop();
+          }
+          this.terminal.newline();
+        }
+        this.emit("stop");
+      }
+      log(s) {
+        this.loggingBuffer.push(s);
+      }
+    };
+  }
+});
+
+// 
+var require_legacy = __commonJS({
+  ""(exports, module) {
+    module.exports = {
+      format: "progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}",
+      barCompleteChar: "=",
+      barIncompleteChar: "-"
+    };
+  }
+});
+
+// 
+var require_shades_classic = __commonJS({
+  ""(exports, module) {
+    module.exports = {
+      format: " {bar} {percentage}% | ETA: {eta}s | {value}/{total}",
+      barCompleteChar: "\u2588",
+      barIncompleteChar: "\u2591"
+    };
+  }
+});
+
+// 
+var require_shades_grey = __commonJS({
+  ""(exports, module) {
+    module.exports = {
+      format: " \x1B[90m{bar}\x1B[0m {percentage}% | ETA: {eta}s | {value}/{total}",
+      barCompleteChar: "\u2588",
+      barIncompleteChar: "\u2591"
+    };
+  }
+});
+
+// 
+var require_rect = __commonJS({
+  ""(exports, module) {
+    module.exports = {
+      format: " {bar}\u25A0 {percentage}% | ETA: {eta}s | {value}/{total}",
+      barCompleteChar: "\u25A0",
+      barIncompleteChar: " "
+    };
+  }
+});
+
+// 
+var require_presets = __commonJS({
+  ""(exports, module) {
+    var _legacy = require_legacy();
+    var _shades_classic = require_shades_classic();
+    var _shades_grey = require_shades_grey();
+    var _rect = require_rect();
+    module.exports = {
+      legacy: _legacy,
+      shades_classic: _shades_classic,
+      shades_grey: _shades_grey,
+      rect: _rect
+    };
+  }
+});
+
+// 
+var require_cli_progress = __commonJS({
+  ""(exports, module) {
+    var _SingleBar = require_single_bar();
+    var _MultiBar = require_multi_bar();
+    var _Presets = require_presets();
+    var _Formatter = require_formatter();
+    var _defaultFormatValue = require_format_value();
+    var _defaultFormatBar = require_format_bar();
+    var _defaultFormatTime = require_format_time();
+    module.exports = {
+      Bar: _SingleBar,
+      SingleBar: _SingleBar,
+      MultiBar: _MultiBar,
+      Presets: _Presets,
+      Format: {
+        Formatter: _Formatter,
+        BarFormat: _defaultFormatBar,
+        ValueFormat: _defaultFormatValue,
+        TimeFormat: _defaultFormatTime
+      }
+    };
+  }
+});
+
+// 
+import * as os from "os";
+
+// 
+function toCommandValue(input) {
+  if (input === null || input === void 0) {
+    return "";
+  } else if (typeof input === "string" || input instanceof String) {
+    return input;
+  }
+  return JSON.stringify(input);
+}
+function toCommandProperties(annotationProperties) {
+  if (!Object.keys(annotationProperties).length) {
+    return {};
+  }
+  return {
+    title: annotationProperties.title,
+    file: annotationProperties.file,
+    line: annotationProperties.startLine,
+    endLine: annotationProperties.endLine,
+    col: annotationProperties.startColumn,
+    endColumn: annotationProperties.endColumn
+  };
+}
+
+// 
+function issueCommand(command2, properties, message) {
+  const cmd = new Command(command2, properties, message);
+  process.stdout.write(cmd.toString() + os.EOL);
+}
+var CMD_STRING = "::";
+var Command = class {
+  constructor(command2, properties, message) {
+    if (!command2) {
+      command2 = "missing.command";
+    }
+    this.command = command2;
+    this.properties = properties;
+    this.message = message;
+  }
+  toString() {
+    let cmdStr = CMD_STRING + this.command;
+    if (this.properties && Object.keys(this.properties).length > 0) {
+      cmdStr += " ";
+      let first = true;
+      for (const key in this.properties) {
+        if (this.properties.hasOwnProperty(key)) {
+          const val = this.properties[key];
+          if (val) {
+            if (first) {
+              first = false;
+            } else {
+              cmdStr += ",";
+            }
+            cmdStr += `${key}=${escapeProperty(val)}`;
+          }
+        }
+      }
+    }
+    cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
+    return cmdStr;
+  }
+};
+function escapeData(s) {
+  return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A");
+}
+function escapeProperty(s) {
+  return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C");
+}
+
+// 
+import * as os3 from "os";
+
+// 
+var tunnel = __toESM(require_tunnel2());
+var import_undici = __toESM(require_undici());
+var HttpCodes;
+(function(HttpCodes2) {
+  HttpCodes2[HttpCodes2["OK"] = 200] = "OK";
+  HttpCodes2[HttpCodes2["MultipleChoices"] = 300] = "MultipleChoices";
+  HttpCodes2[HttpCodes2["MovedPermanently"] = 301] = "MovedPermanently";
+  HttpCodes2[HttpCodes2["ResourceMoved"] = 302] = "ResourceMoved";
+  HttpCodes2[HttpCodes2["SeeOther"] = 303] = "SeeOther";
+  HttpCodes2[HttpCodes2["NotModified"] = 304] = "NotModified";
+  HttpCodes2[HttpCodes2["UseProxy"] = 305] = "UseProxy";
+  HttpCodes2[HttpCodes2["SwitchProxy"] = 306] = "SwitchProxy";
+  HttpCodes2[HttpCodes2["TemporaryRedirect"] = 307] = "TemporaryRedirect";
+  HttpCodes2[HttpCodes2["PermanentRedirect"] = 308] = "PermanentRedirect";
+  HttpCodes2[HttpCodes2["BadRequest"] = 400] = "BadRequest";
+  HttpCodes2[HttpCodes2["Unauthorized"] = 401] = "Unauthorized";
+  HttpCodes2[HttpCodes2["PaymentRequired"] = 402] = "PaymentRequired";
+  HttpCodes2[HttpCodes2["Forbidden"] = 403] = "Forbidden";
+  HttpCodes2[HttpCodes2["NotFound"] = 404] = "NotFound";
+  HttpCodes2[HttpCodes2["MethodNotAllowed"] = 405] = "MethodNotAllowed";
+  HttpCodes2[HttpCodes2["NotAcceptable"] = 406] = "NotAcceptable";
+  HttpCodes2[HttpCodes2["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
+  HttpCodes2[HttpCodes2["RequestTimeout"] = 408] = "RequestTimeout";
+  HttpCodes2[HttpCodes2["Conflict"] = 409] = "Conflict";
+  HttpCodes2[HttpCodes2["Gone"] = 410] = "Gone";
+  HttpCodes2[HttpCodes2["TooManyRequests"] = 429] = "TooManyRequests";
+  HttpCodes2[HttpCodes2["InternalServerError"] = 500] = "InternalServerError";
+  HttpCodes2[HttpCodes2["NotImplemented"] = 501] = "NotImplemented";
+  HttpCodes2[HttpCodes2["BadGateway"] = 502] = "BadGateway";
+  HttpCodes2[HttpCodes2["ServiceUnavailable"] = 503] = "ServiceUnavailable";
+  HttpCodes2[HttpCodes2["GatewayTimeout"] = 504] = "GatewayTimeout";
+})(HttpCodes || (HttpCodes = {}));
+var Headers;
+(function(Headers2) {
+  Headers2["Accept"] = "accept";
+  Headers2["ContentType"] = "content-type";
+})(Headers || (Headers = {}));
+var MediaTypes;
+(function(MediaTypes2) {
+  MediaTypes2["ApplicationJson"] = "application/json";
+})(MediaTypes || (MediaTypes = {}));
+var HttpRedirectCodes = [
+  HttpCodes.MovedPermanently,
+  HttpCodes.ResourceMoved,
+  HttpCodes.SeeOther,
+  HttpCodes.TemporaryRedirect,
+  HttpCodes.PermanentRedirect
+];
+var HttpResponseRetryCodes = [
+  HttpCodes.BadGateway,
+  HttpCodes.ServiceUnavailable,
+  HttpCodes.GatewayTimeout
+];
+
+// 
+import { EOL as EOL2 } from "os";
+import { constants, promises } from "fs";
+var __awaiter = function(thisArg, _arguments, P, generator) {
+  function adopt(value) {
+    return value instanceof P ? value : new P(function(resolve5) {
+      resolve5(value);
+    });
+  }
+  return new (P || (P = Promise))(function(resolve5, reject) {
+    function fulfilled(value) {
+      try {
+        step(generator.next(value));
+      } catch (e) {
+        reject(e);
+      }
+    }
+    function rejected(value) {
+      try {
+        step(generator["throw"](value));
+      } catch (e) {
+        reject(e);
+      }
+    }
+    function step(result) {
+      result.done ? resolve5(result.value) : adopt(result.value).then(fulfilled, rejected);
+    }
+    step((generator = generator.apply(thisArg, _arguments || [])).next());
+  });
+};
+var { access, appendFile, writeFile } = promises;
+var SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY";
+var Summary = class {
+  constructor() {
+    this._buffer = "";
+  }
+  /**
+   * Finds the summary file path from the environment, rejects if env var is not found or file does not exist
+   * Also checks r/w permissions.
+   *
+   * @returns step summary file path
+   */
+  filePath() {
+    return __awaiter(this, void 0, void 0, function* () {
+      if (this._filePath) {
+        return this._filePath;
+      }
+      const pathFromEnv = process.env[SUMMARY_ENV_VAR];
+      if (!pathFromEnv) {
+        throw new Error(`Unable to find environment variable for $${SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);
+      }
+      try {
+        yield access(pathFromEnv, constants.R_OK | constants.W_OK);
+      } catch (_a3) {
+        throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);
+      }
+      this._filePath = pathFromEnv;
+      return this._filePath;
+    });
+  }
+  /**
+   * Wraps content in an HTML tag, adding any HTML attributes
+   *
+   * @param {string} tag HTML tag to wrap
+   * @param {string | null} content content within the tag
+   * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add
+   *
+   * @returns {string} content wrapped in HTML element
+   */
+  wrap(tag, content, attrs = {}) {
+    const htmlAttrs = Object.entries(attrs).map(([key, value]) => ` ${key}="${value}"`).join("");
+    if (!content) {
+      return `<${tag}${htmlAttrs}>`;
+    }
+    return `<${tag}${htmlAttrs}>${content}`;
+  }
+  /**
+   * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.
+   *
+   * @param {SummaryWriteOptions} [options] (optional) options for write operation
+   *
+   * @returns {Promise} summary instance
+   */
+  write(options) {
+    return __awaiter(this, void 0, void 0, function* () {
+      const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);
+      const filePath = yield this.filePath();
+      const writeFunc = overwrite ? writeFile : appendFile;
+      yield writeFunc(filePath, this._buffer, { encoding: "utf8" });
+      return this.emptyBuffer();
+    });
+  }
+  /**
+   * Clears the summary buffer and wipes the summary file
+   *
+   * @returns {Summary} summary instance
+   */
+  clear() {
+    return __awaiter(this, void 0, void 0, function* () {
+      return this.emptyBuffer().write({ overwrite: true });
+    });
+  }
+  /**
+   * Returns the current summary buffer as a string
+   *
+   * @returns {string} string of summary buffer
+   */
+  stringify() {
+    return this._buffer;
+  }
+  /**
+   * If the summary buffer is empty
+   *
+   * @returns {boolen} true if the buffer is empty
+   */
+  isEmptyBuffer() {
+    return this._buffer.length === 0;
+  }
+  /**
+   * Resets the summary buffer without writing to summary file
+   *
+   * @returns {Summary} summary instance
+   */
+  emptyBuffer() {
+    this._buffer = "";
+    return this;
+  }
+  /**
+   * Adds raw text to the summary buffer
+   *
+   * @param {string} text content to add
+   * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)
+   *
+   * @returns {Summary} summary instance
+   */
+  addRaw(text, addEOL = false) {
+    this._buffer += text;
+    return addEOL ? this.addEOL() : this;
+  }
+  /**
+   * Adds the operating system-specific end-of-line marker to the buffer
+   *
+   * @returns {Summary} summary instance
+   */
+  addEOL() {
+    return this.addRaw(EOL2);
+  }
+  /**
+   * Adds an HTML codeblock to the summary buffer
+   *
+   * @param {string} code content to render within fenced code block
+   * @param {string} lang (optional) language to syntax highlight code
+   *
+   * @returns {Summary} summary instance
+   */
+  addCodeBlock(code, lang) {
+    const attrs = Object.assign({}, lang && { lang });
+    const element = this.wrap("pre", this.wrap("code", code), attrs);
+    return this.addRaw(element).addEOL();
+  }
+  /**
+   * Adds an HTML list to the summary buffer
+   *
+   * @param {string[]} items list of items to render
+   * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)
+   *
+   * @returns {Summary} summary instance
+   */
+  addList(items, ordered = false) {
+    const tag = ordered ? "ol" : "ul";
+    const listItems = items.map((item) => this.wrap("li", item)).join("");
+    const element = this.wrap(tag, listItems);
+    return this.addRaw(element).addEOL();
+  }
+  /**
+   * Adds an HTML table to the summary buffer
+   *
+   * @param {SummaryTableCell[]} rows table rows
+   *
+   * @returns {Summary} summary instance
+   */
+  addTable(rows) {
+    const tableBody = rows.map((row) => {
+      const cells = row.map((cell) => {
+        if (typeof cell === "string") {
+          return this.wrap("td", cell);
+        }
+        const { header, data, colspan, rowspan } = cell;
+        const tag = header ? "th" : "td";
+        const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan });
+        return this.wrap(tag, data, attrs);
+      }).join("");
+      return this.wrap("tr", cells);
+    }).join("");
+    const element = this.wrap("table", tableBody);
+    return this.addRaw(element).addEOL();
+  }
+  /**
+   * Adds a collapsable HTML details element to the summary buffer
+   *
+   * @param {string} label text for the closed state
+   * @param {string} content collapsable content
+   *
+   * @returns {Summary} summary instance
+   */
+  addDetails(label, content) {
+    const element = this.wrap("details", this.wrap("summary", label) + content);
+    return this.addRaw(element).addEOL();
+  }
+  /**
+   * Adds an HTML image tag to the summary buffer
+   *
+   * @param {string} src path to the image you to embed
+   * @param {string} alt text description of the image
+   * @param {SummaryImageOptions} options (optional) addition image attributes
+   *
+   * @returns {Summary} summary instance
+   */
+  addImage(src, alt, options) {
+    const { width, height: height2 } = options || {};
+    const attrs = Object.assign(Object.assign({}, width && { width }), height2 && { height: height2 });
+    const element = this.wrap("img", null, Object.assign({ src, alt }, attrs));
+    return this.addRaw(element).addEOL();
+  }
+  /**
+   * Adds an HTML section heading element
+   *
+   * @param {string} text heading text
+   * @param {number | string} [level=1] (optional) the heading level, default: 1
+   *
+   * @returns {Summary} summary instance
+   */
+  addHeading(text, level) {
+    const tag = `h${level}`;
+    const allowedTag = ["h1", "h2", "h3", "h4", "h5", "h6"].includes(tag) ? tag : "h1";
+    const element = this.wrap(allowedTag, text);
+    return this.addRaw(element).addEOL();
+  }
+  /**
+   * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap("hr", null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap("br", null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, cite && { cite }); + const element = this.wrap("blockquote", text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap("a", text, { href }); + return this.addRaw(element).addEOL(); + } +}; +var _summary = new Summary(); + +// +import os2 from "os"; + +// +import * as fs from "fs"; +var { chmod, copyFile, lstat, mkdir, open, readdir, rename, rm, rmdir, stat, symlink, unlink } = fs.promises; +var IS_WINDOWS = process.platform === "win32"; +var READONLY = fs.constants.O_RDONLY; + +// +var IS_WINDOWS2 = process.platform === "win32"; + +// +var platform = os2.platform(); +var arch = os2.arch(); + +// +var ExitCode; +(function(ExitCode2) { + ExitCode2[ExitCode2["Success"] = 0] = "Success"; + ExitCode2[ExitCode2["Failure"] = 1] = "Failure"; +})(ExitCode || (ExitCode = {})); +function setSecret(secret) { + issueCommand("add-mask", {}, secret); +} +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +function getBooleanInput(name, options) { + const trueValue = ["true", "True", "TRUE"]; + const falseValue = ["false", "False", "FALSE"]; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +function debug(message) { + issueCommand("debug", {}, message); +} +function error(message, properties = {}) { + issueCommand("error", toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +function info(message) { + process.stdout.write(message + os3.EOL); +} + +// +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + if (typeof process === "object" && process.version !== void 0) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + return ""; +} + +// +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); + } + if (!options) { + options = {}; + } + if (Array.isArray(name)) { + return name.reverse().reduce((callback, name2) => { + return register.bind(null, state, name2, callback, options); + }, method)(); + } + return Promise.resolve().then(() => { + if (!state.registry[name]) { + return method(options); + } + return state.registry[name].reduce((method2, registered) => { + return registered.hook.bind(null, method2, options); + }, method)(); + }); +} + +// +function addHook(state, kind, name, hook6) { + const orig = hook6; + if (!state.registry[name]) { + state.registry[name] = []; + } + if (kind === "before") { + hook6 = (method, options) => { + return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); + }; + } + if (kind === "after") { + hook6 = (method, options) => { + let result; + return Promise.resolve().then(method.bind(null, options)).then((result_) => { + result = result_; + return orig(result, options); + }).then(() => { + return result; + }); + }; + } + if (kind === "error") { + hook6 = (method, options) => { + return Promise.resolve().then(method.bind(null, options)).catch((error2) => { + return orig(error2, options); + }); + }; + } + state.registry[name].push({ + hook: hook6, + orig + }); +} + +// +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + const index = state.registry[name].map((registered) => { + return registered.orig; + }).indexOf(method); + if (index === -1) { + return; + } + state.registry[name].splice(index, 1); +} + +// +var bind = Function.bind; +var bindable = bind.bind(bind); +function bindApi(hook6, state, name) { + const removeHookRef = bindable(removeHook, null).apply( + null, + name ? [state, name] : [state] + ); + hook6.api = { remove: removeHookRef }; + hook6.remove = removeHookRef; + ["before", "error", "after", "wrap"].forEach((kind) => { + const args = name ? [state, kind, name] : [state, kind]; + hook6[kind] = hook6.api[kind] = bindable(addHook, null).apply(null, args); + }); +} +function Singular() { + const singularHookName = Symbol("Singular"); + const singularHookState = { + registry: {} + }; + const singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} +function Collection() { + const state = { + registry: {} + }; + const hook6 = register.bind(null, state); + bindApi(hook6, state); + return hook6; +} +var before_after_hook_default = { Singular, Collection }; + +// +var VERSION = "0.0.0-development"; +var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; +var DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "" + } +}; +function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} +function isPlainObject(value) { + if (typeof value !== "object" || value === null) + return false; + if (Object.prototype.toString.call(value) !== "[object Object]") + return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) + return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} +function mergeDeep(defaults3, options) { + const result = Object.assign({}, defaults3); + Object.keys(options).forEach((key) => { + if (isPlainObject(options[key])) { + if (!(key in defaults3)) + Object.assign(result, { [key]: options[key] }); + else + result[key] = mergeDeep(defaults3[key], options[key]); + } else { + Object.assign(result, { [key]: options[key] }); + } + }); + return result; +} +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === void 0) { + delete obj[key]; + } + } + return obj; +} +function merge(defaults3, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { method, url } : { url: method }, options); + } else { + options = Object.assign({}, route); + } + options.headers = lowercaseKeys(options.headers); + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults3 || {}, options); + if (options.url === "/graphql") { + if (defaults3 && defaults3.mediaType.previews?.length) { + mergedOptions.mediaType.previews = defaults3.mediaType.previews.filter( + (preview) => !mergedOptions.mediaType.previews.includes(preview) + ).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); + } + return mergedOptions; +} +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return url + separator + names.map((name) => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} +var urlVariableRegex = /\{[^{}}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); +} +function omit(object, keysToOmit) { + const result = { __proto__: null }; + for (const key of Object.keys(object)) { + if (keysToOmit.indexOf(key) === -1) { + result[key] = object[key]; + } + } + return result; +} +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + return part; + }).join(""); +} +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} +function isDefined(value) { + return value !== void 0 && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +function getValues(context3, operator, key, modifier) { + var value = context3[key], result = []; + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") { + value = value.toString(); + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + result.push( + encodeValue(operator, value, isKeyOperator(operator) ? key : "") + ); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + result.push( + encodeValue(operator, value2, isKeyOperator(operator) ? key : "") + ); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + return result; +} +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} +function expand(template, context3) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + template = template.replace( + /\{([^\{\}]+)\}|([^\{\}]+)/g, + function(_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + expression.split(/,/g).forEach(function(variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context3, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== "+") { + var separator = ","; + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + } + ); + if (template === "/") { + return template; + } else { + return template.replace(/\/$/, ""); + } +} +function parse(options) { + let method = options.method.toUpperCase(); + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, [ + "method", + "baseUrl", + "url", + "headers", + "request", + "mediaType" + ]); + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept.split(/,/).map( + (format3) => format3.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${options.mediaType.format}` + ) + ).join(","); + } + if (url.endsWith("/graphql")) { + if (options.mediaType.previews?.length) { + const previewsFromAcceptHeader = headers.accept.match(/(? { + const format3 = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format3}`; + }).join(","); + } + } + } + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + return Object.assign( + { method, url, headers }, + typeof body !== "undefined" ? { body } : null, + options.request ? { request: options.request } : null + ); +} +function endpointWithDefaults(defaults3, route, options) { + return parse(merge(defaults3, route, options)); +} +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), + parse + }); +} +var endpoint = withDefaults(null, DEFAULTS); + +// +var import_content_type = __toESM(require_dist()); + +// +var intRegex = /^-?\d+$/; +var noiseValue = /^-?\d+n+$/; +var originalStringify = JSON.stringify; +var originalParse = JSON.parse; +var customFormat = /^-?\d+n$/; +var bigIntsStringify = /([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; +var noiseStringify = /([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; +var JSONStringify = (value, replacer, space) => { + if ("rawJSON" in JSON) { + return originalStringify( + value, + (key, value2) => { + if (typeof value2 === "bigint") + return JSON.rawJSON(value2.toString()); + if (typeof replacer === "function") + return replacer(key, value2); + if (Array.isArray(replacer) && replacer.includes(key)) + return value2; + return value2; + }, + space + ); + } + if (!value) + return originalStringify(value, replacer, space); + const convertedToCustomJSON = originalStringify( + value, + (key, value2) => { + const isNoise = typeof value2 === "string" && noiseValue.test(value2); + if (isNoise) + return value2.toString() + "n"; + if (typeof value2 === "bigint") + return value2.toString() + "n"; + if (typeof replacer === "function") + return replacer(key, value2); + if (Array.isArray(replacer) && replacer.includes(key)) + return value2; + return value2; + }, + space + ); + const processedJSON = convertedToCustomJSON.replace( + bigIntsStringify, + "$1$2$3" + ); + const denoisedJSON = processedJSON.replace(noiseStringify, "$1$2$3"); + return denoisedJSON; +}; +var featureCache = /* @__PURE__ */ new Map(); +var isContextSourceSupported = () => { + const parseFingerprint = JSON.parse.toString(); + if (featureCache.has(parseFingerprint)) { + return featureCache.get(parseFingerprint); + } + try { + const result = JSON.parse( + "1", + (_, __, context3) => !!context3?.source && context3.source === "1" + ); + featureCache.set(parseFingerprint, result); + return result; + } catch { + featureCache.set(parseFingerprint, false); + return false; + } +}; +var convertMarkedBigIntsReviver = (key, value, context3, userReviver) => { + const isCustomFormatBigInt = typeof value === "string" && customFormat.test(value); + if (isCustomFormatBigInt) + return BigInt(value.slice(0, -1)); + const isNoiseValue = typeof value === "string" && noiseValue.test(value); + if (isNoiseValue) + return value.slice(0, -1); + if (typeof userReviver !== "function") + return value; + return userReviver(key, value, context3); +}; +var JSONParseV2 = (text, reviver) => { + return JSON.parse(text, (key, value, context3) => { + const isBigNumber = typeof value === "number" && (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER); + const isInt = context3 && intRegex.test(context3.source); + const isBigInt = isBigNumber && isInt; + if (isBigInt) + return BigInt(context3.source); + if (typeof reviver !== "function") + return value; + return reviver(key, value, context3); + }); +}; +var MAX_INT = Number.MAX_SAFE_INTEGER.toString(); +var MAX_DIGITS = MAX_INT.length; +var stringsOrLargeNumbers = /"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g; +var noiseValueWithQuotes = /^"-?\d+n+"$/; +var JSONParse = (text, reviver) => { + if (!text) + return originalParse(text, reviver); + if (isContextSourceSupported()) + return JSONParseV2(text, reviver); + const serializedData = text.replace( + stringsOrLargeNumbers, + (text2, digits, fractional, exponential) => { + const isString = text2[0] === '"'; + const isNoise = isString && noiseValueWithQuotes.test(text2); + if (isNoise) + return text2.substring(0, text2.length - 1) + 'n"'; + const isFractionalOrExponential = fractional || exponential; + const isLessThanMaxSafeInt = digits && (digits.length < MAX_DIGITS || digits.length === MAX_DIGITS && digits <= MAX_INT); + if (isString || isFractionalOrExponential || isLessThanMaxSafeInt) + return text2; + return '"' + text2 + 'n"'; + } + ); + return originalParse( + serializedData, + (key, value, context3) => convertMarkedBigIntsReviver(key, value, context3, reviver) + ); +}; + +// +var RequestError = class extends Error { + name; + /** + * http status code + */ + status; + /** + * Request options that lead to the error. + */ + request; + /** + * Response object if a response was received + */ + response; + constructor(message, statusCode, options) { + super(message, { cause: options.cause }); + this.name = "HttpError"; + this.status = Number.parseInt(statusCode); + if (Number.isNaN(this.status)) { + this.status = 0; + } + if ("response" in options) { + this.response = options.response; + } + const requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace( + /(? ""; +async function fetchWrapper(requestOptions) { + const fetch3 = requestOptions.request?.fetch || globalThis.fetch; + if (!fetch3) { + throw new Error( + "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" + ); + } + const log = requestOptions.request?.log || console; + const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false; + const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body; + const requestHeaders = Object.fromEntries( + Object.entries(requestOptions.headers).map(([name, value]) => [ + name, + String(value) + ]) + ); + let fetchResponse; + try { + fetchResponse = await fetch3(requestOptions.url, { + method: requestOptions.method, + body, + redirect: requestOptions.request?.redirect, + headers: requestHeaders, + signal: requestOptions.request?.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...requestOptions.body && { duplex: "half" } + }); + } catch (error2) { + let message = "Unknown Error"; + if (error2 instanceof Error) { + if (error2.name === "AbortError") { + error2.status = 500; + throw error2; + } + message = error2.message; + if (error2.name === "TypeError" && "cause" in error2) { + if (error2.cause instanceof Error) { + message = error2.cause.message; + } else if (typeof error2.cause === "string") { + message = error2.cause; + } + } + } + const requestError = new RequestError(message, 500, { + request: requestOptions + }); + requestError.cause = error2; + throw requestError; + } + const status = fetchResponse.status; + const url = fetchResponse.url; + const responseHeaders = {}; + for (const [key, value] of fetchResponse.headers) { + responseHeaders[key] = value; + } + const octokitResponse = { + url, + status, + headers: responseHeaders, + data: "" + }; + if ("deprecation" in responseHeaders) { + const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` + ); + } + if (status === 204 || status === 205) { + return octokitResponse; + } + if (requestOptions.method === "HEAD") { + if (status < 400) { + return octokitResponse; + } + throw new RequestError(fetchResponse.statusText, status, { + response: octokitResponse, + request: requestOptions + }); + } + if (status === 304) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError("Not modified", status, { + response: octokitResponse, + request: requestOptions + }); + } + if (status >= 400) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError(toErrorMessage(octokitResponse.data), status, { + response: octokitResponse, + request: requestOptions + }); + } + octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; + return octokitResponse; +} +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + if (!contentType) { + return response.text().catch(noop); + } + const mimetype = (0, import_content_type.parse)(contentType); + if (isJSONResponse(mimetype)) { + let text = ""; + try { + text = await response.text(); + return JSONParse(text); + } catch (err) { + return text; + } + } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") { + return response.text().catch(noop); + } else { + return response.arrayBuffer().catch( + /* v8 ignore next -- @preserve */ + () => new ArrayBuffer(0) + ); + } +} +function isJSONResponse(mimetype) { + return mimetype.type === "application/json" || mimetype.type === "application/scim+json"; +} +function toErrorMessage(data) { + if (typeof data === "string") { + return data; + } + if (data instanceof ArrayBuffer) { + return "Unknown error"; + } + if ("message" in data) { + const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : ""; + return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`; + } + return `Unknown error: ${JSON.stringify(data)}`; +} +function withDefaults2(oldEndpoint, newDefaults) { + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function(route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint2.parse(endpointOptions)); + } + const request2 = (route2, parameters2) => { + return fetchWrapper( + endpoint2.parse(endpoint2.merge(route2, parameters2)) + ); + }; + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); + return endpointOptions.request.hook(request2, endpointOptions); + }; + return Object.assign(newApi, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); +} +var request = withDefaults2(endpoint, defaults_default); + +// +var VERSION3 = "0.0.0-development"; +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors: +` + data.errors.map((e) => ` - ${e.message}`).join("\n"); +} +var GraphqlResponseError = class extends Error { + constructor(request2, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request2; + this.headers = headers; + this.response = response; + this.errors = response.errors; + this.data = response.data; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + name = "GraphqlResponseError"; + errors; + data; +}; +var NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType", + "operationName" +]; +var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request2, query2, options) { + if (options) { + if (typeof query2 === "string" && "query" in options) { + return Promise.reject( + new Error(`[@octokit/graphql] "query" cannot be used as variable name`) + ); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject( + new Error( + `[@octokit/graphql] "${key}" cannot be used as variable name` + ) + ); + } + } + const parsedOptions = typeof query2 === "string" ? Object.assign({ query: query2 }, options) : query2; + const requestOptions = Object.keys( + parsedOptions + ).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + const baseUrl2 = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl2)) { + requestOptions.url = baseUrl2.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request2(requestOptions).then((response) => { + if (response.data.errors) { + const headers = {}; + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + throw new GraphqlResponseError( + requestOptions, + headers, + response.data + ); + } + return response.data.data; + }); +} +function withDefaults3(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); + const newApi = (query2, options) => { + return graphql(newRequest, query2, options); + }; + return Object.assign(newApi, { + defaults: withDefaults3.bind(null, newRequest), + endpoint: newRequest.endpoint + }); +} +var graphql2 = withDefaults3(request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults3(customRequest, { + method: "POST", + url: "/graphql" + }); +} + +// +var b64url = "(?:[a-zA-Z0-9_-]+)"; +var sep = "\\."; +var jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`); +var isJWT = jwtRE.test.bind(jwtRE); +async function auth(token) { + const isApp = isJWT(token); + const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_"); + const isUserToServer = token.startsWith("ghu_"); + const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return { + type: "token", + token, + tokenType + }; +} +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + return `token ${token}`; +} +async function hook(token, request2, route, parameters) { + const endpoint2 = request2.endpoint.merge( + route, + parameters + ); + endpoint2.headers.authorization = withAuthorizationPrefix(token); + return request2(endpoint2); +} +var createTokenAuth = function createTokenAuth2(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + if (typeof token !== "string") { + throw new Error( + "[@octokit/auth-token] Token passed to createTokenAuth is not a string" + ); + } + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; + +// +var VERSION4 = "7.0.6"; + +// +var noop2 = () => { +}; +var consoleWarn = console.warn.bind(console); +var consoleError = console.error.bind(console); +function createLogger(logger = {}) { + if (typeof logger.debug !== "function") { + logger.debug = noop2; + } + if (typeof logger.info !== "function") { + logger.info = noop2; + } + if (typeof logger.warn !== "function") { + logger.warn = consoleWarn; + } + if (typeof logger.error !== "function") { + logger.error = consoleError; + } + return logger; +} +var userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`; +var Octokit = class { + static VERSION = VERSION4; + static defaults(defaults3) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults3 === "function") { + super(defaults3(options)); + return; + } + super( + Object.assign( + {}, + defaults3, + options, + options.userAgent && defaults3.userAgent ? { + userAgent: `${options.userAgent} ${defaults3.userAgent}` + } : null + ) + ); + } + }; + return OctokitWithDefaults; + } + static plugins = []; + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + static plugin(...newPlugins) { + const currentPlugins = this.plugins; + const NewOctokit = class extends this { + static plugins = currentPlugins.concat( + newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) + ); + }; + return NewOctokit; + } + constructor(options = {}) { + const hook6 = new before_after_hook_default.Collection(); + const requestDefaults = { + baseUrl: request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook6.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; + requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } + this.request = request.defaults(requestDefaults); + this.graphql = withCustomRequest(this.request).defaults(requestDefaults); + this.log = createLogger(options.log); + this.hook = hook6; + if (!options.authStrategy) { + if (!options.auth) { + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + const auth6 = createTokenAuth(options.auth); + hook6.wrap("request", auth6.hook); + this.auth = auth6; + } + } else { + const { authStrategy, ...otherOptions } = options; + const auth6 = authStrategy( + Object.assign( + { + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, + options.auth + ) + ); + hook6.wrap("request", auth6.hook); + this.auth = auth6; + } + const classConstructor = this.constructor; + for (let i = 0; i < classConstructor.plugins.length; ++i) { + Object.assign(this, classConstructor.plugins[i](this, options)); + } + } + // assigned during constructor + request; + graphql; + log; + hook; + // TODO: type `octokit.auth` based on passed options.authStrategy + auth; +}; + +// +var VERSION5 = "6.0.0"; + +// +function requestLog(octokit) { + octokit.hook.wrap("request", (request2, options) => { + octokit.log.debug("request", options); + const start = Date.now(); + const requestOptions = octokit.request.endpoint.parse(options); + const path5 = requestOptions.url.replace(options.baseUrl, ""); + return request2(options).then((response) => { + const requestId = response.headers["x-github-request-id"]; + octokit.log.info( + `${requestOptions.method} ${path5} - ${response.status} with id ${requestId} in ${Date.now() - start}ms` + ); + return response; + }).catch((error2) => { + const requestId = error2.response?.headers["x-github-request-id"] || "UNKNOWN"; + octokit.log.error( + `${requestOptions.method} ${path5} - ${error2.status} with id ${requestId} in ${Date.now() - start}ms` + ); + throw error2; + }); + }); +} +requestLog.VERSION = VERSION5; + +// +var VERSION6 = "0.0.0-development"; +function normalizePaginatedListResponse(response) { + if (!response.data) { + return { + ...response, + data: [] + }; + } + const responseNeedsNormalization = ("total_count" in response.data || "total_commits" in response.data) && !("url" in response.data); + if (!responseNeedsNormalization) + return response; + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + const totalCommits = response.data.total_commits; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + delete response.data.total_commits; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + response.data.total_count = totalCount; + response.data.total_commits = totalCommits; + return response; +} +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match( + /<([^<>]+)>;\s*rel="next"/ + ) || [])[1]; + if (!url && "total_commits" in normalizedResponse.data) { + const parsedUrl = new URL(normalizedResponse.url); + const params2 = parsedUrl.searchParams; + const page = parseInt(params2.get("page") || "1", 10); + const per_page = parseInt(params2.get("per_page") || "250", 10); + if (page * per_page < normalizedResponse.data.total_commits) { + params2.set("page", String(page + 1)); + url = parsedUrl.toString(); + } + } + return { value: normalizedResponse }; + } catch (error2) { + if (error2.status !== 409) + throw error2; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + }) + }; +} +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = void 0; + } + return gather( + octokit, + [], + iterator(octokit, route, parameters)[Symbol.asyncIterator](), + mapFn + ); +} +function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat( + mapFn ? mapFn(result.value, done) : result.value.data + ); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator2, mapFn); + }); +} +var composePaginateRest = Object.assign(paginate, { + iterator +}); +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION6; + +// +var VERSION7 = "17.0.0"; + +// +var Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: [ + "POST /orgs/{org}/actions/runners/{runner_id}/labels" + ], + addCustomLabelsToSelfHostedRunnerForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + addRepoAccessToSelfHostedRunnerGroupInOrg: [ + "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + approveWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" + ], + cancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" + ], + createEnvironmentVariable: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/variables" + ], + createHostedRunnerForOrg: ["POST /orgs/{org}/actions/hosted-runners"], + createOrUpdateEnvironmentSecret: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + createOrgVariable: ["POST /orgs/{org}/actions/variables"], + createRegistrationTokenForOrg: [ + "POST /orgs/{org}/actions/runners/registration-token" + ], + createRegistrationTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/registration-token" + ], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/remove-token" + ], + createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], + createWorkflowDispatch: [ + "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" + ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" + ], + deleteArtifact: [ + "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" + ], + deleteCustomImageFromOrg: [ + "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}" + ], + deleteCustomImageVersionFromOrg: [ + "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}" + ], + deleteEnvironmentSecret: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + deleteEnvironmentVariable: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" + ], + deleteHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + deleteRepoVariable: [ + "DELETE /repos/{owner}/{repo}/actions/variables/{name}" + ], + deleteSelfHostedRunnerFromOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}" + ], + deleteSelfHostedRunnerFromRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: [ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + disableSelectedRepositoryGithubActionsOrganization: [ + "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + disableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" + ], + downloadArtifact: [ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" + ], + downloadJobLogsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" + ], + downloadWorkflowRunAttemptLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" + ], + downloadWorkflowRunLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + enableSelectedRepositoryGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + enableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" + ], + forceCancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel" + ], + generateRunnerJitconfigForOrg: [ + "POST /orgs/{org}/actions/runners/generate-jitconfig" + ], + generateRunnerJitconfigForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" + ], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: [ + "GET /orgs/{org}/actions/cache/usage-by-repository" + ], + getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], + getAllowedActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/selected-actions" + ], + getAllowedActionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + getCustomImageForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}" + ], + getCustomImageVersionForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}" + ], + getCustomOidcSubClaimForRepo: [ + "GET /repos/{owner}/{repo}/actions/oidc/customization/sub" + ], + getEnvironmentPublicKey: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key" + ], + getEnvironmentSecret: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + getEnvironmentVariable: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" + ], + getGithubActionsDefaultWorkflowPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions/workflow" + ], + getGithubActionsDefaultWorkflowPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/workflow" + ], + getGithubActionsPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions" + ], + getGithubActionsPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions" + ], + getHostedRunnerForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" + ], + getHostedRunnersGithubOwnedImagesForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/images/github-owned" + ], + getHostedRunnersLimitsForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/limits" + ], + getHostedRunnersMachineSpecsForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/machine-sizes" + ], + getHostedRunnersPartnerImagesForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/images/partner" + ], + getHostedRunnersPlatformsForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/platforms" + ], + getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], + getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], + getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], + getPendingDeploymentsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + getRepoPermissions: [ + "GET /repos/{owner}/{repo}/actions/permissions", + {}, + { renamed: ["actions", "getGithubActionsPermissionsRepository"] } + ], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], + getReviewsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals" + ], + getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], + getWorkflowAccessToRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/access" + ], + getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], + getWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}" + ], + getWorkflowRunUsage: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing" + ], + getWorkflowUsage: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing" + ], + listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], + listCustomImageVersionsForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions" + ], + listCustomImagesForOrg: [ + "GET /orgs/{org}/actions/hosted-runners/images/custom" + ], + listEnvironmentSecrets: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/secrets" + ], + listEnvironmentVariables: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/variables" + ], + listGithubHostedRunnersInGroupForOrg: [ + "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners" + ], + listHostedRunnersForOrg: ["GET /orgs/{org}/actions/hosted-runners"], + listJobsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" + ], + listJobsForWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs" + ], + listLabelsForSelfHostedRunnerForOrg: [ + "GET /orgs/{org}/actions/runners/{runner_id}/labels" + ], + listLabelsForSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listOrgVariables: ["GET /orgs/{org}/actions/variables"], + listRepoOrganizationSecrets: [ + "GET /repos/{owner}/{repo}/actions/organization-secrets" + ], + listRepoOrganizationVariables: [ + "GET /repos/{owner}/{repo}/actions/organization-variables" + ], + listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], + listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], + listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], + listRunnerApplicationsForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/downloads" + ], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + listSelectedReposForOrgVariable: [ + "GET /orgs/{org}/actions/variables/{name}/repositories" + ], + listSelectedRepositoriesEnabledGithubActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/repositories" + ], + listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], + listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], + listWorkflowRunArtifacts: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts" + ], + listWorkflowRuns: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs" + ], + listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], + reRunJobForWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun" + ], + reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], + reRunWorkflowFailedJobs: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs" + ], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels" + ], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + removeCustomLabelFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}" + ], + removeCustomLabelFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgVariable: [ + "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + reviewCustomGatesForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule" + ], + reviewPendingDeploymentsForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + setAllowedActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/selected-actions" + ], + setAllowedActionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + setCustomLabelsForSelfHostedRunnerForOrg: [ + "PUT /orgs/{org}/actions/runners/{runner_id}/labels" + ], + setCustomLabelsForSelfHostedRunnerForRepo: [ + "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + setCustomOidcSubClaimForRepo: [ + "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub" + ], + setGithubActionsDefaultWorkflowPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/workflow" + ], + setGithubActionsDefaultWorkflowPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/workflow" + ], + setGithubActionsPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions" + ], + setGithubActionsPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories" + ], + setSelectedRepositoriesEnabledGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories" + ], + setWorkflowAccessToRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/access" + ], + updateEnvironmentVariable: [ + "PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" + ], + updateHostedRunnerForOrg: [ + "PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" + ], + updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], + updateRepoVariable: [ + "PATCH /repos/{owner}/{repo}/actions/variables/{name}" + ] + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], + deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], + deleteThreadSubscription: [ + "DELETE /notifications/threads/{thread_id}/subscription" + ], + getFeeds: ["GET /feeds"], + getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], + getThread: ["GET /notifications/threads/{thread_id}"], + getThreadSubscriptionForAuthenticatedUser: [ + "GET /notifications/threads/{thread_id}/subscription" + ], + listEventsForAuthenticatedUser: ["GET /users/{username}/events"], + listNotificationsForAuthenticatedUser: ["GET /notifications"], + listOrgEventsForAuthenticatedUser: [ + "GET /users/{username}/events/orgs/{org}" + ], + listPublicEvents: ["GET /events"], + listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], + listPublicEventsForUser: ["GET /users/{username}/events/public"], + listPublicOrgEvents: ["GET /orgs/{org}/events"], + listReceivedEventsForUser: ["GET /users/{username}/received_events"], + listReceivedPublicEventsForUser: [ + "GET /users/{username}/received_events/public" + ], + listRepoEvents: ["GET /repos/{owner}/{repo}/events"], + listRepoNotificationsForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/notifications" + ], + listReposStarredByAuthenticatedUser: ["GET /user/starred"], + listReposStarredByUser: ["GET /users/{username}/starred"], + listReposWatchedByUser: ["GET /users/{username}/subscriptions"], + listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], + listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], + listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], + markNotificationsAsRead: ["PUT /notifications"], + markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], + markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"], + markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], + setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], + setThreadSubscription: [ + "PUT /notifications/threads/{thread_id}/subscription" + ], + starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], + unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] + }, + apps: { + addRepoToInstallation: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] } + ], + addRepoToInstallationForAuthenticatedUser: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}" + ], + checkToken: ["POST /applications/{client_id}/token"], + createFromManifest: ["POST /app-manifests/{code}/conversions"], + createInstallationAccessToken: [ + "POST /app/installations/{installation_id}/access_tokens" + ], + deleteAuthorization: ["DELETE /applications/{client_id}/grant"], + deleteInstallation: ["DELETE /app/installations/{installation_id}"], + deleteToken: ["DELETE /applications/{client_id}/token"], + getAuthenticated: ["GET /app"], + getBySlug: ["GET /apps/{app_slug}"], + getInstallation: ["GET /app/installations/{installation_id}"], + getOrgInstallation: ["GET /orgs/{org}/installation"], + getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], + getSubscriptionPlanForAccount: [ + "GET /marketplace_listing/accounts/{account_id}" + ], + getSubscriptionPlanForAccountStubbed: [ + "GET /marketplace_listing/stubbed/accounts/{account_id}" + ], + getUserInstallation: ["GET /users/{username}/installation"], + getWebhookConfigForApp: ["GET /app/hook/config"], + getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], + listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], + listAccountsForPlanStubbed: [ + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts" + ], + listInstallationReposForAuthenticatedUser: [ + "GET /user/installations/{installation_id}/repositories" + ], + listInstallationRequestsForAuthenticatedApp: [ + "GET /app/installation-requests" + ], + listInstallations: ["GET /app/installations"], + listInstallationsForAuthenticatedUser: ["GET /user/installations"], + listPlans: ["GET /marketplace_listing/plans"], + listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], + listReposAccessibleToInstallation: ["GET /installation/repositories"], + listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], + listSubscriptionsForAuthenticatedUserStubbed: [ + "GET /user/marketplace_purchases/stubbed" + ], + listWebhookDeliveries: ["GET /app/hook/deliveries"], + redeliverWebhookDelivery: [ + "POST /app/hook/deliveries/{delivery_id}/attempts" + ], + removeRepoFromInstallation: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] } + ], + removeRepoFromInstallationForAuthenticatedUser: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}" + ], + resetToken: ["PATCH /applications/{client_id}/token"], + revokeInstallationAccessToken: ["DELETE /installation/token"], + scopeToken: ["POST /applications/{client_id}/token/scoped"], + suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], + unsuspendInstallation: [ + "DELETE /app/installations/{installation_id}/suspended" + ], + updateWebhookConfigForApp: ["PATCH /app/hook/config"] + }, + billing: { + getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], + getGithubActionsBillingUser: [ + "GET /users/{username}/settings/billing/actions" + ], + getGithubBillingPremiumRequestUsageReportOrg: [ + "GET /organizations/{org}/settings/billing/premium_request/usage" + ], + getGithubBillingPremiumRequestUsageReportUser: [ + "GET /users/{username}/settings/billing/premium_request/usage" + ], + getGithubBillingUsageReportOrg: [ + "GET /organizations/{org}/settings/billing/usage" + ], + getGithubBillingUsageReportUser: [ + "GET /users/{username}/settings/billing/usage" + ], + getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], + getGithubPackagesBillingUser: [ + "GET /users/{username}/settings/billing/packages" + ], + getSharedStorageBillingOrg: [ + "GET /orgs/{org}/settings/billing/shared-storage" + ], + getSharedStorageBillingUser: [ + "GET /users/{username}/settings/billing/shared-storage" + ] + }, + campaigns: { + createCampaign: ["POST /orgs/{org}/campaigns"], + deleteCampaign: ["DELETE /orgs/{org}/campaigns/{campaign_number}"], + getCampaignSummary: ["GET /orgs/{org}/campaigns/{campaign_number}"], + listOrgCampaigns: ["GET /orgs/{org}/campaigns"], + updateCampaign: ["PATCH /orgs/{org}/campaigns/{campaign_number}"] + }, + checks: { + create: ["POST /repos/{owner}/{repo}/check-runs"], + createSuite: ["POST /repos/{owner}/{repo}/check-suites"], + get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], + getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], + listAnnotations: [ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations" + ], + listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], + listForSuite: [ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs" + ], + listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], + rerequestRun: [ + "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest" + ], + rerequestSuite: [ + "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest" + ], + setSuitesPreferences: [ + "PATCH /repos/{owner}/{repo}/check-suites/preferences" + ], + update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] + }, + codeScanning: { + commitAutofix: [ + "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits" + ], + createAutofix: [ + "POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" + ], + createVariantAnalysis: [ + "POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses" + ], + deleteAnalysis: [ + "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}" + ], + deleteCodeqlDatabase: [ + "DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + ], + getAlert: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", + {}, + { renamedParameters: { alert_id: "alert_number" } } + ], + getAnalysis: [ + "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}" + ], + getAutofix: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix" + ], + getCodeqlDatabase: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + ], + getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], + getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], + getVariantAnalysis: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}" + ], + getVariantAnalysisRepoTask: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}" + ], + listAlertInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances" + ], + listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], + listAlertsInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + {}, + { renamed: ["codeScanning", "listAlertInstances"] } + ], + listCodeqlDatabases: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases" + ], + listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}" + ], + updateDefaultSetup: [ + "PATCH /repos/{owner}/{repo}/code-scanning/default-setup" + ], + uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] + }, + codeSecurity: { + attachConfiguration: [ + "POST /orgs/{org}/code-security/configurations/{configuration_id}/attach" + ], + attachEnterpriseConfiguration: [ + "POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach" + ], + createConfiguration: ["POST /orgs/{org}/code-security/configurations"], + createConfigurationForEnterprise: [ + "POST /enterprises/{enterprise}/code-security/configurations" + ], + deleteConfiguration: [ + "DELETE /orgs/{org}/code-security/configurations/{configuration_id}" + ], + deleteConfigurationForEnterprise: [ + "DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}" + ], + detachConfiguration: [ + "DELETE /orgs/{org}/code-security/configurations/detach" + ], + getConfiguration: [ + "GET /orgs/{org}/code-security/configurations/{configuration_id}" + ], + getConfigurationForRepository: [ + "GET /repos/{owner}/{repo}/code-security-configuration" + ], + getConfigurationsForEnterprise: [ + "GET /enterprises/{enterprise}/code-security/configurations" + ], + getConfigurationsForOrg: ["GET /orgs/{org}/code-security/configurations"], + getDefaultConfigurations: [ + "GET /orgs/{org}/code-security/configurations/defaults" + ], + getDefaultConfigurationsForEnterprise: [ + "GET /enterprises/{enterprise}/code-security/configurations/defaults" + ], + getRepositoriesForConfiguration: [ + "GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories" + ], + getRepositoriesForEnterpriseConfiguration: [ + "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories" + ], + getSingleConfigurationForEnterprise: [ + "GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}" + ], + setConfigurationAsDefault: [ + "PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults" + ], + setConfigurationAsDefaultForEnterprise: [ + "PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults" + ], + updateConfiguration: [ + "PATCH /orgs/{org}/code-security/configurations/{configuration_id}" + ], + updateEnterpriseConfiguration: [ + "PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}" + ] + }, + codesOfConduct: { + getAllCodesOfConduct: ["GET /codes_of_conduct"], + getConductCode: ["GET /codes_of_conduct/{key}"] + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + checkPermissionsForDevcontainer: [ + "GET /repos/{owner}/{repo}/codespaces/permissions_check" + ], + codespaceMachinesForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/machines" + ], + createForAuthenticatedUser: ["POST /user/codespaces"], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + createOrUpdateSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}" + ], + createWithPrForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces" + ], + createWithRepoForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/codespaces" + ], + deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: [ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + deleteSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}" + ], + exportForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/exports" + ], + getCodespacesForUserInOrg: [ + "GET /orgs/{org}/members/{username}/codespaces" + ], + getExportDetailsForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/exports/{export_id}" + ], + getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], + getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], + getPublicKeyForAuthenticatedUser: [ + "GET /user/codespaces/secrets/public-key" + ], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + getSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}" + ], + listDevcontainersInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/devcontainers" + ], + listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: [ + "GET /orgs/{org}/codespaces", + {}, + { renamedParameters: { org_id: "org" } } + ], + listInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces" + ], + listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], + listRepositoriesForSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}/repositories" + ], + listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + preFlightWithRepoForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/new" + ], + publishForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/publish" + ], + removeRepositoryForSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + repoMachinesForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/machines" + ], + setRepositoriesForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], + stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: [ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop" + ], + updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] + }, + copilot: { + addCopilotSeatsForTeams: [ + "POST /orgs/{org}/copilot/billing/selected_teams" + ], + addCopilotSeatsForUsers: [ + "POST /orgs/{org}/copilot/billing/selected_users" + ], + cancelCopilotSeatAssignmentForTeams: [ + "DELETE /orgs/{org}/copilot/billing/selected_teams" + ], + cancelCopilotSeatAssignmentForUsers: [ + "DELETE /orgs/{org}/copilot/billing/selected_users" + ], + copilotMetricsForOrganization: ["GET /orgs/{org}/copilot/metrics"], + copilotMetricsForTeam: ["GET /orgs/{org}/team/{team_slug}/copilot/metrics"], + getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], + getCopilotSeatDetailsForUser: [ + "GET /orgs/{org}/members/{username}/copilot" + ], + listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"] + }, + credentials: { revoke: ["POST /credentials/revoke"] }, + dependabot: { + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], + getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/dependabot/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], + listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + repositoryAccessForOrg: [ + "GET /organizations/{org}/dependabot/repository-access" + ], + setRepositoryAccessDefaultLevel: [ + "PUT /organizations/{org}/dependabot/repository-access/default-level" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}" + ], + updateRepositoryAccessForOrg: [ + "PATCH /organizations/{org}/dependabot/repository-access" + ] + }, + dependencyGraph: { + createRepositorySnapshot: [ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots" + ], + diffRange: [ + "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}" + ], + exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] + }, + emojis: { get: ["GET /emojis"] }, + enterpriseTeamMemberships: { + add: [ + "PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}" + ], + bulkAdd: [ + "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add" + ], + bulkRemove: [ + "POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove" + ], + get: [ + "GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}" + ], + list: ["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"], + remove: [ + "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}" + ] + }, + enterpriseTeamOrganizations: { + add: [ + "PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}" + ], + bulkAdd: [ + "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add" + ], + bulkRemove: [ + "POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove" + ], + delete: [ + "DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}" + ], + getAssignment: [ + "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}" + ], + getAssignments: [ + "GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations" + ] + }, + enterpriseTeams: { + create: ["POST /enterprises/{enterprise}/teams"], + delete: ["DELETE /enterprises/{enterprise}/teams/{team_slug}"], + get: ["GET /enterprises/{enterprise}/teams/{team_slug}"], + list: ["GET /enterprises/{enterprise}/teams"], + update: ["PATCH /enterprises/{enterprise}/teams/{team_slug}"] + }, + gists: { + checkIsStarred: ["GET /gists/{gist_id}/star"], + create: ["POST /gists"], + createComment: ["POST /gists/{gist_id}/comments"], + delete: ["DELETE /gists/{gist_id}"], + deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], + fork: ["POST /gists/{gist_id}/forks"], + get: ["GET /gists/{gist_id}"], + getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], + getRevision: ["GET /gists/{gist_id}/{sha}"], + list: ["GET /gists"], + listComments: ["GET /gists/{gist_id}/comments"], + listCommits: ["GET /gists/{gist_id}/commits"], + listForUser: ["GET /users/{username}/gists"], + listForks: ["GET /gists/{gist_id}/forks"], + listPublic: ["GET /gists/public"], + listStarred: ["GET /gists/starred"], + star: ["PUT /gists/{gist_id}/star"], + unstar: ["DELETE /gists/{gist_id}/star"], + update: ["PATCH /gists/{gist_id}"], + updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] + }, + git: { + createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], + createCommit: ["POST /repos/{owner}/{repo}/git/commits"], + createRef: ["POST /repos/{owner}/{repo}/git/refs"], + createTag: ["POST /repos/{owner}/{repo}/git/tags"], + createTree: ["POST /repos/{owner}/{repo}/git/trees"], + deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], + getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], + getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], + getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], + getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], + getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], + listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], + updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] + }, + gitignore: { + getAllTemplates: ["GET /gitignore/templates"], + getTemplate: ["GET /gitignore/templates/{name}"] + }, + hostedCompute: { + createNetworkConfigurationForOrg: [ + "POST /orgs/{org}/settings/network-configurations" + ], + deleteNetworkConfigurationFromOrg: [ + "DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}" + ], + getNetworkConfigurationForOrg: [ + "GET /orgs/{org}/settings/network-configurations/{network_configuration_id}" + ], + getNetworkSettingsForOrg: [ + "GET /orgs/{org}/settings/network-settings/{network_settings_id}" + ], + listNetworkConfigurationsForOrg: [ + "GET /orgs/{org}/settings/network-configurations" + ], + updateNetworkConfigurationForOrg: [ + "PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}" + ] + }, + interactions: { + getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], + getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], + getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], + getRestrictionsForYourPublicRepos: [ + "GET /user/interaction-limits", + {}, + { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] } + ], + removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], + removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], + removeRestrictionsForRepo: [ + "DELETE /repos/{owner}/{repo}/interaction-limits" + ], + removeRestrictionsForYourPublicRepos: [ + "DELETE /user/interaction-limits", + {}, + { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] } + ], + setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], + setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], + setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], + setRestrictionsForYourPublicRepos: [ + "PUT /user/interaction-limits", + {}, + { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] } + ] + }, + issues: { + addAssignees: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + addBlockedByDependency: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by" + ], + addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], + addSubIssue: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" + ], + checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + checkUserCanBeAssignedToIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}" + ], + create: ["POST /repos/{owner}/{repo}/issues"], + createComment: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/comments" + ], + createLabel: ["POST /repos/{owner}/{repo}/labels"], + createMilestone: ["POST /repos/{owner}/{repo}/milestones"], + deleteComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}" + ], + deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], + deleteMilestone: [ + "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}" + ], + get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], + getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], + getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], + getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], + getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], + getParent: ["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"], + list: ["GET /issues"], + listAssignees: ["GET /repos/{owner}/{repo}/assignees"], + listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], + listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], + listDependenciesBlockedBy: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by" + ], + listDependenciesBlocking: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking" + ], + listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], + listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], + listEventsForTimeline: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline" + ], + listForAuthenticatedUser: ["GET /user/issues"], + listForOrg: ["GET /orgs/{org}/issues"], + listForRepo: ["GET /repos/{owner}/{repo}/issues"], + listLabelsForMilestone: [ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels" + ], + listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], + listLabelsOnIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + listMilestones: ["GET /repos/{owner}/{repo}/milestones"], + listSubIssues: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues" + ], + lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], + removeAllLabels: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + removeAssignees: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + removeDependencyBlockedBy: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}" + ], + removeLabel: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}" + ], + removeSubIssue: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue" + ], + reprioritizeSubIssue: [ + "PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority" + ], + setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], + unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], + update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], + updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], + updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], + updateMilestone: [ + "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}" + ] + }, + licenses: { + get: ["GET /licenses/{license}"], + getAllCommonlyUsed: ["GET /licenses"], + getForRepo: ["GET /repos/{owner}/{repo}/license"] + }, + markdown: { + render: ["POST /markdown"], + renderRaw: [ + "POST /markdown/raw", + { headers: { "content-type": "text/plain; charset=utf-8" } } + ] + }, + meta: { + get: ["GET /meta"], + getAllVersions: ["GET /versions"], + getOctocat: ["GET /octocat"], + getZen: ["GET /zen"], + root: ["GET /"] + }, + migrations: { + deleteArchiveForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/archive" + ], + deleteArchiveForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/archive" + ], + downloadArchiveForOrg: [ + "GET /orgs/{org}/migrations/{migration_id}/archive" + ], + getArchiveForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/archive" + ], + getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], + getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], + listForAuthenticatedUser: ["GET /user/migrations"], + listForOrg: ["GET /orgs/{org}/migrations"], + listReposForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/repositories" + ], + listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], + listReposForUser: [ + "GET /user/migrations/{migration_id}/repositories", + {}, + { renamed: ["migrations", "listReposForAuthenticatedUser"] } + ], + startForAuthenticatedUser: ["POST /user/migrations"], + startForOrg: ["POST /orgs/{org}/migrations"], + unlockRepoForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock" + ], + unlockRepoForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock" + ] + }, + oidc: { + getOidcCustomSubTemplateForOrg: [ + "GET /orgs/{org}/actions/oidc/customization/sub" + ], + updateOidcCustomSubTemplateForOrg: [ + "PUT /orgs/{org}/actions/oidc/customization/sub" + ] + }, + orgs: { + addSecurityManagerTeam: [ + "PUT /orgs/{org}/security-managers/teams/{team_slug}", + {}, + { + deprecated: "octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team" + } + ], + assignTeamToOrgRole: [ + "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" + ], + assignUserToOrgRole: [ + "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}" + ], + blockUser: ["PUT /orgs/{org}/blocks/{username}"], + cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], + checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], + checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], + checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], + convertMemberToOutsideCollaborator: [ + "PUT /orgs/{org}/outside_collaborators/{username}" + ], + createArtifactStorageRecord: [ + "POST /orgs/{org}/artifacts/metadata/storage-record" + ], + createInvitation: ["POST /orgs/{org}/invitations"], + createIssueType: ["POST /orgs/{org}/issue-types"], + createWebhook: ["POST /orgs/{org}/hooks"], + customPropertiesForOrgsCreateOrUpdateOrganizationValues: [ + "PATCH /organizations/{org}/org-properties/values" + ], + customPropertiesForOrgsGetOrganizationValues: [ + "GET /organizations/{org}/org-properties/values" + ], + customPropertiesForReposCreateOrUpdateOrganizationDefinition: [ + "PUT /orgs/{org}/properties/schema/{custom_property_name}" + ], + customPropertiesForReposCreateOrUpdateOrganizationDefinitions: [ + "PATCH /orgs/{org}/properties/schema" + ], + customPropertiesForReposCreateOrUpdateOrganizationValues: [ + "PATCH /orgs/{org}/properties/values" + ], + customPropertiesForReposDeleteOrganizationDefinition: [ + "DELETE /orgs/{org}/properties/schema/{custom_property_name}" + ], + customPropertiesForReposGetOrganizationDefinition: [ + "GET /orgs/{org}/properties/schema/{custom_property_name}" + ], + customPropertiesForReposGetOrganizationDefinitions: [ + "GET /orgs/{org}/properties/schema" + ], + customPropertiesForReposGetOrganizationValues: [ + "GET /orgs/{org}/properties/values" + ], + delete: ["DELETE /orgs/{org}"], + deleteAttestationsBulk: ["POST /orgs/{org}/attestations/delete-request"], + deleteAttestationsById: [ + "DELETE /orgs/{org}/attestations/{attestation_id}" + ], + deleteAttestationsBySubjectDigest: [ + "DELETE /orgs/{org}/attestations/digest/{subject_digest}" + ], + deleteIssueType: ["DELETE /orgs/{org}/issue-types/{issue_type_id}"], + deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + disableSelectedRepositoryImmutableReleasesOrganization: [ + "DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}" + ], + enableSelectedRepositoryImmutableReleasesOrganization: [ + "PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}" + ], + get: ["GET /orgs/{org}"], + getImmutableReleasesSettings: [ + "GET /orgs/{org}/settings/immutable-releases" + ], + getImmutableReleasesSettingsRepositories: [ + "GET /orgs/{org}/settings/immutable-releases/repositories" + ], + getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], + getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], + getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"], + getOrgRulesetHistory: ["GET /orgs/{org}/rulesets/{ruleset_id}/history"], + getOrgRulesetVersion: [ + "GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}" + ], + getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], + getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], + getWebhookDelivery: [ + "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + list: ["GET /organizations"], + listAppInstallations: ["GET /orgs/{org}/installations"], + listArtifactStorageRecords: [ + "GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records" + ], + listAttestationRepositories: ["GET /orgs/{org}/attestations/repositories"], + listAttestations: ["GET /orgs/{org}/attestations/{subject_digest}"], + listAttestationsBulk: [ + "POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}" + ], + listBlockedUsers: ["GET /orgs/{org}/blocks"], + listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], + listForAuthenticatedUser: ["GET /user/orgs"], + listForUser: ["GET /users/{username}/orgs"], + listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], + listIssueTypes: ["GET /orgs/{org}/issue-types"], + listMembers: ["GET /orgs/{org}/members"], + listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], + listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"], + listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"], + listOrgRoles: ["GET /orgs/{org}/organization-roles"], + listOrganizationFineGrainedPermissions: [ + "GET /orgs/{org}/organization-fine-grained-permissions" + ], + listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPatGrantRepositories: [ + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories" + ], + listPatGrantRequestRepositories: [ + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories" + ], + listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], + listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], + listPendingInvitations: ["GET /orgs/{org}/invitations"], + listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: [ + "GET /orgs/{org}/security-managers", + {}, + { + deprecated: "octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams" + } + ], + listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /orgs/{org}/hooks"], + pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeMember: ["DELETE /orgs/{org}/members/{username}"], + removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], + removeOutsideCollaborator: [ + "DELETE /orgs/{org}/outside_collaborators/{username}" + ], + removePublicMembershipForAuthenticatedUser: [ + "DELETE /orgs/{org}/public_members/{username}" + ], + removeSecurityManagerTeam: [ + "DELETE /orgs/{org}/security-managers/teams/{team_slug}", + {}, + { + deprecated: "octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team" + } + ], + reviewPatGrantRequest: [ + "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}" + ], + reviewPatGrantRequestsInBulk: [ + "POST /orgs/{org}/personal-access-token-requests" + ], + revokeAllOrgRolesTeam: [ + "DELETE /orgs/{org}/organization-roles/teams/{team_slug}" + ], + revokeAllOrgRolesUser: [ + "DELETE /orgs/{org}/organization-roles/users/{username}" + ], + revokeOrgRoleTeam: [ + "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}" + ], + revokeOrgRoleUser: [ + "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}" + ], + setImmutableReleasesSettings: [ + "PUT /orgs/{org}/settings/immutable-releases" + ], + setImmutableReleasesSettingsRepositories: [ + "PUT /orgs/{org}/settings/immutable-releases/repositories" + ], + setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], + setPublicMembershipForAuthenticatedUser: [ + "PUT /orgs/{org}/public_members/{username}" + ], + unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], + update: ["PATCH /orgs/{org}"], + updateIssueType: ["PUT /orgs/{org}/issue-types/{issue_type_id}"], + updateMembershipForAuthenticatedUser: [ + "PATCH /user/memberships/orgs/{org}" + ], + updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], + updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], + updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], + updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] + }, + packages: { + deletePackageForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}" + ], + deletePackageForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}" + ], + deletePackageForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}" + ], + deletePackageVersionForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getAllPackageVersionsForAPackageOwnedByAnOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + {}, + { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] } + ], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions", + {}, + { + renamed: [ + "packages", + "getAllPackageVersionsForPackageOwnedByAuthenticatedUser" + ] + } + ], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions" + ], + getPackageForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}" + ], + getPackageForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}" + ], + getPackageForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}" + ], + getPackageVersionForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + listDockerMigrationConflictingPackagesForAuthenticatedUser: [ + "GET /user/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForOrganization: [ + "GET /orgs/{org}/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForUser: [ + "GET /users/{username}/docker/conflicts" + ], + listPackagesForAuthenticatedUser: ["GET /user/packages"], + listPackagesForOrganization: ["GET /orgs/{org}/packages"], + listPackagesForUser: ["GET /users/{username}/packages"], + restorePackageForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageVersionForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ] + }, + privateRegistries: { + createOrgPrivateRegistry: ["POST /orgs/{org}/private-registries"], + deleteOrgPrivateRegistry: [ + "DELETE /orgs/{org}/private-registries/{secret_name}" + ], + getOrgPrivateRegistry: ["GET /orgs/{org}/private-registries/{secret_name}"], + getOrgPublicKey: ["GET /orgs/{org}/private-registries/public-key"], + listOrgPrivateRegistries: ["GET /orgs/{org}/private-registries"], + updateOrgPrivateRegistry: [ + "PATCH /orgs/{org}/private-registries/{secret_name}" + ] + }, + projects: { + addItemForOrg: ["POST /orgs/{org}/projectsV2/{project_number}/items"], + addItemForUser: [ + "POST /users/{username}/projectsV2/{project_number}/items" + ], + deleteItemForOrg: [ + "DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}" + ], + deleteItemForUser: [ + "DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}" + ], + getFieldForOrg: [ + "GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}" + ], + getFieldForUser: [ + "GET /users/{username}/projectsV2/{project_number}/fields/{field_id}" + ], + getForOrg: ["GET /orgs/{org}/projectsV2/{project_number}"], + getForUser: ["GET /users/{username}/projectsV2/{project_number}"], + getOrgItem: ["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"], + getUserItem: [ + "GET /users/{username}/projectsV2/{project_number}/items/{item_id}" + ], + listFieldsForOrg: ["GET /orgs/{org}/projectsV2/{project_number}/fields"], + listFieldsForUser: [ + "GET /users/{username}/projectsV2/{project_number}/fields" + ], + listForOrg: ["GET /orgs/{org}/projectsV2"], + listForUser: ["GET /users/{username}/projectsV2"], + listItemsForOrg: ["GET /orgs/{org}/projectsV2/{project_number}/items"], + listItemsForUser: [ + "GET /users/{username}/projectsV2/{project_number}/items" + ], + updateItemForOrg: [ + "PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}" + ], + updateItemForUser: [ + "PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}" + ] + }, + pulls: { + checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + create: ["POST /repos/{owner}/{repo}/pulls"], + createReplyForReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies" + ], + createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + createReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + deletePendingReview: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + deleteReviewComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ], + dismissReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals" + ], + get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], + getReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + list: ["GET /repos/{owner}/{repo}/pulls"], + listCommentsForReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments" + ], + listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], + listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], + listRequestedReviewers: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + listReviewComments: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], + listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + removeRequestedReviewers: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + requestReviewers: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + submitReview: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events" + ], + update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], + updateBranch: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch" + ], + updateReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + updateReviewComment: [ + "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ] + }, + rateLimit: { get: ["GET /rate_limit"] }, + reactions: { + createForCommitComment: [ + "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + createForIssue: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions" + ], + createForIssueComment: [ + "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + createForPullRequestReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + createForRelease: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + createForTeamDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + createForTeamDiscussionInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ], + deleteForCommitComment: [ + "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForIssue: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" + ], + deleteForIssueComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForPullRequestComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForRelease: [ + "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}" + ], + deleteForTeamDiscussion: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}" + ], + deleteForTeamDiscussionComment: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}" + ], + listForCommitComment: [ + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + listForIssueComment: [ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + listForPullRequestReviewComment: [ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + listForRelease: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + listForTeamDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + listForTeamDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ] + }, + repos: { + acceptInvitation: [ + "PATCH /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] } + ], + acceptInvitationForAuthenticatedUser: [ + "PATCH /user/repository_invitations/{invitation_id}" + ], + addAppAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], + addStatusCheckContexts: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + addTeamAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + addUserAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + cancelPagesDeployment: [ + "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel" + ], + checkAutomatedSecurityFixes: [ + "GET /repos/{owner}/{repo}/automated-security-fixes" + ], + checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], + checkImmutableReleases: ["GET /repos/{owner}/{repo}/immutable-releases"], + checkPrivateVulnerabilityReporting: [ + "GET /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + checkVulnerabilityAlerts: [ + "GET /repos/{owner}/{repo}/vulnerability-alerts" + ], + codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], + compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], + compareCommitsWithBasehead: [ + "GET /repos/{owner}/{repo}/compare/{basehead}" + ], + createAttestation: ["POST /repos/{owner}/{repo}/attestations"], + createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], + createCommitComment: [ + "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + createCommitSignatureProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], + createDeployKey: ["POST /repos/{owner}/{repo}/keys"], + createDeployment: ["POST /repos/{owner}/{repo}/deployments"], + createDeploymentBranchPolicy: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + createDeploymentProtectionRule: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + createDeploymentStatus: [ + "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], + createForAuthenticatedUser: ["POST /user/repos"], + createFork: ["POST /repos/{owner}/{repo}/forks"], + createInOrg: ["POST /orgs/{org}/repos"], + createOrUpdateEnvironment: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}" + ], + createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createOrgRuleset: ["POST /orgs/{org}/rulesets"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"], + createPagesSite: ["POST /repos/{owner}/{repo}/pages"], + createRelease: ["POST /repos/{owner}/{repo}/releases"], + createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], + createUsingTemplate: [ + "POST /repos/{template_owner}/{template_repo}/generate" + ], + createWebhook: ["POST /repos/{owner}/{repo}/hooks"], + customPropertiesForReposCreateOrUpdateRepositoryValues: [ + "PATCH /repos/{owner}/{repo}/properties/values" + ], + customPropertiesForReposGetRepositoryValues: [ + "GET /repos/{owner}/{repo}/properties/values" + ], + declineInvitation: [ + "DELETE /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "declineInvitationForAuthenticatedUser"] } + ], + declineInvitationForAuthenticatedUser: [ + "DELETE /user/repository_invitations/{invitation_id}" + ], + delete: ["DELETE /repos/{owner}/{repo}"], + deleteAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + deleteAdminBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + deleteAnEnvironment: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}" + ], + deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], + deleteBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection" + ], + deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], + deleteCommitSignatureProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], + deleteDeployment: [ + "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}" + ], + deleteDeploymentBranchPolicy: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], + deleteInvitation: [ + "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], + deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], + deletePullRequestReviewProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], + deleteReleaseAsset: [ + "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], + disableAutomatedSecurityFixes: [ + "DELETE /repos/{owner}/{repo}/automated-security-fixes" + ], + disableDeploymentProtectionRule: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + disableImmutableReleases: [ + "DELETE /repos/{owner}/{repo}/immutable-releases" + ], + disablePrivateVulnerabilityReporting: [ + "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + disableVulnerabilityAlerts: [ + "DELETE /repos/{owner}/{repo}/vulnerability-alerts" + ], + downloadArchive: [ + "GET /repos/{owner}/{repo}/zipball/{ref}", + {}, + { renamed: ["repos", "downloadZipballArchive"] } + ], + downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], + downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], + enableAutomatedSecurityFixes: [ + "PUT /repos/{owner}/{repo}/automated-security-fixes" + ], + enableImmutableReleases: ["PUT /repos/{owner}/{repo}/immutable-releases"], + enablePrivateVulnerabilityReporting: [ + "PUT /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + enableVulnerabilityAlerts: [ + "PUT /repos/{owner}/{repo}/vulnerability-alerts" + ], + generateReleaseNotes: [ + "POST /repos/{owner}/{repo}/releases/generate-notes" + ], + get: ["GET /repos/{owner}/{repo}"], + getAccessRestrictions: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + getAdminBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + getAllDeploymentProtectionRules: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], + getAllStatusCheckContexts: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts" + ], + getAllTopics: ["GET /repos/{owner}/{repo}/topics"], + getAppsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps" + ], + getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], + getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], + getBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection" + ], + getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], + getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], + getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], + getCollaboratorPermissionLevel: [ + "GET /repos/{owner}/{repo}/collaborators/{username}/permission" + ], + getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], + getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], + getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], + getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], + getCommitSignatureProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], + getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], + getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getCustomDeploymentProtectionRule: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], + getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], + getDeploymentBranchPolicy: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + getDeploymentStatus: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}" + ], + getEnvironment: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}" + ], + getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], + getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], + getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], + getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], + getOrgRulesets: ["GET /orgs/{org}/rulesets"], + getPages: ["GET /repos/{owner}/{repo}/pages"], + getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], + getPagesDeployment: [ + "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}" + ], + getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], + getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], + getPullRequestReviewProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], + getReadme: ["GET /repos/{owner}/{repo}/readme"], + getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], + getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], + getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], + getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], + getRepoRuleSuite: [ + "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}" + ], + getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], + getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + getRepoRulesetHistory: [ + "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history" + ], + getRepoRulesetVersion: [ + "GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}" + ], + getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], + getStatusChecksProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + getTeamsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams" + ], + getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], + getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], + getUsersWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users" + ], + getViews: ["GET /repos/{owner}/{repo}/traffic/views"], + getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], + getWebhookConfigForRepo: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + getWebhookDelivery: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + listActivities: ["GET /repos/{owner}/{repo}/activity"], + listAttestations: [ + "GET /repos/{owner}/{repo}/attestations/{subject_digest}" + ], + listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], + listBranches: ["GET /repos/{owner}/{repo}/branches"], + listBranchesForHeadCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head" + ], + listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], + listCommentsForCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], + listCommitStatusesForRef: [ + "GET /repos/{owner}/{repo}/commits/{ref}/statuses" + ], + listCommits: ["GET /repos/{owner}/{repo}/commits"], + listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listCustomDeploymentRuleIntegrations: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps" + ], + listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], + listDeploymentBranchPolicies: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + listDeploymentStatuses: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + listDeployments: ["GET /repos/{owner}/{repo}/deployments"], + listForAuthenticatedUser: ["GET /user/repos"], + listForOrg: ["GET /orgs/{org}/repos"], + listForUser: ["GET /users/{username}/repos"], + listForks: ["GET /repos/{owner}/{repo}/forks"], + listInvitations: ["GET /repos/{owner}/{repo}/invitations"], + listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], + listLanguages: ["GET /repos/{owner}/{repo}/languages"], + listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], + listPublic: ["GET /repositories"], + listPullRequestsAssociatedWithCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls" + ], + listReleaseAssets: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/assets" + ], + listReleases: ["GET /repos/{owner}/{repo}/releases"], + listTags: ["GET /repos/{owner}/{repo}/tags"], + listTeams: ["GET /repos/{owner}/{repo}/teams"], + listWebhookDeliveries: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries" + ], + listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], + merge: ["POST /repos/{owner}/{repo}/merges"], + mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], + pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeAppAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + removeCollaborator: [ + "DELETE /repos/{owner}/{repo}/collaborators/{username}" + ], + removeStatusCheckContexts: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + removeStatusCheckProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + removeTeamAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + removeUserAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], + replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], + requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], + setAdminBranchProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + setAppAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + setStatusCheckContexts: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + setTeamAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + setUserAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], + transfer: ["POST /repos/{owner}/{repo}/transfer"], + update: ["PATCH /repos/{owner}/{repo}"], + updateBranchProtection: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection" + ], + updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], + updateInvitation: [ + "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], + updatePullRequestReviewProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], + updateReleaseAsset: [ + "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + updateStatusCheckPotection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", + {}, + { renamed: ["repos", "updateStatusCheckProtection"] } + ], + updateStatusCheckProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], + updateWebhookConfigForRepo: [ + "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + uploadReleaseAsset: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", + { baseUrl: "https://uploads.github.com" } + ] + }, + search: { + code: ["GET /search/code"], + commits: ["GET /search/commits"], + issuesAndPullRequests: ["GET /search/issues"], + labels: ["GET /search/labels"], + repos: ["GET /search/repositories"], + topics: ["GET /search/topics"], + users: ["GET /search/users"] + }, + secretScanning: { + createPushProtectionBypass: [ + "POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses" + ], + getAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ], + getScanHistory: ["GET /repos/{owner}/{repo}/secret-scanning/scan-history"], + listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], + listLocationsForAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations" + ], + listOrgPatternConfigs: [ + "GET /orgs/{org}/secret-scanning/pattern-configurations" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ], + updateOrgPatternConfigs: [ + "PATCH /orgs/{org}/secret-scanning/pattern-configurations" + ] + }, + securityAdvisories: { + createFork: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks" + ], + createPrivateVulnerabilityReport: [ + "POST /repos/{owner}/{repo}/security-advisories/reports" + ], + createRepositoryAdvisory: [ + "POST /repos/{owner}/{repo}/security-advisories" + ], + createRepositoryAdvisoryCveRequest: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" + ], + getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], + getRepositoryAdvisory: [ + "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ], + listGlobalAdvisories: ["GET /advisories"], + listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], + listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], + updateRepositoryAdvisory: [ + "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ] + }, + teams: { + addOrUpdateMembershipForUserInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + addOrUpdateRepoPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + checkPermissionsForRepoInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + deleteDiscussionInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + getDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + getMembershipForUserInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/invitations" + ], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + removeRepoInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + updateDiscussionCommentInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + updateDiscussionInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: [ + "POST /user/emails", + {}, + { renamed: ["users", "addEmailForAuthenticatedUser"] } + ], + addEmailForAuthenticatedUser: ["POST /user/emails"], + addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: [ + "POST /user/gpg_keys", + {}, + { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } + ], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: [ + "POST /user/keys", + {}, + { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } + ], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteAttestationsBulk: [ + "POST /users/{username}/attestations/delete-request" + ], + deleteAttestationsById: [ + "DELETE /users/{username}/attestations/{attestation_id}" + ], + deleteAttestationsBySubjectDigest: [ + "DELETE /users/{username}/attestations/digest/{subject_digest}" + ], + deleteEmailForAuthenticated: [ + "DELETE /user/emails", + {}, + { renamed: ["users", "deleteEmailForAuthenticatedUser"] } + ], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: [ + "DELETE /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } + ], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: [ + "DELETE /user/keys/{key_id}", + {}, + { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } + ], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], + deleteSshSigningKeyForAuthenticatedUser: [ + "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getById: ["GET /user/{account_id}"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: [ + "GET /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } + ], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: [ + "GET /user/keys/{key_id}", + {}, + { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } + ], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: [ + "GET /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + list: ["GET /users"], + listAttestations: ["GET /users/{username}/attestations/{subject_digest}"], + listAttestationsBulk: [ + "POST /users/{username}/attestations/bulk-list{?per_page,before,after}" + ], + listBlockedByAuthenticated: [ + "GET /user/blocks", + {}, + { renamed: ["users", "listBlockedByAuthenticatedUser"] } + ], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: [ + "GET /user/emails", + {}, + { renamed: ["users", "listEmailsForAuthenticatedUser"] } + ], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: [ + "GET /user/following", + {}, + { renamed: ["users", "listFollowedByAuthenticatedUser"] } + ], + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: [ + "GET /user/gpg_keys", + {}, + { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } + ], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: [ + "GET /user/public_emails", + {}, + { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } + ], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: [ + "GET /user/keys", + {}, + { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } + ], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: [ + "PATCH /user/email/visibility", + {}, + { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } + ], + setPrimaryEmailVisibilityForAuthenticatedUser: [ + "PATCH /user/email/visibility" + ], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; +var endpoints_default = Endpoints; + +// +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint2] of Object.entries(endpoints)) { + const [route, defaults3, decorations] = endpoint2; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults3 + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); + } +} +var handler = { + has({ scope }, methodName) { + return endpointMethodsMap.get(scope).has(methodName); + }, + getOwnPropertyDescriptor(target, methodName) { + return { + value: this.get(target, methodName), + // ensures method is in the cache + configurable: true, + writable: true, + enumerable: true + }; + }, + defineProperty(target, methodName, descriptor) { + Object.defineProperty(target.cache, methodName, descriptor); + return true; + }, + deleteProperty(target, methodName) { + delete target.cache[methodName]; + return true; + }, + ownKeys({ scope }) { + return [...endpointMethodsMap.get(scope).keys()]; + }, + set(target, methodName, value) { + return target.cache[methodName] = value; + }, + get({ octokit, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; + } + const method = endpointMethodsMap.get(scope).get(methodName); + if (!method) { + return void 0; + } + const { endpointDefaults, decorations } = method; + if (decorations) { + cache[methodName] = decorate( + octokit, + scope, + methodName, + endpointDefaults, + decorations + ); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); + } + return cache[methodName]; + } +}; +function endpointsToMethods(octokit) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults3, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults3); + function withDecorations(...args) { + let options = requestWithDefaults.endpoint.merge(...args); + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: void 0 + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn( + `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` + ); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries( + decorations.renamedParameters + )) { + if (name in options2) { + octokit.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} + +// +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION7; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION7; + +// +var VERSION8 = "22.0.1"; + +// +var Octokit2 = Octokit.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults( + { + userAgent: `octokit-rest.js/${VERSION8}` + } +); + +// +function requestToOAuthBaseUrl(request2) { + const endpointDefaults = request2.endpoint.DEFAULTS; + return /^https:\/\/(api\.)?github\.com$/.test(endpointDefaults.baseUrl) ? "https://github.com" : endpointDefaults.baseUrl.replace("/api/v3", ""); +} +async function oauthRequest(request2, route, parameters) { + const withOAuthParameters = { + baseUrl: requestToOAuthBaseUrl(request2), + headers: { + accept: "application/json" + }, + ...parameters + }; + const response = await request2(route, withOAuthParameters); + if ("error" in response.data) { + const error2 = new RequestError( + `${response.data.error_description} (${response.data.error}, ${response.data.error_uri})`, + 400, + { + request: request2.endpoint.merge( + route, + withOAuthParameters + ) + } + ); + error2.response = response; + throw error2; + } + return response; +} +async function exchangeWebFlowCode(options) { + const request2 = options.request || request; + const response = await oauthRequest( + request2, + "POST /login/oauth/access_token", + { + client_id: options.clientId, + client_secret: options.clientSecret, + code: options.code, + redirect_uri: options.redirectUrl + } + ); + const authentication = { + clientType: options.clientType, + clientId: options.clientId, + clientSecret: options.clientSecret, + token: response.data.access_token, + scopes: response.data.scope.split(/\s+/).filter(Boolean) + }; + if (options.clientType === "github-app") { + if ("refresh_token" in response.data) { + const apiTimeInMs = new Date(response.headers.date).getTime(); + authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp( + apiTimeInMs, + response.data.expires_in + ), authentication.refreshTokenExpiresAt = toTimestamp( + apiTimeInMs, + response.data.refresh_token_expires_in + ); + } + delete authentication.scopes; + } + return { ...response, authentication }; +} +function toTimestamp(apiTimeInMs, expirationInSeconds) { + return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString(); +} +async function createDeviceCode(options) { + const request2 = options.request || request; + const parameters = { + client_id: options.clientId + }; + if ("scopes" in options && Array.isArray(options.scopes)) { + parameters.scope = options.scopes.join(" "); + } + return oauthRequest(request2, "POST /login/device/code", parameters); +} +async function exchangeDeviceCode(options) { + const request2 = options.request || request; + const response = await oauthRequest( + request2, + "POST /login/oauth/access_token", + { + client_id: options.clientId, + device_code: options.code, + grant_type: "urn:ietf:params:oauth:grant-type:device_code" + } + ); + const authentication = { + clientType: options.clientType, + clientId: options.clientId, + token: response.data.access_token, + scopes: response.data.scope.split(/\s+/).filter(Boolean) + }; + if ("clientSecret" in options) { + authentication.clientSecret = options.clientSecret; + } + if (options.clientType === "github-app") { + if ("refresh_token" in response.data) { + const apiTimeInMs = new Date(response.headers.date).getTime(); + authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp2( + apiTimeInMs, + response.data.expires_in + ), authentication.refreshTokenExpiresAt = toTimestamp2( + apiTimeInMs, + response.data.refresh_token_expires_in + ); + } + delete authentication.scopes; + } + return { ...response, authentication }; +} +function toTimestamp2(apiTimeInMs, expirationInSeconds) { + return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString(); +} +async function checkToken(options) { + const request2 = options.request || request; + const response = await request2("POST /applications/{client_id}/token", { + headers: { + authorization: `basic ${btoa( + `${options.clientId}:${options.clientSecret}` + )}` + }, + client_id: options.clientId, + access_token: options.token + }); + const authentication = { + clientType: options.clientType, + clientId: options.clientId, + clientSecret: options.clientSecret, + token: options.token, + scopes: response.data.scopes + }; + if (response.data.expires_at) + authentication.expiresAt = response.data.expires_at; + if (options.clientType === "github-app") { + delete authentication.scopes; + } + return { ...response, authentication }; +} +async function refreshToken(options) { + const request2 = options.request || request; + const response = await oauthRequest( + request2, + "POST /login/oauth/access_token", + { + client_id: options.clientId, + client_secret: options.clientSecret, + grant_type: "refresh_token", + refresh_token: options.refreshToken + } + ); + const apiTimeInMs = new Date(response.headers.date).getTime(); + const authentication = { + clientType: "github-app", + clientId: options.clientId, + clientSecret: options.clientSecret, + token: response.data.access_token, + refreshToken: response.data.refresh_token, + expiresAt: toTimestamp3(apiTimeInMs, response.data.expires_in), + refreshTokenExpiresAt: toTimestamp3( + apiTimeInMs, + response.data.refresh_token_expires_in + ) + }; + return { ...response, authentication }; +} +function toTimestamp3(apiTimeInMs, expirationInSeconds) { + return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString(); +} +async function resetToken(options) { + const request2 = options.request || request; + const auth6 = btoa(`${options.clientId}:${options.clientSecret}`); + const response = await request2( + "PATCH /applications/{client_id}/token", + { + headers: { + authorization: `basic ${auth6}` + }, + client_id: options.clientId, + access_token: options.token + } + ); + const authentication = { + clientType: options.clientType, + clientId: options.clientId, + clientSecret: options.clientSecret, + token: response.data.token, + scopes: response.data.scopes + }; + if (response.data.expires_at) + authentication.expiresAt = response.data.expires_at; + if (options.clientType === "github-app") { + delete authentication.scopes; + } + return { ...response, authentication }; +} +async function deleteToken(options) { + const request2 = options.request || request; + const auth6 = btoa(`${options.clientId}:${options.clientSecret}`); + return request2( + "DELETE /applications/{client_id}/token", + { + headers: { + authorization: `basic ${auth6}` + }, + client_id: options.clientId, + access_token: options.token + } + ); +} +async function deleteAuthorization(options) { + const request2 = options.request || request; + const auth6 = btoa(`${options.clientId}:${options.clientSecret}`); + return request2( + "DELETE /applications/{client_id}/grant", + { + headers: { + authorization: `basic ${auth6}` + }, + client_id: options.clientId, + access_token: options.token + } + ); +} + +// +async function getOAuthAccessToken(state, options) { + const cachedAuthentication = getCachedAuthentication(state, options.auth); + if (cachedAuthentication) + return cachedAuthentication; + const { data: verification } = await createDeviceCode({ + clientType: state.clientType, + clientId: state.clientId, + request: options.request || state.request, + // @ts-expect-error the extra code to make TS happy is not worth it + scopes: options.auth.scopes || state.scopes + }); + await state.onVerification(verification); + const authentication = await waitForAccessToken( + options.request || state.request, + state.clientId, + state.clientType, + verification + ); + state.authentication = authentication; + return authentication; +} +function getCachedAuthentication(state, auth22) { + if (auth22.refresh === true) + return false; + if (!state.authentication) + return false; + if (state.clientType === "github-app") { + return state.authentication; + } + const authentication = state.authentication; + const newScope = ("scopes" in auth22 && auth22.scopes || state.scopes).join( + " " + ); + const currentScope = authentication.scopes.join(" "); + return newScope === currentScope ? authentication : false; +} +async function wait(seconds) { + await new Promise((resolve5) => setTimeout(resolve5, seconds * 1e3)); +} +async function waitForAccessToken(request2, clientId, clientType, verification) { + try { + const options = { + clientId, + request: request2, + code: verification.device_code + }; + const { authentication } = clientType === "oauth-app" ? await exchangeDeviceCode({ + ...options, + clientType: "oauth-app" + }) : await exchangeDeviceCode({ + ...options, + clientType: "github-app" + }); + return { + type: "token", + tokenType: "oauth", + ...authentication + }; + } catch (error2) { + if (!error2.response) + throw error2; + const errorType = error2.response.data.error; + if (errorType === "authorization_pending") { + await wait(verification.interval); + return waitForAccessToken(request2, clientId, clientType, verification); + } + if (errorType === "slow_down") { + await wait(verification.interval + 7); + return waitForAccessToken(request2, clientId, clientType, verification); + } + throw error2; + } +} +async function auth2(state, authOptions) { + return getOAuthAccessToken(state, { + auth: authOptions + }); +} +async function hook2(state, request2, route, parameters) { + let endpoint2 = request2.endpoint.merge( + route, + parameters + ); + if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) { + return request2(endpoint2); + } + const { token } = await getOAuthAccessToken(state, { + request: request2, + auth: { type: "oauth" } + }); + endpoint2.headers.authorization = `token ${token}`; + return request2(endpoint2); +} +var VERSION9 = "0.0.0-development"; +function createOAuthDeviceAuth(options) { + const requestWithDefaults = options.request || request.defaults({ + headers: { + "user-agent": `octokit-auth-oauth-device.js/${VERSION9} ${getUserAgent()}` + } + }); + const { request: request2 = requestWithDefaults, ...otherOptions } = options; + const state = options.clientType === "github-app" ? { + ...otherOptions, + clientType: "github-app", + request: request2 + } : { + ...otherOptions, + clientType: "oauth-app", + request: request2, + scopes: options.scopes || [] + }; + if (!options.clientId) { + throw new Error( + '[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)' + ); + } + if (!options.onVerification) { + throw new Error( + '[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)' + ); + } + return Object.assign(auth2.bind(null, state), { + hook: hook2.bind(null, state) + }); +} + +// +var VERSION10 = "0.0.0-development"; +async function getAuthentication(state) { + if ("code" in state.strategyOptions) { + const { authentication } = await exchangeWebFlowCode({ + clientId: state.clientId, + clientSecret: state.clientSecret, + clientType: state.clientType, + onTokenCreated: state.onTokenCreated, + ...state.strategyOptions, + request: state.request + }); + return { + type: "token", + tokenType: "oauth", + ...authentication + }; + } + if ("onVerification" in state.strategyOptions) { + const deviceAuth = createOAuthDeviceAuth({ + clientType: state.clientType, + clientId: state.clientId, + onTokenCreated: state.onTokenCreated, + ...state.strategyOptions, + request: state.request + }); + const authentication = await deviceAuth({ + type: "oauth" + }); + return { + clientSecret: state.clientSecret, + ...authentication + }; + } + if ("token" in state.strategyOptions) { + return { + type: "token", + tokenType: "oauth", + clientId: state.clientId, + clientSecret: state.clientSecret, + clientType: state.clientType, + onTokenCreated: state.onTokenCreated, + ...state.strategyOptions + }; + } + throw new Error("[@octokit/auth-oauth-user] Invalid strategy options"); +} +async function auth3(state, options = {}) { + if (!state.authentication) { + state.authentication = state.clientType === "oauth-app" ? await getAuthentication(state) : await getAuthentication(state); + } + if (state.authentication.invalid) { + throw new Error("[@octokit/auth-oauth-user] Token is invalid"); + } + const currentAuthentication = state.authentication; + if ("expiresAt" in currentAuthentication) { + if (options.type === "refresh" || new Date(currentAuthentication.expiresAt) < /* @__PURE__ */ new Date()) { + const { authentication } = await refreshToken({ + clientType: "github-app", + clientId: state.clientId, + clientSecret: state.clientSecret, + refreshToken: currentAuthentication.refreshToken, + request: state.request + }); + state.authentication = { + tokenType: "oauth", + type: "token", + ...authentication + }; + } + } + if (options.type === "refresh") { + if (state.clientType === "oauth-app") { + throw new Error( + "[@octokit/auth-oauth-user] OAuth Apps do not support expiring tokens" + ); + } + if (!currentAuthentication.hasOwnProperty("expiresAt")) { + throw new Error("[@octokit/auth-oauth-user] Refresh token missing"); + } + await state.onTokenCreated?.(state.authentication, { + type: options.type + }); + } + if (options.type === "check" || options.type === "reset") { + const method = options.type === "check" ? checkToken : resetToken; + try { + const { authentication } = await method({ + // @ts-expect-error making TS happy would require unnecessary code so no + clientType: state.clientType, + clientId: state.clientId, + clientSecret: state.clientSecret, + token: state.authentication.token, + request: state.request + }); + state.authentication = { + tokenType: "oauth", + type: "token", + // @ts-expect-error TBD + ...authentication + }; + if (options.type === "reset") { + await state.onTokenCreated?.(state.authentication, { + type: options.type + }); + } + return state.authentication; + } catch (error2) { + if (error2.status === 404) { + error2.message = "[@octokit/auth-oauth-user] Token is invalid"; + state.authentication.invalid = true; + } + throw error2; + } + } + if (options.type === "delete" || options.type === "deleteAuthorization") { + const method = options.type === "delete" ? deleteToken : deleteAuthorization; + try { + await method({ + // @ts-expect-error making TS happy would require unnecessary code so no + clientType: state.clientType, + clientId: state.clientId, + clientSecret: state.clientSecret, + token: state.authentication.token, + request: state.request + }); + } catch (error2) { + if (error2.status !== 404) + throw error2; + } + state.authentication.invalid = true; + return state.authentication; + } + return state.authentication; +} +var ROUTES_REQUIRING_BASIC_AUTH = /\/applications\/[^/]+\/(token|grant)s?/; +function requiresBasicAuth(url) { + return url && ROUTES_REQUIRING_BASIC_AUTH.test(url); +} +async function hook3(state, request2, route, parameters = {}) { + const endpoint2 = request2.endpoint.merge( + route, + parameters + ); + if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) { + return request2(endpoint2); + } + if (requiresBasicAuth(endpoint2.url)) { + const credentials = btoa(`${state.clientId}:${state.clientSecret}`); + endpoint2.headers.authorization = `basic ${credentials}`; + return request2(endpoint2); + } + const { token } = state.clientType === "oauth-app" ? await auth3({ ...state, request: request2 }) : await auth3({ ...state, request: request2 }); + endpoint2.headers.authorization = "token " + token; + return request2(endpoint2); +} +function createOAuthUserAuth({ + clientId, + clientSecret, + clientType = "oauth-app", + request: request2 = request.defaults({ + headers: { + "user-agent": `octokit-auth-oauth-app.js/${VERSION10} ${getUserAgent()}` + } + }), + onTokenCreated, + ...strategyOptions +}) { + const state = Object.assign({ + clientType, + clientId, + clientSecret, + onTokenCreated, + strategyOptions, + request: request2 + }); + return Object.assign(auth3.bind(null, state), { + // @ts-expect-error not worth the extra code needed to appease TS + hook: hook3.bind(null, state) + }); +} +createOAuthUserAuth.VERSION = VERSION10; + +// +async function auth4(state, authOptions) { + if (authOptions.type === "oauth-app") { + return { + type: "oauth-app", + clientId: state.clientId, + clientSecret: state.clientSecret, + clientType: state.clientType, + headers: { + authorization: `basic ${btoa( + `${state.clientId}:${state.clientSecret}` + )}` + } + }; + } + if ("factory" in authOptions) { + const { type, ...options } = { + ...authOptions, + ...state + }; + return authOptions.factory(options); + } + const common2 = { + clientId: state.clientId, + clientSecret: state.clientSecret, + request: state.request, + ...authOptions + }; + const userAuth = state.clientType === "oauth-app" ? await createOAuthUserAuth({ + ...common2, + clientType: state.clientType + }) : await createOAuthUserAuth({ + ...common2, + clientType: state.clientType + }); + return userAuth(); +} +async function hook4(state, request2, route, parameters) { + let endpoint2 = request2.endpoint.merge( + route, + parameters + ); + if (/\/login\/(oauth\/access_token|device\/code)$/.test(endpoint2.url)) { + return request2(endpoint2); + } + if (state.clientType === "github-app" && !requiresBasicAuth(endpoint2.url)) { + throw new Error( + `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than "/applications/{client_id}/**". "${endpoint2.method} ${endpoint2.url}" is not supported.` + ); + } + const credentials = btoa(`${state.clientId}:${state.clientSecret}`); + endpoint2.headers.authorization = `basic ${credentials}`; + try { + return await request2(endpoint2); + } catch (error2) { + if (error2.status !== 401) + throw error2; + error2.message = `[@octokit/auth-oauth-app] "${endpoint2.method} ${endpoint2.url}" does not support clientId/clientSecret basic authentication.`; + throw error2; + } +} +var VERSION11 = "0.0.0-development"; +function createOAuthAppAuth(options) { + const state = Object.assign( + { + request: request.defaults({ + headers: { + "user-agent": `octokit-auth-oauth-app.js/${VERSION11} ${getUserAgent()}` + } + }), + clientType: "oauth-app" + }, + options + ); + return Object.assign(auth4.bind(null, state), { + hook: hook4.bind(null, state) + }); +} + +// +function isPkcs1(privateKey) { + return privateKey.includes("-----BEGIN RSA PRIVATE KEY-----"); +} +function isOpenSsh(privateKey) { + return privateKey.includes("-----BEGIN OPENSSH PRIVATE KEY-----"); +} +function string2ArrayBuffer(str) { + const buf = new ArrayBuffer(str.length); + const bufView = new Uint8Array(buf); + for (let i = 0, strLen = str.length; i < strLen; i++) { + bufView[i] = str.charCodeAt(i); + } + return buf; +} +function getDERfromPEM(pem) { + const pemB64 = pem.trim().split("\n").slice(1, -1).join(""); + const decoded = atob(pemB64); + return string2ArrayBuffer(decoded); +} +function getEncodedMessage(header, payload) { + return `${base64encodeJSON(header)}.${base64encodeJSON(payload)}`; +} +function base64encode(buffer) { + var binary = ""; + var bytes = new Uint8Array(buffer); + var len = bytes.byteLength; + for (var i = 0; i < len; i++) { + binary += String.fromCharCode(bytes[i]); + } + return fromBase64(btoa(binary)); +} +function fromBase64(base64) { + return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); +} +function base64encodeJSON(obj) { + return fromBase64(btoa(JSON.stringify(obj))); +} + +// +import { subtle } from "node:crypto"; +import { createPrivateKey } from "node:crypto"; +function convertPrivateKey(privateKey) { + if (!isPkcs1(privateKey)) + return privateKey; + return createPrivateKey(privateKey).export({ + type: "pkcs8", + format: "pem" + }); +} + +// +async function getToken({ privateKey, payload }) { + const convertedPrivateKey = convertPrivateKey(privateKey); + if (isPkcs1(convertedPrivateKey)) { + throw new Error( + "[universal-github-app-jwt] Private Key is in PKCS#1 format, but only PKCS#8 is supported. See https://github.com/gr2m/universal-github-app-jwt#private-key-formats" + ); + } + if (isOpenSsh(convertedPrivateKey)) { + throw new Error( + "[universal-github-app-jwt] Private Key is in OpenSSH format, but only PKCS#8 is supported. See https://github.com/gr2m/universal-github-app-jwt#private-key-formats" + ); + } + const algorithm = { + name: "RSASSA-PKCS1-v1_5", + hash: { name: "SHA-256" } + }; + const header = { alg: "RS256", typ: "JWT" }; + const privateKeyDER = getDERfromPEM(convertedPrivateKey); + const importedKey = await subtle.importKey( + "pkcs8", + privateKeyDER, + algorithm, + false, + ["sign"] + ); + const encodedMessage = getEncodedMessage(header, payload); + const encodedMessageArrBuf = string2ArrayBuffer(encodedMessage); + const signatureArrBuf = await subtle.sign( + algorithm.name, + importedKey, + encodedMessageArrBuf + ); + const encodedSignature = base64encode(signatureArrBuf); + return `${encodedMessage}.${encodedSignature}`; +} + +// +async function githubAppJwt({ + id, + privateKey, + now = Math.floor(Date.now() / 1e3) +}) { + const privateKeyWithNewlines = privateKey.replace(/\\n/g, "\n"); + const nowWithSafetyMargin = now - 30; + const expiration = nowWithSafetyMargin + 60 * 10; + const payload = { + iat: nowWithSafetyMargin, + // Issued at time + exp: expiration, + iss: id + }; + const token = await getToken({ + privateKey: privateKeyWithNewlines, + payload + }); + return { + appId: id, + expiration, + token + }; +} + +// +var LruObject = class { + constructor(max = 1e3, ttlInMsecs = 0) { + if (isNaN(max) || max < 0) { + throw new Error("Invalid max value"); + } + if (isNaN(ttlInMsecs) || ttlInMsecs < 0) { + throw new Error("Invalid ttl value"); + } + this.first = null; + this.items = /* @__PURE__ */ Object.create(null); + this.last = null; + this.size = 0; + this.max = max; + this.ttl = ttlInMsecs; + } + bumpLru(item) { + if (this.last === item) { + return; + } + const last = this.last; + const next = item.next; + const prev = item.prev; + if (this.first === item) { + this.first = next; + } + item.next = null; + item.prev = last; + last.next = item; + if (prev !== null) { + prev.next = next; + } + if (next !== null) { + next.prev = prev; + } + this.last = item; + } + clear() { + this.items = /* @__PURE__ */ Object.create(null); + this.first = null; + this.last = null; + this.size = 0; + } + delete(key) { + if (Object.prototype.hasOwnProperty.call(this.items, key)) { + const item = this.items[key]; + delete this.items[key]; + this.size--; + if (item.prev !== null) { + item.prev.next = item.next; + } + if (item.next !== null) { + item.next.prev = item.prev; + } + if (this.first === item) { + this.first = item.next; + } + if (this.last === item) { + this.last = item.prev; + } + } + } + deleteMany(keys) { + for (var i = 0; i < keys.length; i++) { + this.delete(keys[i]); + } + } + evict() { + if (this.size > 0) { + const item = this.first; + delete this.items[item.key]; + if (--this.size === 0) { + this.first = null; + this.last = null; + } else { + this.first = item.next; + this.first.prev = null; + } + } + } + expiresAt(key) { + if (Object.prototype.hasOwnProperty.call(this.items, key)) { + return this.items[key].expiry; + } + } + get(key) { + if (Object.prototype.hasOwnProperty.call(this.items, key)) { + const item = this.items[key]; + if (this.ttl > 0 && item.expiry <= Date.now()) { + this.delete(key); + return; + } + this.bumpLru(item); + return item.value; + } + } + getMany(keys) { + const result = []; + for (var i = 0; i < keys.length; i++) { + result.push(this.get(keys[i])); + } + return result; + } + keys() { + return Object.keys(this.items); + } + set(key, value) { + if (Object.prototype.hasOwnProperty.call(this.items, key)) { + const item2 = this.items[key]; + item2.value = value; + item2.expiry = this.ttl > 0 ? Date.now() + this.ttl : this.ttl; + if (this.last !== item2) { + this.bumpLru(item2); + } + return; + } + if (this.max > 0 && this.size === this.max) { + this.evict(); + } + const item = { + expiry: this.ttl > 0 ? Date.now() + this.ttl : this.ttl, + key, + prev: this.last, + next: null, + value + }; + this.items[key] = item; + if (++this.size === 1) { + this.first = item; + } else { + this.last.next = item; + } + this.last = item; + } +}; + +// +async function getAppAuthentication({ + appId, + privateKey, + timeDifference, + createJwt +}) { + try { + if (createJwt) { + const { jwt, expiresAt } = await createJwt(appId, timeDifference); + return { + type: "app", + token: jwt, + appId, + expiresAt + }; + } + const authOptions = { + id: appId, + privateKey + }; + if (timeDifference) { + Object.assign(authOptions, { + now: Math.floor(Date.now() / 1e3) + timeDifference + }); + } + const appAuthentication = await githubAppJwt(authOptions); + return { + type: "app", + token: appAuthentication.token, + appId: appAuthentication.appId, + expiresAt: new Date(appAuthentication.expiration * 1e3).toISOString() + }; + } catch (error2) { + if (privateKey === "-----BEGIN RSA PRIVATE KEY-----") { + throw new Error( + "The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\n'" + ); + } else { + throw error2; + } + } +} +function getCache() { + return new LruObject( + // cache max. 15000 tokens, that will use less than 10mb memory + 15e3, + // Cache for 1 minute less than GitHub expiry + 1e3 * 60 * 59 + ); +} +async function get(cache, options) { + const cacheKey = optionsToCacheKey(options); + const result = await cache.get(cacheKey); + if (!result) { + return; + } + const [ + token, + createdAt, + expiresAt, + repositorySelection, + permissionsString, + singleFileName + ] = result.split("|"); + const permissions = options.permissions || permissionsString.split(/,/).reduce((permissions2, string) => { + if (/!$/.test(string)) { + permissions2[string.slice(0, -1)] = "write"; + } else { + permissions2[string] = "read"; + } + return permissions2; + }, {}); + return { + token, + createdAt, + expiresAt, + permissions, + repositoryIds: options.repositoryIds, + repositoryNames: options.repositoryNames, + singleFileName, + repositorySelection + }; +} +async function set(cache, options, data) { + const key = optionsToCacheKey(options); + const permissionsString = options.permissions ? "" : Object.keys(data.permissions).map( + (name) => `${name}${data.permissions[name] === "write" ? "!" : ""}` + ).join(","); + const value = [ + data.token, + data.createdAt, + data.expiresAt, + data.repositorySelection, + permissionsString, + data.singleFileName + ].join("|"); + await cache.set(key, value); +} +function optionsToCacheKey({ + installationId, + permissions = {}, + repositoryIds = [], + repositoryNames = [] +}) { + const permissionsString = Object.keys(permissions).sort().map((name) => permissions[name] === "read" ? name : `${name}!`).join(","); + const repositoryIdsString = repositoryIds.sort().join(","); + const repositoryNamesString = repositoryNames.join(","); + return [ + installationId, + repositoryIdsString, + repositoryNamesString, + permissionsString + ].filter(Boolean).join("|"); +} +function toTokenAuthentication({ + installationId, + token, + createdAt, + expiresAt, + repositorySelection, + permissions, + repositoryIds, + repositoryNames, + singleFileName +}) { + return Object.assign( + { + type: "token", + tokenType: "installation", + token, + installationId, + permissions, + createdAt, + expiresAt, + repositorySelection + }, + repositoryIds ? { repositoryIds } : null, + repositoryNames ? { repositoryNames } : null, + singleFileName ? { singleFileName } : null + ); +} +async function getInstallationAuthentication(state, options, customRequest) { + const installationId = Number(options.installationId || state.installationId); + if (!installationId) { + throw new Error( + "[@octokit/auth-app] installationId option is required for installation authentication." + ); + } + if (options.factory) { + const { type, factory, oauthApp, ...factoryAuthOptions } = { + ...state, + ...options + }; + return factory(factoryAuthOptions); + } + const request2 = customRequest || state.request; + return getInstallationAuthenticationConcurrently( + state, + { ...options, installationId }, + request2 + ); +} +var pendingPromises = /* @__PURE__ */ new Map(); +function getInstallationAuthenticationConcurrently(state, options, request2) { + const cacheKey = optionsToCacheKey(options); + if (pendingPromises.has(cacheKey)) { + return pendingPromises.get(cacheKey); + } + const promise = getInstallationAuthenticationImpl( + state, + options, + request2 + ).finally(() => pendingPromises.delete(cacheKey)); + pendingPromises.set(cacheKey, promise); + return promise; +} +async function getInstallationAuthenticationImpl(state, options, request2) { + if (!options.refresh) { + const result = await get(state.cache, options); + if (result) { + const { + token: token2, + createdAt: createdAt2, + expiresAt: expiresAt2, + permissions: permissions2, + repositoryIds: repositoryIds2, + repositoryNames: repositoryNames2, + singleFileName: singleFileName2, + repositorySelection: repositorySelection2 + } = result; + return toTokenAuthentication({ + installationId: options.installationId, + token: token2, + createdAt: createdAt2, + expiresAt: expiresAt2, + permissions: permissions2, + repositorySelection: repositorySelection2, + repositoryIds: repositoryIds2, + repositoryNames: repositoryNames2, + singleFileName: singleFileName2 + }); + } + } + const appAuthentication = await getAppAuthentication(state); + const payload = { + installation_id: options.installationId, + mediaType: { + previews: ["machine-man"] + }, + headers: { + authorization: `bearer ${appAuthentication.token}` + } + }; + if (options.repositoryIds) { + Object.assign(payload, { repository_ids: options.repositoryIds }); + } + if (options.repositoryNames) { + Object.assign(payload, { + repositories: options.repositoryNames + }); + } + if (options.permissions) { + Object.assign(payload, { permissions: options.permissions }); + } + const { + data: { + token, + expires_at: expiresAt, + repositories, + permissions: permissionsOptional, + repository_selection: repositorySelectionOptional, + single_file: singleFileName + } + } = await request2( + "POST /app/installations/{installation_id}/access_tokens", + payload + ); + const permissions = permissionsOptional || {}; + const repositorySelection = repositorySelectionOptional || "all"; + const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0; + const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0; + const createdAt = (/* @__PURE__ */ new Date()).toISOString(); + const cacheOptions = { + token, + createdAt, + expiresAt, + repositorySelection, + permissions, + repositoryIds, + repositoryNames + }; + if (singleFileName) { + Object.assign(payload, { singleFileName }); + } + await set(state.cache, options, cacheOptions); + const cacheData = { + installationId: options.installationId, + token, + createdAt, + expiresAt, + repositorySelection, + permissions, + repositoryIds, + repositoryNames + }; + if (singleFileName) { + Object.assign(cacheData, { singleFileName }); + } + return toTokenAuthentication(cacheData); +} +async function auth5(state, authOptions) { + switch (authOptions.type) { + case "app": + return getAppAuthentication(state); + case "oauth-app": + return state.oauthApp({ type: "oauth-app" }); + case "installation": + authOptions; + return getInstallationAuthentication(state, { + ...authOptions, + type: "installation" + }); + case "oauth-user": + return state.oauthApp(authOptions); + default: + throw new Error(`Invalid auth type: ${authOptions.type}`); + } +} +var PATHS = [ + "/app", + "/app/hook/config", + "/app/hook/deliveries", + "/app/hook/deliveries/{delivery_id}", + "/app/hook/deliveries/{delivery_id}/attempts", + "/app/installations", + "/app/installations/{installation_id}", + "/app/installations/{installation_id}/access_tokens", + "/app/installations/{installation_id}/suspended", + "/app/installation-requests", + "/marketplace_listing/accounts/{account_id}", + "/marketplace_listing/plan", + "/marketplace_listing/plans", + "/marketplace_listing/plans/{plan_id}/accounts", + "/marketplace_listing/stubbed/accounts/{account_id}", + "/marketplace_listing/stubbed/plan", + "/marketplace_listing/stubbed/plans", + "/marketplace_listing/stubbed/plans/{plan_id}/accounts", + "/orgs/{org}/installation", + "/repos/{owner}/{repo}/installation", + "/users/{username}/installation", + "/enterprises/{enterprise}/installation" +]; +function routeMatcher(paths) { + const regexes = paths.map( + (p) => p.split("/").map((c) => c.startsWith("{") ? "(?:.+?)" : c).join("/") + ); + const regex2 = `^(?:${regexes.map((r) => `(?:${r})`).join("|")})$`; + return new RegExp(regex2, "i"); +} +var REGEX = routeMatcher(PATHS); +function requiresAppAuth(url) { + return !!url && REGEX.test(url.split("?")[0]); +} +var FIVE_SECONDS_IN_MS = 5 * 1e3; +function isNotTimeSkewError(error2) { + return !(error2.message.match( + /'Expiration time' claim \('exp'\) is too far in the future/ + ) || error2.message.match( + /'Expiration time' claim \('exp'\) must be a numeric value representing the future time at which the assertion expires/ + ) || error2.message.match( + /'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/ + )); +} +async function hook5(state, request2, route, parameters) { + const endpoint2 = request2.endpoint.merge(route, parameters); + const url = endpoint2.url; + if (/\/login\/oauth\/access_token$/.test(url)) { + return request2(endpoint2); + } + if (requiresAppAuth(url.replace(request2.endpoint.DEFAULTS.baseUrl, ""))) { + const { token: token2 } = await getAppAuthentication(state); + endpoint2.headers.authorization = `bearer ${token2}`; + let response; + try { + response = await request2(endpoint2); + } catch (error2) { + if (isNotTimeSkewError(error2)) { + throw error2; + } + if (typeof error2.response.headers.date === "undefined") { + throw error2; + } + const diff = Math.floor( + (Date.parse(error2.response.headers.date) - Date.parse((/* @__PURE__ */ new Date()).toString())) / 1e3 + ); + state.log.warn(error2.message); + state.log.warn( + `[@octokit/auth-app] GitHub API time and system time are different by ${diff} seconds. Retrying request with the difference accounted for.` + ); + const { token: token3 } = await getAppAuthentication({ + ...state, + timeDifference: diff + }); + endpoint2.headers.authorization = `bearer ${token3}`; + return request2(endpoint2); + } + return response; + } + if (requiresBasicAuth(url)) { + const authentication = await state.oauthApp({ type: "oauth-app" }); + endpoint2.headers.authorization = authentication.headers.authorization; + return request2(endpoint2); + } + const { token, createdAt } = await getInstallationAuthentication( + state, + // @ts-expect-error TBD + {}, + request2.defaults({ baseUrl: endpoint2.baseUrl }) + ); + endpoint2.headers.authorization = `token ${token}`; + return sendRequestWithRetries( + state, + request2, + endpoint2, + createdAt + ); +} +async function sendRequestWithRetries(state, request2, options, createdAt, retries = 0) { + const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt); + try { + return await request2(options); + } catch (error2) { + if (error2.status !== 401) { + throw error2; + } + if (timeSinceTokenCreationInMs >= FIVE_SECONDS_IN_MS) { + if (retries > 0) { + error2.message = `After ${retries} retries within ${timeSinceTokenCreationInMs / 1e3}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`; + } + throw error2; + } + ++retries; + const awaitTime = retries * 1e3; + state.log.warn( + `[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)` + ); + await new Promise((resolve5) => setTimeout(resolve5, awaitTime)); + return sendRequestWithRetries(state, request2, options, createdAt, retries); + } +} +var VERSION12 = "8.2.0"; +function createAppAuth(options) { + if (!options.appId) { + throw new Error("[@octokit/auth-app] appId option is required"); + } + if (!options.privateKey && !options.createJwt) { + throw new Error("[@octokit/auth-app] privateKey option is required"); + } else if (options.privateKey && options.createJwt) { + throw new Error( + "[@octokit/auth-app] privateKey and createJwt options are mutually exclusive" + ); + } + if ("installationId" in options && !options.installationId) { + throw new Error( + "[@octokit/auth-app] installationId is set to a falsy value" + ); + } + const log = options.log || {}; + if (typeof log.warn !== "function") { + log.warn = console.warn.bind(console); + } + const request2 = options.request || request.defaults({ + headers: { + "user-agent": `octokit-auth-app.js/${VERSION12} ${getUserAgent()}` + } + }); + const state = Object.assign( + { + request: request2, + cache: getCache() + }, + options, + options.installationId ? { installationId: Number(options.installationId) } : {}, + { + log, + oauthApp: createOAuthAppAuth({ + clientType: "github-app", + clientId: options.clientId || "", + clientSecret: options.clientSecret || "", + request: request2 + }) + } + ); + return Object.assign(auth5.bind(null, state), { + hook: hook5.bind(null, state) + }); +} + +// +import { readFileSync, existsSync } from "fs"; +import { EOL as EOL4 } from "os"; +var Context = class { + /** + * Hydrate the context from the environment + */ + constructor() { + var _a3, _b2, _c2; + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if (existsSync(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse(readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: "utf8" })); + } else { + const path5 = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path5} does not exist${EOL4}`); + } + } + this.eventName = process.env.GITHUB_EVENT_NAME; + this.sha = process.env.GITHUB_SHA; + this.ref = process.env.GITHUB_REF; + this.workflow = process.env.GITHUB_WORKFLOW; + this.action = process.env.GITHUB_ACTION; + this.actor = process.env.GITHUB_ACTOR; + this.job = process.env.GITHUB_JOB; + this.runAttempt = parseInt(process.env.GITHUB_RUN_ATTEMPT, 10); + this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); + this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); + this.apiUrl = (_a3 = process.env.GITHUB_API_URL) !== null && _a3 !== void 0 ? _a3 : `https://api.github.com`; + this.serverUrl = (_b2 = process.env.GITHUB_SERVER_URL) !== null && _b2 !== void 0 ? _b2 : `https://github.com`; + this.graphqlUrl = (_c2 = process.env.GITHUB_GRAPHQL_URL) !== null && _c2 !== void 0 ? _c2 : `https://api.github.com/graphql`; + } + get issue() { + const payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); + } + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); + return { owner, repo }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } +}; + +// +var httpClient = __toESM(require_lib()); +var import_undici2 = __toESM(require_undici()); +var __awaiter2 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve5) { + resolve5(value); + }); + } + return new (P || (P = Promise))(function(resolve5, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve5(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +function getProxyAgent(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgent(destinationUrl); +} +function getProxyAgentDispatcher(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgentDispatcher(destinationUrl); +} +function getProxyFetch(destinationUrl) { + const httpDispatcher = getProxyAgentDispatcher(destinationUrl); + const proxyFetch = (url, opts) => __awaiter2(this, void 0, void 0, function* () { + return (0, import_undici2.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher })); + }); + return proxyFetch; +} +function getApiBaseUrl() { + return process.env["GITHUB_API_URL"] || "https://api.github.com"; +} + +// +var context = new Context(); +var baseUrl = getApiBaseUrl(); +var defaults = { + baseUrl, + request: { + agent: getProxyAgent(baseUrl), + fetch: getProxyFetch(baseUrl) + } +}; +var GitHub = Octokit.plugin(restEndpointMethods, paginateRest).defaults(defaults); + +// +var context2 = new Context(); + +// github-actions/utils.js +var ANGULAR_ROBOT = [43341, "angular-robot-key"]; +async function getJwtAuthedAppClient([appId, inputKey]) { + const privateKey = getInput(inputKey, { required: true }); + return new Octokit2({ + authStrategy: createAppAuth, + auth: { appId, privateKey } + }); +} +async function getAuthTokenFor(app, orgOrRepo = context2.repo) { + const github = await getJwtAuthedAppClient(app); + let id; + let org = orgOrRepo; + let repo = orgOrRepo; + if (typeof org.org === "string") { + id = (await github.apps.getOrgInstallation({ ...org })).data.id; + } else { + id = (await github.apps.getRepoInstallation({ ...repo })).data.id; + } + const { token } = (await github.rest.apps.createInstallationAccessToken({ + installation_id: id + })).data; + return token; +} + +// ng-dev/utils/config.js +import { join as join2 } from "path"; + +// ng-dev/utils/logging.js +import { styleText } from "util"; + +// ng-dev/utils/child-process.js +init_supports_color(); +import { spawn as _spawn, spawnSync as _spawnSync, exec as _exec } from "child_process"; +import assert from "assert"; +var ChildProcess = class { + static spawnInteractive(command2, args, options = {}) { + return new Promise((resolve5, reject) => { + const commandText = `${command2} ${args.join(" ")}`; + Log.debug(`Executing command: ${sanitize(commandText)}`); + const childProcess = _spawn(command2, args, { ...options, stdio: "inherit" }); + childProcess.on("close", (status) => status === 0 ? resolve5() : reject(status)); + }); + } + static spawnSync(command2, args, options = {}) { + const commandText = `${command2} ${args.join(" ")}`; + const env3 = getEnvironmentForNonInteractiveCommand(options.env); + Log.debug(`Executing command: ${sanitize(commandText)}`); + const { status: exitCode, signal, stdout, stderr } = _spawnSync(command2, args, { ...options, env: env3, encoding: "utf8", stdio: "pipe" }); + const status = statusFromExitCodeAndSignal(exitCode, signal); + if (status === 0 || options.suppressErrorOnFailingExitCode) { + return { status, stdout, stderr }; + } + throw new Error(sanitize(stderr)); + } + static spawn(command2, args, options = {}) { + const commandText = `${command2} ${args.join(" ")}`; + const env3 = getEnvironmentForNonInteractiveCommand(options.env); + return processAsyncCmd(commandText, options, _spawn(command2, args, { ...options, env: env3, stdio: "pipe" })); + } + static exec(command2, options = {}) { + const env3 = getEnvironmentForNonInteractiveCommand(options.env); + return processAsyncCmd(command2, options, _exec(command2, { ...options, env: env3 })); + } +}; +function statusFromExitCodeAndSignal(exitCode, signal) { + return exitCode ?? signal ?? -1; +} +function getEnvironmentForNonInteractiveCommand(userProvidedEnv) { + const forceColorValue = supports_color_default.stdout !== false ? supports_color_default.stdout.level.toString() : void 0; + return { FORCE_COLOR: forceColorValue, ...userProvidedEnv ?? process.env }; +} +function processAsyncCmd(command2, options, childProcess) { + return new Promise((resolve5, reject) => { + let logOutput = ""; + let stdout = ""; + let stderr = ""; + Log.debug(`Executing command: ${sanitize(command2)}`); + childProcess.on("error", (err) => { + reject(err); + }); + if (options.input !== void 0) { + assert(childProcess.stdin, "Cannot write process `input` if there is no pipe `stdin` channel."); + childProcess.stdin.write(options.input); + childProcess.stdin.end(); + } + childProcess.stderr?.on("data", (message) => { + stderr += message; + logOutput += message; + if (options.mode === void 0 || options.mode === "enabled") { + process.stderr.write(sanitize(String(message))); + } + }); + childProcess.stdout?.on("data", (message) => { + stdout += message; + logOutput += message; + if (options.mode === void 0 || options.mode === "enabled") { + process.stderr.write(sanitize(String(message))); + } + }); + childProcess.on("close", (exitCode, signal) => { + const exitDescription = exitCode !== null ? `exit code "${exitCode}"` : `signal "${signal}"`; + const status = statusFromExitCodeAndSignal(exitCode, signal); + const printFn = status !== 0 && options.mode === "on-error" ? Log.error : Log.debug; + printFn(`Command "${sanitize(command2)}" completed with ${exitDescription}.`); + printFn(`Process output: +${sanitize(logOutput)}`); + if (status === 0 || options.suppressErrorOnFailingExitCode) { + resolve5({ stdout, stderr, status }); + } else { + reject(options.mode === "silent" ? logOutput : void 0); + } + }); + }); +} +function sanitize(value) { + if (!value) { + return ""; + } + return value.replace(/(https?:\/\/)([^@:/]*)(:[^@/]+)?@/g, "$1@"); +} + +// ng-dev/utils/repo-directory.js +function determineRepoBaseDirFromCwd() { + const { stdout, stderr, status } = ChildProcess.spawnSync("git", ["rev-parse", "--show-toplevel"]); + if (status !== 0) { + throw Error(`Unable to find the path to the base directory of the repository. +Was the command run from inside of the repo? + +${stderr}`); + } + return stdout.trim(); +} + +// ng-dev/utils/logging.js +import { stripVTControlCharacters } from "util"; + +// +import { notStrictEqual, strictEqual } from "assert"; + +// +var align = { + right: alignRight, + center: alignCenter +}; +var top = 0; +var right = 1; +var bottom = 2; +var left = 3; +var UI = class { + constructor(opts) { + var _a3; + this.width = opts.width; + this.wrap = (_a3 = opts.wrap) !== null && _a3 !== void 0 ? _a3 : true; + this.rows = []; + } + span(...args) { + const cols = this.div(...args); + cols.span = true; + } + resetOutput() { + this.rows = []; + } + div(...args) { + if (args.length === 0) { + this.div(""); + } + if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === "string") { + return this.applyLayoutDSL(args[0]); + } + const cols = args.map((arg) => { + if (typeof arg === "string") { + return this.colFromString(arg); + } + return arg; + }); + this.rows.push(cols); + return cols; + } + shouldApplyLayoutDSL(...args) { + return args.length === 1 && typeof args[0] === "string" && /[\t\n]/.test(args[0]); + } + applyLayoutDSL(str) { + const rows = str.split("\n").map((row) => row.split(" ")); + let leftColumnWidth = 0; + rows.forEach((columns) => { + if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) { + leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0])); + } + }); + rows.forEach((columns) => { + this.div(...columns.map((r, i) => { + return { + text: r.trim(), + padding: this.measurePadding(r), + width: i === 0 && columns.length > 1 ? leftColumnWidth : void 0 + }; + })); + }); + return this.rows[this.rows.length - 1]; + } + colFromString(text) { + return { + text, + padding: this.measurePadding(text) + }; + } + measurePadding(str) { + const noAnsi = mixin.stripAnsi(str); + return [0, noAnsi.match(/\s*$/)[0].length, 0, noAnsi.match(/^\s*/)[0].length]; + } + toString() { + const lines = []; + this.rows.forEach((row) => { + this.rowToString(row, lines); + }); + return lines.filter((line) => !line.hidden).map((line) => line.text).join("\n"); + } + rowToString(row, lines) { + this.rasterize(row).forEach((rrow, r) => { + let str = ""; + rrow.forEach((col, c) => { + const { width } = row[c]; + const wrapWidth = this.negatePadding(row[c]); + let ts = col; + if (wrapWidth > mixin.stringWidth(col)) { + ts += " ".repeat(wrapWidth - mixin.stringWidth(col)); + } + if (row[c].align && row[c].align !== "left" && this.wrap) { + const fn = align[row[c].align]; + ts = fn(ts, wrapWidth); + if (mixin.stringWidth(ts) < wrapWidth) { + ts += " ".repeat((width || 0) - mixin.stringWidth(ts) - 1); + } + } + const padding = row[c].padding || [0, 0, 0, 0]; + if (padding[left]) { + str += " ".repeat(padding[left]); + } + str += addBorder(row[c], ts, "| "); + str += ts; + str += addBorder(row[c], ts, " |"); + if (padding[right]) { + str += " ".repeat(padding[right]); + } + if (r === 0 && lines.length > 0) { + str = this.renderInline(str, lines[lines.length - 1]); + } + }); + lines.push({ + text: str.replace(/ +$/, ""), + span: row.span + }); + }); + return lines; + } + // if the full 'source' can render in + // the target line, do so. + renderInline(source, previousLine) { + const match2 = source.match(/^ */); + const leadingWhitespace = match2 ? match2[0].length : 0; + const target = previousLine.text; + const targetTextWidth = mixin.stringWidth(target.trimRight()); + if (!previousLine.span) { + return source; + } + if (!this.wrap) { + previousLine.hidden = true; + return target + source; + } + if (leadingWhitespace < targetTextWidth) { + return source; + } + previousLine.hidden = true; + return target.trimRight() + " ".repeat(leadingWhitespace - targetTextWidth) + source.trimLeft(); + } + rasterize(row) { + const rrows = []; + const widths = this.columnWidths(row); + let wrapped; + row.forEach((col, c) => { + col.width = widths[c]; + if (this.wrap) { + wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split("\n"); + } else { + wrapped = col.text.split("\n"); + } + if (col.border) { + wrapped.unshift("." + "-".repeat(this.negatePadding(col) + 2) + "."); + wrapped.push("'" + "-".repeat(this.negatePadding(col) + 2) + "'"); + } + if (col.padding) { + wrapped.unshift(...new Array(col.padding[top] || 0).fill("")); + wrapped.push(...new Array(col.padding[bottom] || 0).fill("")); + } + wrapped.forEach((str, r) => { + if (!rrows[r]) { + rrows.push([]); + } + const rrow = rrows[r]; + for (let i = 0; i < c; i++) { + if (rrow[i] === void 0) { + rrow.push(""); + } + } + rrow.push(str); + }); + }); + return rrows; + } + negatePadding(col) { + let wrapWidth = col.width || 0; + if (col.padding) { + wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0); + } + if (col.border) { + wrapWidth -= 4; + } + return wrapWidth; + } + columnWidths(row) { + if (!this.wrap) { + return row.map((col) => { + return col.width || mixin.stringWidth(col.text); + }); + } + let unset = row.length; + let remainingWidth = this.width; + const widths = row.map((col) => { + if (col.width) { + unset--; + remainingWidth -= col.width; + return col.width; + } + return void 0; + }); + const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0; + return widths.map((w, i) => { + if (w === void 0) { + return Math.max(unsetWidth, _minWidth(row[i])); + } + return w; + }); + } +}; +function addBorder(col, ts, style) { + if (col.border) { + if (/[.']-+[.']/.test(ts)) { + return ""; + } + if (ts.trim().length !== 0) { + return style; + } + return " "; + } + return ""; +} +function _minWidth(col) { + const padding = col.padding || []; + const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0); + if (col.border) { + return minWidth + 4; + } + return minWidth; +} +function getWindowWidth() { + if (typeof process === "object" && process.stdout && process.stdout.columns) { + return process.stdout.columns; + } + return 80; +} +function alignRight(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth < width) { + return " ".repeat(width - strWidth) + str; + } + return str; +} +function alignCenter(str, width) { + str = str.trim(); + const strWidth = mixin.stringWidth(str); + if (strWidth >= width) { + return str; + } + return " ".repeat(width - strWidth >> 1) + str; +} +var mixin; +function cliui(opts, _mixin) { + mixin = _mixin; + return new UI({ + width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(), + wrap: opts === null || opts === void 0 ? void 0 : opts.wrap + }); +} + +// +function ansiRegex({ onlyFirst = false } = {}) { + const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)"; + const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`; + const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]"; + const pattern = `${osc}|${csi}`; + return new RegExp(pattern, onlyFirst ? void 0 : "g"); +} + +// +var regex = ansiRegex(); +function stripAnsi(string) { + if (typeof string !== "string") { + throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``); + } + if (!string.includes("\x1B") && !string.includes("\x9B")) { + return string; + } + return string.replace(regex, ""); +} + +// +var ambiguousMinimalCodePoint = 161; +var ambiguousMaximumCodePoint = 1114109; +var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109]; +var fullwidthMinimalCodePoint = 12288; +var fullwidthMaximumCodePoint = 65510; +var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510]; +var wideMinimalCodePoint = 4352; +var wideMaximumCodePoint = 262141; +var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141]; + +// +var isInRange = (ranges, codePoint) => { + let low = 0; + let high = Math.floor(ranges.length / 2) - 1; + while (low <= high) { + const mid = Math.floor((low + high) / 2); + const i = mid * 2; + if (codePoint < ranges[i]) { + high = mid - 1; + } else if (codePoint > ranges[i + 1]) { + low = mid + 1; + } else { + return true; + } + } + return false; +}; + +// +var commonCjkCodePoint = 19968; +var [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges); +function findWideFastPathRange(ranges) { + let fastPathStart = ranges[0]; + let fastPathEnd = ranges[1]; + for (let index = 0; index < ranges.length; index += 2) { + const start = ranges[index]; + const end = ranges[index + 1]; + if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) { + return [start, end]; + } + if (end - start > fastPathEnd - fastPathStart) { + fastPathStart = start; + fastPathEnd = end; + } + } + return [fastPathStart, fastPathEnd]; +} +var isAmbiguous = (codePoint) => { + if (codePoint < ambiguousMinimalCodePoint || codePoint > ambiguousMaximumCodePoint) { + return false; + } + return isInRange(ambiguousRanges, codePoint); +}; +var isFullWidth = (codePoint) => { + if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) { + return false; + } + return isInRange(fullwidthRanges, codePoint); +}; +var isWide = (codePoint) => { + if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) { + return true; + } + if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) { + return false; + } + return isInRange(wideRanges, codePoint); +}; + +// +function validate(codePoint) { + if (!Number.isSafeInteger(codePoint)) { + throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`); + } +} +function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) { + validate(codePoint); + if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) { + return 2; + } + return 1; +} + +// +var emoji_regex_default = () => { + return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; +}; + +// +var segmenter = new Intl.Segmenter(); +var defaultIgnorableCodePointRegex = new RegExp("^\\p{Default_Ignorable_Code_Point}$", "u"); +function stringWidth(string, options = {}) { + if (typeof string !== "string" || string.length === 0) { + return 0; + } + const { + ambiguousIsNarrow = true, + countAnsiEscapeCodes = false + } = options; + if (!countAnsiEscapeCodes) { + string = stripAnsi(string); + } + if (string.length === 0) { + return 0; + } + let width = 0; + const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow }; + for (const { segment: character } of segmenter.segment(string)) { + const codePoint = character.codePointAt(0); + if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) { + continue; + } + if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) { + continue; + } + if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) { + continue; + } + if (codePoint >= 55296 && codePoint <= 57343) { + continue; + } + if (codePoint >= 65024 && codePoint <= 65039) { + continue; + } + if (defaultIgnorableCodePointRegex.test(character)) { + continue; + } + if (emoji_regex_default().test(character)) { + width += 2; + continue; + } + width += eastAsianWidth(codePoint, eastAsianWidthOptions); + } + return width; +} + +// +var ANSI_BACKGROUND_OFFSET = 10; +var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`; +var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`; +var wrapAnsi16m = (offset = 0) => (red2, green2, blue2) => `\x1B[${38 + offset};2;${red2};${green2};${blue2}m`; +var styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + overline: [53, 55], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + // Bright color + blackBright: [90, 39], + gray: [90, 39], + // Alias of `blackBright` + grey: [90, 39], + // Alias of `blackBright` + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + // Bright color + bgBlackBright: [100, 49], + bgGray: [100, 49], + // Alias of `bgBlackBright` + bgGrey: [100, 49], + // Alias of `bgBlackBright` + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } +}; +var modifierNames = Object.keys(styles.modifier); +var foregroundColorNames = Object.keys(styles.color); +var backgroundColorNames = Object.keys(styles.bgColor); +var colorNames = [...foregroundColorNames, ...backgroundColorNames]; +function assembleStyles() { + const codes = /* @__PURE__ */ new Map(); + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\x1B[${style[0]}m`, + close: `\x1B[${style[1]}m` + }; + group[styleName] = styles[styleName]; + codes.set(style[0], style[1]); + } + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + Object.defineProperty(styles, "codes", { + value: codes, + enumerable: false + }); + styles.color.close = "\x1B[39m"; + styles.bgColor.close = "\x1B[49m"; + styles.color.ansi = wrapAnsi16(); + styles.color.ansi256 = wrapAnsi256(); + styles.color.ansi16m = wrapAnsi16m(); + styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET); + styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET); + styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET); + Object.defineProperties(styles, { + rgbToAnsi256: { + value(red2, green2, blue2) { + if (red2 === green2 && green2 === blue2) { + if (red2 < 8) { + return 16; + } + if (red2 > 248) { + return 231; + } + return Math.round((red2 - 8) / 247 * 24) + 232; + } + return 16 + 36 * Math.round(red2 / 255 * 5) + 6 * Math.round(green2 / 255 * 5) + Math.round(blue2 / 255 * 5); + }, + enumerable: false + }, + hexToRgb: { + value(hex) { + const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16)); + if (!matches) { + return [0, 0, 0]; + } + let [colorString] = matches; + if (colorString.length === 3) { + colorString = [...colorString].map((character) => character + character).join(""); + } + const integer = Number.parseInt(colorString, 16); + return [ + /* eslint-disable no-bitwise */ + integer >> 16 & 255, + integer >> 8 & 255, + integer & 255 + /* eslint-enable no-bitwise */ + ]; + }, + enumerable: false + }, + hexToAnsi256: { + value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)), + enumerable: false + }, + ansi256ToAnsi: { + value(code) { + if (code < 8) { + return 30 + code; + } + if (code < 16) { + return 90 + (code - 8); + } + let red2; + let green2; + let blue2; + if (code >= 232) { + red2 = ((code - 232) * 10 + 8) / 255; + green2 = red2; + blue2 = red2; + } else { + code -= 16; + const remainder = code % 36; + red2 = Math.floor(code / 36) / 5; + green2 = Math.floor(remainder / 6) / 5; + blue2 = remainder % 6 / 5; + } + const value = Math.max(red2, green2, blue2) * 2; + if (value === 0) { + return 30; + } + let result = 30 + (Math.round(blue2) << 2 | Math.round(green2) << 1 | Math.round(red2)); + if (value === 2) { + result += 60; + } + return result; + }, + enumerable: false + }, + rgbToAnsi: { + value: (red2, green2, blue2) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red2, green2, blue2)), + enumerable: false + }, + hexToAnsi: { + value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)), + enumerable: false + } + }); + return styles; +} +var ansiStyles = assembleStyles(); +var ansi_styles_default = ansiStyles; + +// +var ESCAPES = /* @__PURE__ */ new Set([ + "\x1B", + "\x9B" +]); +var END_CODE = 39; +var ANSI_ESCAPE_BELL = "\x07"; +var ANSI_CSI = "["; +var ANSI_OSC = "]"; +var ANSI_SGR_TERMINATOR = "m"; +var ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`; +var wrapAnsiCode = (code) => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`; +var wrapAnsiHyperlink = (url) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`; +var wordLengths = (string) => string.split(" ").map((character) => stringWidth(character)); +var wrapWord = (rows, word, columns) => { + const characters = [...word]; + let isInsideEscape = false; + let isInsideLinkEscape = false; + let visible = stringWidth(stripAnsi(rows.at(-1))); + for (const [index, character] of characters.entries()) { + const characterLength = stringWidth(character); + if (visible + characterLength <= columns) { + rows[rows.length - 1] += character; + } else { + rows.push(character); + visible = 0; + } + if (ESCAPES.has(character)) { + isInsideEscape = true; + const ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join(""); + isInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK; + } + if (isInsideEscape) { + if (isInsideLinkEscape) { + if (character === ANSI_ESCAPE_BELL) { + isInsideEscape = false; + isInsideLinkEscape = false; + } + } else if (character === ANSI_SGR_TERMINATOR) { + isInsideEscape = false; + } + continue; + } + visible += characterLength; + if (visible === columns && index < characters.length - 1) { + rows.push(""); + visible = 0; + } + } + if (!visible && rows.at(-1).length > 0 && rows.length > 1) { + rows[rows.length - 2] += rows.pop(); + } +}; +var stringVisibleTrimSpacesRight = (string) => { + const words = string.split(" "); + let last = words.length; + while (last > 0) { + if (stringWidth(words[last - 1]) > 0) { + break; + } + last--; + } + if (last === words.length) { + return string; + } + return words.slice(0, last).join(" ") + words.slice(last).join(""); +}; +var exec = (string, columns, options = {}) => { + if (options.trim !== false && string.trim() === "") { + return ""; + } + let returnValue = ""; + let escapeCode; + let escapeUrl; + const lengths = wordLengths(string); + let rows = [""]; + for (const [index, word] of string.split(" ").entries()) { + if (options.trim !== false) { + rows[rows.length - 1] = rows.at(-1).trimStart(); + } + let rowLength = stringWidth(rows.at(-1)); + if (index !== 0) { + if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) { + rows.push(""); + rowLength = 0; + } + if (rowLength > 0 || options.trim === false) { + rows[rows.length - 1] += " "; + rowLength++; + } + } + if (options.hard && lengths[index] > columns) { + const remainingColumns = columns - rowLength; + const breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns); + const breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns); + if (breaksStartingNextLine < breaksStartingThisLine) { + rows.push(""); + } + wrapWord(rows, word, columns); + continue; + } + if (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) { + if (options.wordWrap === false && rowLength < columns) { + wrapWord(rows, word, columns); + continue; + } + rows.push(""); + } + if (rowLength + lengths[index] > columns && options.wordWrap === false) { + wrapWord(rows, word, columns); + continue; + } + rows[rows.length - 1] += word; + } + if (options.trim !== false) { + rows = rows.map((row) => stringVisibleTrimSpacesRight(row)); + } + const preString = rows.join("\n"); + const pre = [...preString]; + let preStringIndex = 0; + for (const [index, character] of pre.entries()) { + returnValue += character; + if (ESCAPES.has(character)) { + const { groups } = new RegExp(`(?:\\${ANSI_CSI}(?\\d+)m|\\${ANSI_ESCAPE_LINK}(?.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || { groups: {} }; + if (groups.code !== void 0) { + const code2 = Number.parseFloat(groups.code); + escapeCode = code2 === END_CODE ? void 0 : code2; + } else if (groups.uri !== void 0) { + escapeUrl = groups.uri.length === 0 ? void 0 : groups.uri; + } + } + const code = ansi_styles_default.codes.get(Number(escapeCode)); + if (pre[index + 1] === "\n") { + if (escapeUrl) { + returnValue += wrapAnsiHyperlink(""); + } + if (escapeCode && code) { + returnValue += wrapAnsiCode(code); + } + } else if (character === "\n") { + if (escapeCode && code) { + returnValue += wrapAnsiCode(escapeCode); + } + if (escapeUrl) { + returnValue += wrapAnsiHyperlink(escapeUrl); + } + } + preStringIndex += character.length; + } + return returnValue; +}; +function wrapAnsi(string, columns, options) { + return String(string).normalize().replaceAll("\r\n", "\n").split("\n").map((line) => exec(line, columns, options)).join("\n"); +} + +// +function ui(opts) { + return cliui(opts, { + stringWidth, + stripAnsi, + wrap: wrapAnsi + }); +} + +// +import { dirname, resolve } from "path"; +import { readdirSync, statSync } from "fs"; +function sync_default(start, callback) { + let dir = resolve(".", start); + let tmp, stats = statSync(dir); + if (!stats.isDirectory()) { + dir = dirname(dir); + } + while (true) { + tmp = callback(dir, readdirSync(dir)); + if (tmp) + return resolve(dir, tmp); + dir = dirname(tmp = dir); + if (tmp === dir) + break; + } +} + +// +import { inspect } from "util"; +import { fileURLToPath } from "url"; + +// +import { format } from "util"; +import { normalize, resolve as resolve2 } from "path"; + +// +function camelCase(str) { + const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase(); + if (!isCamelCase) { + str = str.toLowerCase(); + } + if (str.indexOf("-") === -1 && str.indexOf("_") === -1) { + return str; + } else { + let camelcase = ""; + let nextChrUpper = false; + const leadingHyphens = str.match(/^-+/); + for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) { + let chr = str.charAt(i); + if (nextChrUpper) { + nextChrUpper = false; + chr = chr.toUpperCase(); + } + if (i !== 0 && (chr === "-" || chr === "_")) { + nextChrUpper = true; + } else if (chr !== "-" && chr !== "_") { + camelcase += chr; + } + } + return camelcase; + } +} +function decamelize(str, joinString) { + const lowercase = str.toLowerCase(); + joinString = joinString || "-"; + let notCamelcase = ""; + for (let i = 0; i < str.length; i++) { + const chrLower = lowercase.charAt(i); + const chrString = str.charAt(i); + if (chrLower !== chrString && i > 0) { + notCamelcase += `${joinString}${lowercase.charAt(i)}`; + } else { + notCamelcase += chrString; + } + } + return notCamelcase; +} +function looksLikeNumber(x) { + if (x === null || x === void 0) + return false; + if (typeof x === "number") + return true; + if (/^0x[0-9a-f]+$/i.test(x)) + return true; + if (/^0[^.]/.test(x)) + return false; + return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +// +function tokenizeArgString(argString) { + if (Array.isArray(argString)) { + return argString.map((e) => typeof e !== "string" ? e + "" : e); + } + argString = argString.trim(); + let i = 0; + let prevC = null; + let c = null; + let opening = null; + const args = []; + for (let ii = 0; ii < argString.length; ii++) { + prevC = c; + c = argString.charAt(ii); + if (c === " " && !opening) { + if (!(prevC === " ")) { + i++; + } + continue; + } + if (c === opening) { + opening = null; + } else if ((c === "'" || c === '"') && !opening) { + opening = c; + } + if (!args[i]) + args[i] = ""; + args[i] += c; + } + return args; +} + +// +var DefaultValuesForTypeKey; +(function(DefaultValuesForTypeKey2) { + DefaultValuesForTypeKey2["BOOLEAN"] = "boolean"; + DefaultValuesForTypeKey2["STRING"] = "string"; + DefaultValuesForTypeKey2["NUMBER"] = "number"; + DefaultValuesForTypeKey2["ARRAY"] = "array"; +})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {})); + +// +var mixin2; +var YargsParser = class { + constructor(_mixin) { + mixin2 = _mixin; + } + parse(argsInput, options) { + const opts = Object.assign({ + alias: void 0, + array: void 0, + boolean: void 0, + config: void 0, + configObjects: void 0, + configuration: void 0, + coerce: void 0, + count: void 0, + default: void 0, + envPrefix: void 0, + narg: void 0, + normalize: void 0, + string: void 0, + number: void 0, + __: void 0, + key: void 0 + }, options); + const args = tokenizeArgString(argsInput); + const inputIsString = typeof argsInput === "string"; + const aliases = combineAliases(Object.assign(/* @__PURE__ */ Object.create(null), opts.alias)); + const configuration = Object.assign({ + "boolean-negation": true, + "camel-case-expansion": true, + "combine-arrays": false, + "dot-notation": true, + "duplicate-arguments-array": true, + "flatten-duplicate-arrays": true, + "greedy-arrays": true, + "halt-at-non-option": false, + "nargs-eats-options": false, + "negation-prefix": "no-", + "parse-numbers": true, + "parse-positional-numbers": true, + "populate--": false, + "set-placeholder-key": false, + "short-option-groups": true, + "strip-aliased": false, + "strip-dashed": false, + "unknown-options-as-args": false + }, opts.configuration); + const defaults3 = Object.assign(/* @__PURE__ */ Object.create(null), opts.default); + const configObjects = opts.configObjects || []; + const envPrefix = opts.envPrefix; + const notFlagsOption = configuration["populate--"]; + const notFlagsArgv = notFlagsOption ? "--" : "_"; + const newAliases = /* @__PURE__ */ Object.create(null); + const defaulted = /* @__PURE__ */ Object.create(null); + const __ = opts.__ || mixin2.format; + const flags = { + aliases: /* @__PURE__ */ Object.create(null), + arrays: /* @__PURE__ */ Object.create(null), + bools: /* @__PURE__ */ Object.create(null), + strings: /* @__PURE__ */ Object.create(null), + numbers: /* @__PURE__ */ Object.create(null), + counts: /* @__PURE__ */ Object.create(null), + normalize: /* @__PURE__ */ Object.create(null), + configs: /* @__PURE__ */ Object.create(null), + nargs: /* @__PURE__ */ Object.create(null), + coercions: /* @__PURE__ */ Object.create(null), + keys: [] + }; + const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/; + const negatedBoolean = new RegExp("^--" + configuration["negation-prefix"] + "(.+)"); + [].concat(opts.array || []).filter(Boolean).forEach(function(opt) { + const key = typeof opt === "object" ? opt.key : opt; + const assignment = Object.keys(opt).map(function(key2) { + const arrayFlagKeys = { + boolean: "bools", + string: "strings", + number: "numbers" + }; + return arrayFlagKeys[key2]; + }).filter(Boolean).pop(); + if (assignment) { + flags[assignment][key] = true; + } + flags.arrays[key] = true; + flags.keys.push(key); + }); + [].concat(opts.boolean || []).filter(Boolean).forEach(function(key) { + flags.bools[key] = true; + flags.keys.push(key); + }); + [].concat(opts.string || []).filter(Boolean).forEach(function(key) { + flags.strings[key] = true; + flags.keys.push(key); + }); + [].concat(opts.number || []).filter(Boolean).forEach(function(key) { + flags.numbers[key] = true; + flags.keys.push(key); + }); + [].concat(opts.count || []).filter(Boolean).forEach(function(key) { + flags.counts[key] = true; + flags.keys.push(key); + }); + [].concat(opts.normalize || []).filter(Boolean).forEach(function(key) { + flags.normalize[key] = true; + flags.keys.push(key); + }); + if (typeof opts.narg === "object") { + Object.entries(opts.narg).forEach(([key, value]) => { + if (typeof value === "number") { + flags.nargs[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.coerce === "object") { + Object.entries(opts.coerce).forEach(([key, value]) => { + if (typeof value === "function") { + flags.coercions[key] = value; + flags.keys.push(key); + } + }); + } + if (typeof opts.config !== "undefined") { + if (Array.isArray(opts.config) || typeof opts.config === "string") { + ; + [].concat(opts.config).filter(Boolean).forEach(function(key) { + flags.configs[key] = true; + }); + } else if (typeof opts.config === "object") { + Object.entries(opts.config).forEach(([key, value]) => { + if (typeof value === "boolean" || typeof value === "function") { + flags.configs[key] = value; + } + }); + } + } + extendAliases(opts.key, aliases, opts.default, flags.arrays); + Object.keys(defaults3).forEach(function(key) { + (flags.aliases[key] || []).forEach(function(alias) { + defaults3[alias] = defaults3[key]; + }); + }); + let error2 = null; + checkConfiguration(); + let notFlags = []; + const argv = Object.assign(/* @__PURE__ */ Object.create(null), { _: [] }); + const argvReturn = {}; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const truncatedArg = arg.replace(/^-{3,}/, "---"); + let broken; + let key; + let letters; + let m; + let next; + let value; + if (arg !== "--" && /^-/.test(arg) && isUnknownOptionAsArg(arg)) { + pushPositional(arg); + } else if (truncatedArg.match(/^---+(=|$)/)) { + pushPositional(arg); + continue; + } else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) { + m = arg.match(/^--?([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + if (checkAllAliases(m[1], flags.arrays)) { + i = eatArray(i, m[1], args, m[2]); + } else if (checkAllAliases(m[1], flags.nargs) !== false) { + i = eatNargs(i, m[1], args, m[2]); + } else { + setArg(m[1], m[2], true); + } + } + } else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) { + m = arg.match(negatedBoolean); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false); + } + } else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) { + m = arg.match(/^--?(.+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== void 0 && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-.\..+=/)) { + m = arg.match(/^-([^=]+)=([\s\S]*)$/); + if (m !== null && Array.isArray(m) && m.length >= 3) { + setArg(m[1], m[2]); + } + } else if (arg.match(/^-.\..+/) && !arg.match(negative)) { + next = args[i + 1]; + m = arg.match(/^-(.\..+)/); + if (m !== null && Array.isArray(m) && m.length >= 2) { + key = m[1]; + if (next !== void 0 && !next.match(/^-/) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } else if (arg.match(/^-[^-]+/) && !arg.match(negative)) { + letters = arg.slice(1, -1).split(""); + broken = false; + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (letters[j + 1] && letters[j + 1] === "=") { + value = arg.slice(j + 3); + key = letters[j]; + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args, value); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args, value); + } else { + setArg(key, value); + } + broken = true; + break; + } + if (next === "-") { + setArg(letters[j], next); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) { + setArg(letters[j], next); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], next); + broken = true; + break; + } else { + setArg(letters[j], defaultValue(letters[j])); + } + } + key = arg.slice(-1)[0]; + if (!broken && key !== "-") { + if (checkAllAliases(key, flags.arrays)) { + i = eatArray(i, key, args); + } else if (checkAllAliases(key, flags.nargs) !== false) { + i = eatNargs(i, key, args); + } else { + next = args[i + 1]; + if (next !== void 0 && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts)) { + setArg(key, next); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next); + i++; + } else { + setArg(key, defaultValue(key)); + } + } + } + } else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) { + key = arg.slice(1); + setArg(key, defaultValue(key)); + } else if (arg === "--") { + notFlags = args.slice(i + 1); + break; + } else if (configuration["halt-at-non-option"]) { + notFlags = args.slice(i); + break; + } else { + pushPositional(arg); + } + } + applyEnvVars(argv, true); + applyEnvVars(argv, false); + setConfig(argv); + setConfigObjects(); + applyDefaultsAndAliases(argv, flags.aliases, defaults3, true); + applyCoercions(argv); + if (configuration["set-placeholder-key"]) + setPlaceholderKeys(argv); + Object.keys(flags.counts).forEach(function(key) { + if (!hasKey(argv, key.split("."))) + setArg(key, 0); + }); + if (notFlagsOption && notFlags.length) + argv[notFlagsArgv] = []; + notFlags.forEach(function(key) { + argv[notFlagsArgv].push(key); + }); + if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) { + Object.keys(argv).filter((key) => key !== "--" && key.includes("-")).forEach((key) => { + delete argv[key]; + }); + } + if (configuration["strip-aliased"]) { + ; + [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => { + if (configuration["camel-case-expansion"] && alias.includes("-")) { + delete argv[alias.split(".").map((prop) => camelCase(prop)).join(".")]; + } + delete argv[alias]; + }); + } + function pushPositional(arg) { + const maybeCoercedNumber = maybeCoerceNumber("_", arg); + if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") { + argv._.push(maybeCoercedNumber); + } + } + function eatNargs(i, key, args2, argAfterEqualSign) { + let ii; + let toEat = checkAllAliases(key, flags.nargs); + toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat; + if (toEat === 0) { + if (!isUndefined(argAfterEqualSign)) { + error2 = Error(__("Argument unexpected for: %s", key)); + } + setArg(key, defaultValue(key)); + return i; + } + let available = isUndefined(argAfterEqualSign) ? 0 : 1; + if (configuration["nargs-eats-options"]) { + if (args2.length - (i + 1) + available < toEat) { + error2 = Error(__("Not enough arguments following: %s", key)); + } + available = toEat; + } else { + for (ii = i + 1; ii < args2.length; ii++) { + if (!args2[ii].match(/^-[^0-9]/) || args2[ii].match(negative) || isUnknownOptionAsArg(args2[ii])) + available++; + else + break; + } + if (available < toEat) + error2 = Error(__("Not enough arguments following: %s", key)); + } + let consumed = Math.min(available, toEat); + if (!isUndefined(argAfterEqualSign) && consumed > 0) { + setArg(key, argAfterEqualSign); + consumed--; + } + for (ii = i + 1; ii < consumed + i + 1; ii++) { + setArg(key, args2[ii]); + } + return i + consumed; + } + function eatArray(i, key, args2, argAfterEqualSign) { + let argsToSet = []; + let next = argAfterEqualSign || args2[i + 1]; + const nargsCount = checkAllAliases(key, flags.nargs); + if (checkAllAliases(key, flags.bools) && !/^(true|false)$/.test(next)) { + argsToSet.push(true); + } else if (isUndefined(next) || isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) { + if (defaults3[key] !== void 0) { + const defVal = defaults3[key]; + argsToSet = Array.isArray(defVal) ? defVal : [defVal]; + } + } else { + if (!isUndefined(argAfterEqualSign)) { + argsToSet.push(processValue(key, argAfterEqualSign, true)); + } + for (let ii = i + 1; ii < args2.length; ii++) { + if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount) + break; + next = args2[ii]; + if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) + break; + i = ii; + argsToSet.push(processValue(key, next, inputIsString)); + } + } + if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) { + error2 = Error(__("Not enough arguments following: %s", key)); + } + setArg(key, argsToSet); + return i; + } + function setArg(key, val, shouldStripQuotes = inputIsString) { + if (/-/.test(key) && configuration["camel-case-expansion"]) { + const alias = key.split(".").map(function(prop) { + return camelCase(prop); + }).join("."); + addNewAlias(key, alias); + } + const value = processValue(key, val, shouldStripQuotes); + const splitKey = key.split("."); + setKey(argv, splitKey, value); + if (flags.aliases[key]) { + flags.aliases[key].forEach(function(x) { + const keyProperties = x.split("."); + setKey(argv, keyProperties, value); + }); + } + if (splitKey.length > 1 && configuration["dot-notation"]) { + ; + (flags.aliases[splitKey[0]] || []).forEach(function(x) { + let keyProperties = x.split("."); + const a = [].concat(splitKey); + a.shift(); + keyProperties = keyProperties.concat(a); + if (!(flags.aliases[key] || []).includes(keyProperties.join("."))) { + setKey(argv, keyProperties, value); + } + }); + } + if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) { + const keys = [key].concat(flags.aliases[key] || []); + keys.forEach(function(key2) { + Object.defineProperty(argvReturn, key2, { + enumerable: true, + get() { + return val; + }, + set(value2) { + val = typeof value2 === "string" ? mixin2.normalize(value2) : value2; + } + }); + }); + } + } + function addNewAlias(key, alias) { + if (!(flags.aliases[key] && flags.aliases[key].length)) { + flags.aliases[key] = [alias]; + newAliases[alias] = true; + } + if (!(flags.aliases[alias] && flags.aliases[alias].length)) { + addNewAlias(alias, key); + } + } + function processValue(key, val, shouldStripQuotes) { + if (shouldStripQuotes) { + val = stripQuotes(val); + } + if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) { + if (typeof val === "string") + val = val === "true"; + } + let value = Array.isArray(val) ? val.map(function(v) { + return maybeCoerceNumber(key, v); + }) : maybeCoerceNumber(key, val); + if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === "boolean")) { + value = increment(); + } + if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) { + if (Array.isArray(val)) + value = val.map((val2) => { + return mixin2.normalize(val2); + }); + else + value = mixin2.normalize(val); + } + return value; + } + function maybeCoerceNumber(key, value) { + if (!configuration["parse-positional-numbers"] && key === "_") + return value; + if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) { + const shouldCoerceNumber = looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`))); + if (shouldCoerceNumber || !isUndefined(value) && checkAllAliases(key, flags.numbers)) { + value = Number(value); + } + } + return value; + } + function setConfig(argv2) { + const configLookup = /* @__PURE__ */ Object.create(null); + applyDefaultsAndAliases(configLookup, flags.aliases, defaults3); + Object.keys(flags.configs).forEach(function(configKey) { + const configPath = argv2[configKey] || configLookup[configKey]; + if (configPath) { + try { + let config = null; + const resolvedConfigPath = mixin2.resolve(mixin2.cwd(), configPath); + const resolveConfig = flags.configs[configKey]; + if (typeof resolveConfig === "function") { + try { + config = resolveConfig(resolvedConfigPath); + } catch (e) { + config = e; + } + if (config instanceof Error) { + error2 = config; + return; + } + } else { + config = mixin2.require(resolvedConfigPath); + } + setConfigObject(config); + } catch (ex) { + if (ex.name === "PermissionDenied") + error2 = ex; + else if (argv2[configKey]) + error2 = Error(__("Invalid JSON config file: %s", configPath)); + } + } + }); + } + function setConfigObject(config, prev) { + Object.keys(config).forEach(function(key) { + const value = config[key]; + const fullKey = prev ? prev + "." + key : key; + if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) { + setConfigObject(value, fullKey); + } else { + if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) { + setArg(fullKey, value); + } + } + }); + } + function setConfigObjects() { + if (typeof configObjects !== "undefined") { + configObjects.forEach(function(configObject) { + setConfigObject(configObject); + }); + } + } + function applyEnvVars(argv2, configOnly) { + if (typeof envPrefix === "undefined") + return; + const prefix = typeof envPrefix === "string" ? envPrefix : ""; + const env3 = mixin2.env(); + Object.keys(env3).forEach(function(envVar) { + if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) { + const keys = envVar.split("__").map(function(key, i) { + if (i === 0) { + key = key.substring(prefix.length); + } + return camelCase(key); + }); + if ((configOnly && flags.configs[keys.join(".")] || !configOnly) && !hasKey(argv2, keys)) { + setArg(keys.join("."), env3[envVar]); + } + } + }); + } + function applyCoercions(argv2) { + let coerce; + const applied = /* @__PURE__ */ new Set(); + Object.keys(argv2).forEach(function(key) { + if (!applied.has(key)) { + coerce = checkAllAliases(key, flags.coercions); + if (typeof coerce === "function") { + try { + const value = maybeCoerceNumber(key, coerce(argv2[key])); + [].concat(flags.aliases[key] || [], key).forEach((ali) => { + applied.add(ali); + argv2[ali] = value; + }); + } catch (err) { + error2 = err; + } + } + } + }); + } + function setPlaceholderKeys(argv2) { + flags.keys.forEach((key) => { + if (~key.indexOf(".")) + return; + if (typeof argv2[key] === "undefined") + argv2[key] = void 0; + }); + return argv2; + } + function applyDefaultsAndAliases(obj, aliases2, defaults4, canLog = false) { + Object.keys(defaults4).forEach(function(key) { + if (!hasKey(obj, key.split("."))) { + setKey(obj, key.split("."), defaults4[key]); + if (canLog) + defaulted[key] = true; + (aliases2[key] || []).forEach(function(x) { + if (hasKey(obj, x.split("."))) + return; + setKey(obj, x.split("."), defaults4[key]); + }); + } + }); + } + function hasKey(obj, keys) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + o = o[key2] || {}; + }); + const key = keys[keys.length - 1]; + if (typeof o !== "object") + return false; + else + return key in o; + } + function setKey(obj, keys, value) { + let o = obj; + if (!configuration["dot-notation"]) + keys = [keys.join(".")]; + keys.slice(0, -1).forEach(function(key2) { + key2 = sanitizeKey(key2); + if (typeof o === "object" && o[key2] === void 0) { + o[key2] = {}; + } + if (typeof o[key2] !== "object" || Array.isArray(o[key2])) { + if (Array.isArray(o[key2])) { + o[key2].push({}); + } else { + o[key2] = [o[key2], {}]; + } + o = o[key2][o[key2].length - 1]; + } else { + o = o[key2]; + } + }); + const key = sanitizeKey(keys[keys.length - 1]); + const isTypeArray = checkAllAliases(keys.join("."), flags.arrays); + const isValueArray = Array.isArray(value); + let duplicate = configuration["duplicate-arguments-array"]; + if (!duplicate && checkAllAliases(key, flags.nargs)) { + duplicate = true; + if (!isUndefined(o[key]) && flags.nargs[key] === 1 || Array.isArray(o[key]) && o[key].length === flags.nargs[key]) { + o[key] = void 0; + } + } + if (value === increment()) { + o[key] = increment(o[key]); + } else if (Array.isArray(o[key])) { + if (duplicate && isTypeArray && isValueArray) { + o[key] = configuration["flatten-duplicate-arrays"] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]); + } else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) { + o[key] = value; + } else { + o[key] = o[key].concat([value]); + } + } else if (o[key] === void 0 && isTypeArray) { + o[key] = isValueArray ? value : [value]; + } else if (duplicate && !(o[key] === void 0 || checkAllAliases(key, flags.counts) || checkAllAliases(key, flags.bools))) { + o[key] = [o[key], value]; + } else { + o[key] = value; + } + } + function extendAliases(...args2) { + args2.forEach(function(obj) { + Object.keys(obj || {}).forEach(function(key) { + if (flags.aliases[key]) + return; + flags.aliases[key] = [].concat(aliases[key] || []); + flags.aliases[key].concat(key).forEach(function(x) { + if (/-/.test(x) && configuration["camel-case-expansion"]) { + const c = camelCase(x); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].concat(key).forEach(function(x) { + if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) { + const c = decamelize(x, "-"); + if (c !== key && flags.aliases[key].indexOf(c) === -1) { + flags.aliases[key].push(c); + newAliases[c] = true; + } + } + }); + flags.aliases[key].forEach(function(x) { + flags.aliases[x] = [key].concat(flags.aliases[key].filter(function(y) { + return x !== y; + })); + }); + }); + }); + } + function checkAllAliases(key, flag) { + const toCheck = [].concat(flags.aliases[key] || [], key); + const keys = Object.keys(flag); + const setAlias = toCheck.find((key2) => keys.includes(key2)); + return setAlias ? flag[setAlias] : false; + } + function hasAnyFlag(key) { + const flagsKeys = Object.keys(flags); + const toCheck = [].concat(flagsKeys.map((k) => flags[k])); + return toCheck.some(function(flag) { + return Array.isArray(flag) ? flag.includes(key) : flag[key]; + }); + } + function hasFlagsMatching(arg, ...patterns) { + const toCheck = [].concat(...patterns); + return toCheck.some(function(pattern) { + const match2 = arg.match(pattern); + return match2 && hasAnyFlag(match2[1]); + }); + } + function hasAllShortFlags(arg) { + if (arg.match(negative) || !arg.match(/^-[^-]+/)) { + return false; + } + let hasAllFlags = true; + let next; + const letters = arg.slice(1).split(""); + for (let j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + if (!hasAnyFlag(letters[j])) { + hasAllFlags = false; + break; + } + if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) { + break; + } + } + return hasAllFlags; + } + function isUnknownOptionAsArg(arg) { + return configuration["unknown-options-as-args"] && isUnknownOption(arg); + } + function isUnknownOption(arg) { + arg = arg.replace(/^-{3,}/, "--"); + if (arg.match(negative)) { + return false; + } + if (hasAllShortFlags(arg)) { + return false; + } + const flagWithEquals = /^-+([^=]+?)=[\s\S]*$/; + const normalFlag = /^-+([^=]+?)$/; + const flagEndingInHyphen = /^-+([^=]+?)-$/; + const flagEndingInDigits = /^-+([^=]+?\d+)$/; + const flagEndingInNonWordCharacters = /^-+([^=]+?)\W+.*$/; + return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters); + } + function defaultValue(key) { + if (!checkAllAliases(key, flags.bools) && !checkAllAliases(key, flags.counts) && `${key}` in defaults3) { + return defaults3[key]; + } else { + return defaultForType(guessType2(key)); + } + } + function defaultForType(type) { + const def = { + [DefaultValuesForTypeKey.BOOLEAN]: true, + [DefaultValuesForTypeKey.STRING]: "", + [DefaultValuesForTypeKey.NUMBER]: void 0, + [DefaultValuesForTypeKey.ARRAY]: [] + }; + return def[type]; + } + function guessType2(key) { + let type = DefaultValuesForTypeKey.BOOLEAN; + if (checkAllAliases(key, flags.strings)) + type = DefaultValuesForTypeKey.STRING; + else if (checkAllAliases(key, flags.numbers)) + type = DefaultValuesForTypeKey.NUMBER; + else if (checkAllAliases(key, flags.bools)) + type = DefaultValuesForTypeKey.BOOLEAN; + else if (checkAllAliases(key, flags.arrays)) + type = DefaultValuesForTypeKey.ARRAY; + return type; + } + function isUndefined(num) { + return num === void 0; + } + function checkConfiguration() { + Object.keys(flags.counts).find((key) => { + if (checkAllAliases(key, flags.arrays)) { + error2 = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key)); + return true; + } else if (checkAllAliases(key, flags.nargs)) { + error2 = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key)); + return true; + } + return false; + }); + } + return { + aliases: Object.assign({}, flags.aliases), + argv: Object.assign(argvReturn, argv), + configuration, + defaulted: Object.assign({}, defaulted), + error: error2, + newAliases: Object.assign({}, newAliases) + }; + } +}; +function combineAliases(aliases) { + const aliasArrays = []; + const combined = /* @__PURE__ */ Object.create(null); + let change = true; + Object.keys(aliases).forEach(function(key) { + aliasArrays.push([].concat(aliases[key], key)); + }); + while (change) { + change = false; + for (let i = 0; i < aliasArrays.length; i++) { + for (let ii = i + 1; ii < aliasArrays.length; ii++) { + const intersect = aliasArrays[i].filter(function(v) { + return aliasArrays[ii].indexOf(v) !== -1; + }); + if (intersect.length) { + aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]); + aliasArrays.splice(ii, 1); + change = true; + break; + } + } + } + } + aliasArrays.forEach(function(aliasArray) { + aliasArray = aliasArray.filter(function(v, i, self) { + return self.indexOf(v) === i; + }); + const lastAlias = aliasArray.pop(); + if (lastAlias !== void 0 && typeof lastAlias === "string") { + combined[lastAlias] = aliasArray; + } + }); + return combined; +} +function increment(orig) { + return orig !== void 0 ? orig + 1 : 1; +} +function sanitizeKey(key) { + if (key === "__proto__") + return "___proto___"; + return key; +} +function stripQuotes(val) { + return typeof val === "string" && (val[0] === "'" || val[0] === '"') && val[val.length - 1] === val[0] ? val.substring(1, val.length - 1) : val; +} + +// +import { readFileSync as readFileSync2 } from "fs"; +import { createRequire } from "node:module"; +var _a; +var _b; +var _c; +var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 20; +var nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1); +if (nodeVersion) { + const major = Number(nodeVersion.match(/^([^.]+)/)[1]); + if (major < minNodeVersion) { + throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`); + } +} +var env2 = process ? process.env : {}; +var require2 = createRequire ? createRequire(import.meta.url) : void 0; +var parser = new YargsParser({ + cwd: process.cwd, + env: () => { + return env2; + }, + format, + normalize, + resolve: resolve2, + require: (path5) => { + if (typeof require2 !== "undefined") { + return require2(path5); + } else if (path5.match(/\.json$/)) { + return JSON.parse(readFileSync2(path5, "utf8")); + } else { + throw Error("only .json config files are supported in ESM"); + } + } +}); +var yargsParser = function Parser(args, opts) { + const result = parser.parse(args.slice(), opts); + return result.argv; +}; +yargsParser.detailed = function(args, opts) { + return parser.parse(args.slice(), opts); +}; +yargsParser.camelCase = camelCase; +yargsParser.decamelize = decamelize; +yargsParser.looksLikeNumber = looksLikeNumber; +var lib_default = yargsParser; + +// +import { basename, dirname as dirname2, extname, relative, resolve as resolve4, join } from "path"; + +// +function getProcessArgvBinIndex() { + if (isBundledElectronApp()) + return 0; + return 1; +} +function isBundledElectronApp() { + return isElectronApp() && !process.defaultApp; +} +function isElectronApp() { + return !!process.versions.electron; +} +function getProcessArgvBin() { + return process.argv[getProcessArgvBinIndex()]; +} + +// +import { readFileSync as readFileSync3, statSync as statSync2, writeFile as writeFile2 } from "fs"; +import { format as format2 } from "util"; +import { resolve as resolve3 } from "path"; +var node_default = { + fs: { + readFileSync: readFileSync3, + writeFile: writeFile2 + }, + format: format2, + resolve: resolve3, + exists: (file) => { + try { + return statSync2(file).isFile(); + } catch (err) { + return false; + } + } +}; + +// +var shim; +var Y18N = class { + constructor(opts) { + opts = opts || {}; + this.directory = opts.directory || "./locales"; + this.updateFiles = typeof opts.updateFiles === "boolean" ? opts.updateFiles : true; + this.locale = opts.locale || "en"; + this.fallbackToLanguage = typeof opts.fallbackToLanguage === "boolean" ? opts.fallbackToLanguage : true; + this.cache = /* @__PURE__ */ Object.create(null); + this.writeQueue = []; + } + __(...args) { + if (typeof arguments[0] !== "string") { + return this._taggedLiteral(arguments[0], ...arguments); + } + const str = args.shift(); + let cb = function() { + }; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + cb = cb || function() { + }; + if (!this.cache[this.locale]) + this._readLocaleFile(); + if (!this.cache[this.locale][str] && this.updateFiles) { + this.cache[this.locale][str] = str; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args)); + } + __n() { + const args = Array.prototype.slice.call(arguments); + const singular = args.shift(); + const plural = args.shift(); + const quantity = args.shift(); + let cb = function() { + }; + if (typeof args[args.length - 1] === "function") + cb = args.pop(); + if (!this.cache[this.locale]) + this._readLocaleFile(); + let str = quantity === 1 ? singular : plural; + if (this.cache[this.locale][singular]) { + const entry = this.cache[this.locale][singular]; + str = entry[quantity === 1 ? "one" : "other"]; + } + if (!this.cache[this.locale][singular] && this.updateFiles) { + this.cache[this.locale][singular] = { + one: singular, + other: plural + }; + this._enqueueWrite({ + directory: this.directory, + locale: this.locale, + cb + }); + } else { + cb(); + } + const values = [str]; + if (~str.indexOf("%d")) + values.push(quantity); + return shim.format.apply(shim.format, values.concat(args)); + } + setLocale(locale) { + this.locale = locale; + } + getLocale() { + return this.locale; + } + updateLocale(obj) { + if (!this.cache[this.locale]) + this._readLocaleFile(); + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + this.cache[this.locale][key] = obj[key]; + } + } + } + _taggedLiteral(parts, ...args) { + let str = ""; + parts.forEach(function(part, i) { + const arg = args[i + 1]; + str += part; + if (typeof arg !== "undefined") { + str += "%s"; + } + }); + return this.__.apply(this, [str].concat([].slice.call(args, 1))); + } + _enqueueWrite(work) { + this.writeQueue.push(work); + if (this.writeQueue.length === 1) + this._processWriteQueue(); + } + _processWriteQueue() { + const _this = this; + const work = this.writeQueue[0]; + const directory = work.directory; + const locale = work.locale; + const cb = work.cb; + const languageFile = this._resolveLocaleFile(directory, locale); + const serializedLocale = JSON.stringify(this.cache[locale], null, 2); + shim.fs.writeFile(languageFile, serializedLocale, "utf-8", function(err) { + _this.writeQueue.shift(); + if (_this.writeQueue.length > 0) + _this._processWriteQueue(); + cb(err); + }); + } + _readLocaleFile() { + let localeLookup = {}; + const languageFile = this._resolveLocaleFile(this.directory, this.locale); + try { + if (shim.fs.readFileSync) { + localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, "utf-8")); + } + } catch (err) { + if (err instanceof SyntaxError) { + err.message = "syntax error in " + languageFile; + } + if (err.code === "ENOENT") + localeLookup = {}; + else + throw err; + } + this.cache[this.locale] = localeLookup; + } + _resolveLocaleFile(directory, locale) { + let file = shim.resolve(directory, "./", locale + ".json"); + if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf("_")) { + const languageFile = shim.resolve(directory, "./", locale.split("_")[0] + ".json"); + if (this._fileExistsSync(languageFile)) + file = languageFile; + } + return file; + } + _fileExistsSync(file) { + return shim.exists(file); + } +}; +function y18n(opts, _shim) { + shim = _shim; + const y18n3 = new Y18N(opts); + return { + __: y18n3.__.bind(y18n3), + __n: y18n3.__n.bind(y18n3), + setLocale: y18n3.setLocale.bind(y18n3), + getLocale: y18n3.getLocale.bind(y18n3), + updateLocale: y18n3.updateLocale.bind(y18n3), + locale: y18n3.locale + }; +} + +// +var y18n2 = (opts) => { + return y18n(opts, node_default); +}; +var y18n_default = y18n2; + +// +var import_get_caller_file = __toESM(require_get_caller_file(), 1); +import { createRequire as createRequire2 } from "node:module"; +import { readFileSync as readFileSync4, readdirSync as readdirSync2 } from "node:fs"; +var __dirname = fileURLToPath(import.meta.url); +var mainFilename = __dirname.substring(0, __dirname.lastIndexOf("node_modules")); +var require3 = createRequire2(import.meta.url); +var esm_default = { + assert: { + notStrictEqual, + strictEqual + }, + cliui: ui, + findUp: sync_default, + getEnv: (key) => { + return process.env[key]; + }, + inspect, + getProcessArgvBin, + mainFilename: mainFilename || process.cwd(), + Parser: lib_default, + path: { + basename, + dirname: dirname2, + extname, + relative, + resolve: resolve4, + join + }, + process: { + argv: () => process.argv, + cwd: process.cwd, + emitWarning: (warning, type) => process.emitWarning(warning, type), + execPath: () => process.execPath, + exit: (code) => { + process.exit(code); + }, + nextTick: process.nextTick, + stdColumns: typeof process.stdout.columns !== "undefined" ? process.stdout.columns : null + }, + readFileSync: readFileSync4, + readdirSync: readdirSync2, + require: require3, + getCallerFile: () => { + const callerFile = (0, import_get_caller_file.default)(3); + return callerFile.match(/^file:\/\//) ? fileURLToPath(callerFile) : callerFile; + }, + stringWidth, + y18n: y18n_default({ + directory: resolve4(__dirname, "../../../locales"), + updateFiles: false + }) +}; + +// +function assertNotStrictEqual(actual, expected, shim3, message) { + shim3.assert.notStrictEqual(actual, expected, message); +} +function assertSingleKey(actual, shim3) { + shim3.assert.strictEqual(typeof actual, "string"); +} +function objectKeys(object) { + return Object.keys(object); +} + +// +function isPromise(maybePromise) { + return !!maybePromise && !!maybePromise.then && typeof maybePromise.then === "function"; +} + +// +var YError = class _YError extends Error { + constructor(msg) { + super(msg || "yargs error"); + this.name = "YError"; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, _YError); + } + } +}; + +// +function parseCommand(cmd) { + const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, " "); + const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); + const bregex = /\.*[\][<>]/g; + const firstCommand = splitCommand.shift(); + if (!firstCommand) + throw new Error(`No command found in: ${cmd}`); + const parsedCommand = { + cmd: firstCommand.replace(bregex, ""), + demanded: [], + optional: [] + }; + splitCommand.forEach((cmd2, i) => { + let variadic = false; + cmd2 = cmd2.replace(/\s/g, ""); + if (/\.+[\]>]/.test(cmd2) && i === splitCommand.length - 1) + variadic = true; + if (/^\[/.test(cmd2)) { + parsedCommand.optional.push({ + cmd: cmd2.replace(bregex, "").split("|"), + variadic + }); + } else { + parsedCommand.demanded.push({ + cmd: cmd2.replace(bregex, "").split("|"), + variadic + }); + } + }); + return parsedCommand; +} + +// +var positionName = ["first", "second", "third", "fourth", "fifth", "sixth"]; +function argsert(arg1, arg2, arg3) { + function parseArgs() { + return typeof arg1 === "object" ? [{ demanded: [], optional: [] }, arg1, arg2] : [ + parseCommand(`cmd ${arg1}`), + arg2, + arg3 + ]; + } + try { + let position = 0; + const [parsed, callerArguments, _length] = parseArgs(); + const args = [].slice.call(callerArguments); + while (args.length && args[args.length - 1] === void 0) + args.pop(); + const length = _length || args.length; + if (length < parsed.demanded.length) { + throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`); + } + const totalCommands = parsed.demanded.length + parsed.optional.length; + if (length > totalCommands) { + throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`); + } + parsed.demanded.forEach((demanded) => { + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = demanded.cmd.filter((type) => type === observedType || type === "*"); + if (matchingTypes.length === 0) + argumentTypeError(observedType, demanded.cmd, position); + position += 1; + }); + parsed.optional.forEach((optional) => { + if (args.length === 0) + return; + const arg = args.shift(); + const observedType = guessType(arg); + const matchingTypes = optional.cmd.filter((type) => type === observedType || type === "*"); + if (matchingTypes.length === 0) + argumentTypeError(observedType, optional.cmd, position); + position += 1; + }); + } catch (err) { + console.warn(err.stack); + } +} +function guessType(arg) { + if (Array.isArray(arg)) { + return "array"; + } else if (arg === null) { + return "null"; + } + return typeof arg; +} +function argumentTypeError(observedType, allowedTypes, position) { + throw new YError(`Invalid ${positionName[position] || "manyith"} argument. Expected ${allowedTypes.join(" or ")} but received ${observedType}.`); +} + +// +var GlobalMiddleware = class { + constructor(yargs) { + this.globalMiddleware = []; + this.frozens = []; + this.yargs = yargs; + } + addMiddleware(callback, applyBeforeValidation, global3 = true, mutates = false) { + argsert(" [boolean] [boolean] [boolean]", [callback, applyBeforeValidation, global3], arguments.length); + if (Array.isArray(callback)) { + for (let i = 0; i < callback.length; i++) { + if (typeof callback[i] !== "function") { + throw Error("middleware must be a function"); + } + const m = callback[i]; + m.applyBeforeValidation = applyBeforeValidation; + m.global = global3; + } + Array.prototype.push.apply(this.globalMiddleware, callback); + } else if (typeof callback === "function") { + const m = callback; + m.applyBeforeValidation = applyBeforeValidation; + m.global = global3; + m.mutates = mutates; + this.globalMiddleware.push(callback); + } + return this.yargs; + } + addCoerceMiddleware(callback, option) { + const aliases = this.yargs.getAliases(); + this.globalMiddleware = this.globalMiddleware.filter((m) => { + const toCheck = [...aliases[option] || [], option]; + if (!m.option) + return true; + else + return !toCheck.includes(m.option); + }); + callback.option = option; + return this.addMiddleware(callback, true, true, true); + } + getMiddleware() { + return this.globalMiddleware; + } + freeze() { + this.frozens.push([...this.globalMiddleware]); + } + unfreeze() { + const frozen = this.frozens.pop(); + if (frozen !== void 0) + this.globalMiddleware = frozen; + } + reset() { + this.globalMiddleware = this.globalMiddleware.filter((m) => m.global); + } +}; +function commandMiddlewareFactory(commandMiddleware) { + if (!commandMiddleware) + return []; + return commandMiddleware.map((middleware) => { + middleware.applyBeforeValidation = false; + return middleware; + }); +} +function applyMiddleware(argv, yargs, middlewares, beforeValidation) { + return middlewares.reduce((acc, middleware) => { + if (middleware.applyBeforeValidation !== beforeValidation) { + return acc; + } + if (middleware.mutates) { + if (middleware.applied) + return acc; + middleware.applied = true; + } + if (isPromise(acc)) { + return acc.then((initialObj) => Promise.all([initialObj, middleware(initialObj, yargs)])).then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj)); + } else { + const result = middleware(acc, yargs); + return isPromise(result) ? result.then((middlewareObj) => Object.assign(acc, middlewareObj)) : Object.assign(acc, result); + } + }, argv); +} + +// +function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => { + throw err; +}) { + try { + const result = isFunction(getResult) ? getResult() : getResult; + return isPromise(result) ? result.then((result2) => resultHandler(result2)) : resultHandler(result); + } catch (err) { + return errorHandler(err); + } +} +function isFunction(arg) { + return typeof arg === "function"; +} + +// +var DEFAULT_MARKER = /(^\*)|(^\$0)/; +var CommandInstance = class { + constructor(usage2, validation2, globalMiddleware, shim3) { + this.requireCache = /* @__PURE__ */ new Set(); + this.handlers = {}; + this.aliasMap = {}; + this.frozens = []; + this.shim = shim3; + this.usage = usage2; + this.globalMiddleware = globalMiddleware; + this.validation = validation2; + } + addDirectory(dir, req, callerFile, opts) { + opts = opts || {}; + this.requireCache.add(callerFile); + const fullDirPath = this.shim.path.resolve(this.shim.path.dirname(callerFile), dir); + const files = this.shim.readdirSync(fullDirPath, { + recursive: opts.recurse ? true : false + }); + if (!Array.isArray(opts.extensions)) + opts.extensions = ["js"]; + const visit = typeof opts.visit === "function" ? opts.visit : (o) => o; + for (const fileb of files) { + const file = fileb.toString(); + if (opts.exclude) { + let exclude = false; + if (typeof opts.exclude === "function") { + exclude = opts.exclude(file); + } else { + exclude = opts.exclude.test(file); + } + if (exclude) + continue; + } + if (opts.include) { + let include = false; + if (typeof opts.include === "function") { + include = opts.include(file); + } else { + include = opts.include.test(file); + } + if (!include) + continue; + } + let supportedExtension = false; + for (const ext2 of opts.extensions) { + if (file.endsWith(ext2)) + supportedExtension = true; + } + if (supportedExtension) { + const joined = this.shim.path.join(fullDirPath, file); + const module = req(joined); + const extendableModule = Object.create(null, Object.getOwnPropertyDescriptors({ ...module })); + const visited = visit(extendableModule, joined, file); + if (visited) { + if (this.requireCache.has(joined)) + continue; + else + this.requireCache.add(joined); + if (!extendableModule.command) { + extendableModule.command = this.shim.path.basename(joined, this.shim.path.extname(joined)); + } + this.addHandler(extendableModule); + } + } + } + } + addHandler(cmd, description, builder, handler2, commandMiddleware, deprecated) { + let aliases = []; + const middlewares = commandMiddlewareFactory(commandMiddleware); + handler2 = handler2 || (() => { + }); + if (Array.isArray(cmd)) { + if (isCommandAndAliases(cmd)) { + [cmd, ...aliases] = cmd; + } else { + for (const command2 of cmd) { + this.addHandler(command2); + } + } + } else if (isCommandHandlerDefinition(cmd)) { + let command2 = Array.isArray(cmd.command) || typeof cmd.command === "string" ? cmd.command : null; + if (command2 === null) { + throw new Error(`No command name given for module: ${this.shim.inspect(cmd)}`); + } + if (cmd.aliases) + command2 = [].concat(command2).concat(cmd.aliases); + this.addHandler(command2, this.extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated); + return; + } else if (isCommandBuilderDefinition(builder)) { + this.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated); + return; + } + if (typeof cmd === "string") { + const parsedCommand = parseCommand(cmd); + aliases = aliases.map((alias) => parseCommand(alias).cmd); + let isDefault = false; + const parsedAliases = [parsedCommand.cmd].concat(aliases).filter((c) => { + if (DEFAULT_MARKER.test(c)) { + isDefault = true; + return false; + } + return true; + }); + if (parsedAliases.length === 0 && isDefault) + parsedAliases.push("$0"); + if (isDefault) { + parsedCommand.cmd = parsedAliases[0]; + aliases = parsedAliases.slice(1); + cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd); + } + aliases.forEach((alias) => { + this.aliasMap[alias] = parsedCommand.cmd; + }); + if (description !== false) { + this.usage.command(cmd, description, isDefault, aliases, deprecated); + } + this.handlers[parsedCommand.cmd] = { + original: cmd, + description, + handler: handler2, + builder: builder || {}, + middlewares, + deprecated, + demanded: parsedCommand.demanded, + optional: parsedCommand.optional + }; + if (isDefault) + this.defaultCommand = this.handlers[parsedCommand.cmd]; + } + } + getCommandHandlers() { + return this.handlers; + } + getCommands() { + return Object.keys(this.handlers).concat(Object.keys(this.aliasMap)); + } + hasDefaultCommand() { + return !!this.defaultCommand; + } + runCommand(command2, yargs, parsed, commandIndex, helpOnly, helpOrVersionSet) { + const commandHandler = this.handlers[command2] || this.handlers[this.aliasMap[command2]] || this.defaultCommand; + const currentContext = yargs.getInternalMethods().getContext(); + const parentCommands = currentContext.commands.slice(); + const isDefaultCommand = !command2; + if (command2) { + currentContext.commands.push(command2); + currentContext.fullCommands.push(commandHandler.original); + } + const builderResult = this.applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, parsed.aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet); + return isPromise(builderResult) ? builderResult.then((result) => this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, result.innerArgv, currentContext, helpOnly, result.aliases, yargs)) : this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, builderResult.innerArgv, currentContext, helpOnly, builderResult.aliases, yargs); + } + applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet) { + const builder = commandHandler.builder; + let innerYargs = yargs; + if (isCommandBuilderCallback(builder)) { + yargs.getInternalMethods().getUsageInstance().freeze(); + const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet); + if (isPromise(builderOutput)) { + return builderOutput.then((output) => { + innerYargs = isYargsInstance(output) ? output : yargs; + return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); + }); + } + } else if (isCommandBuilderOptionDefinitions(builder)) { + yargs.getInternalMethods().getUsageInstance().freeze(); + innerYargs = yargs.getInternalMethods().reset(aliases); + Object.keys(commandHandler.builder).forEach((key) => { + innerYargs.option(key, builder[key]); + }); + } + return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly); + } + parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly) { + if (isDefaultCommand) + innerYargs.getInternalMethods().getUsageInstance().unfreeze(true); + if (this.shouldUpdateUsage(innerYargs)) { + innerYargs.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description); + } + const innerArgv = innerYargs.getInternalMethods().runYargsParserAndExecuteCommands(null, void 0, true, commandIndex, helpOnly); + return isPromise(innerArgv) ? innerArgv.then((argv) => ({ + aliases: innerYargs.parsed.aliases, + innerArgv: argv + })) : { + aliases: innerYargs.parsed.aliases, + innerArgv + }; + } + shouldUpdateUsage(yargs) { + return !yargs.getInternalMethods().getUsageInstance().getUsageDisabled() && yargs.getInternalMethods().getUsageInstance().getUsage().length === 0; + } + usageFromParentCommandsCommandHandler(parentCommands, commandHandler) { + const c = DEFAULT_MARKER.test(commandHandler.original) ? commandHandler.original.replace(DEFAULT_MARKER, "").trim() : commandHandler.original; + const pc = parentCommands.filter((c2) => { + return !DEFAULT_MARKER.test(c2); + }); + pc.push(c); + return `$0 ${pc.join(" ")}`; + } + handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) { + if (!yargs.getInternalMethods().getHasOutput()) { + const validation2 = yargs.getInternalMethods().runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand); + innerArgv = maybeAsyncResult(innerArgv, (result) => { + validation2(result); + return result; + }); + } + if (commandHandler.handler && !yargs.getInternalMethods().getHasOutput()) { + yargs.getInternalMethods().setHasOutput(); + const populateDoubleDash = !!yargs.getOptions().configuration["populate--"]; + yargs.getInternalMethods().postProcess(innerArgv, populateDoubleDash, false, false); + innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false); + innerArgv = maybeAsyncResult(innerArgv, (result) => { + const handlerResult = commandHandler.handler(result); + return isPromise(handlerResult) ? handlerResult.then(() => result) : result; + }); + if (!isDefaultCommand) { + yargs.getInternalMethods().getUsageInstance().cacheHelpMessage(); + } + if (isPromise(innerArgv) && !yargs.getInternalMethods().hasParseCallback()) { + innerArgv.catch((error2) => { + try { + yargs.getInternalMethods().getUsageInstance().fail(null, error2); + } catch (_err) { + } + }); + } + } + if (!isDefaultCommand) { + currentContext.commands.pop(); + currentContext.fullCommands.pop(); + } + return innerArgv; + } + applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) { + let positionalMap = {}; + if (helpOnly) + return innerArgv; + if (!yargs.getInternalMethods().getHasOutput()) { + positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs); + } + const middlewares = this.globalMiddleware.getMiddleware().slice(0).concat(commandHandler.middlewares); + const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true); + return isPromise(maybePromiseArgv) ? maybePromiseArgv.then((resolvedInnerArgv) => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap)) : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap); + } + populatePositionals(commandHandler, argv, context3, yargs) { + argv._ = argv._.slice(context3.commands.length); + const demanded = commandHandler.demanded.slice(0); + const optional = commandHandler.optional.slice(0); + const positionalMap = {}; + this.validation.positionalCount(demanded.length, argv._.length); + while (demanded.length) { + const demand = demanded.shift(); + this.populatePositional(demand, argv, positionalMap); + } + while (optional.length) { + const maybe = optional.shift(); + this.populatePositional(maybe, argv, positionalMap); + } + argv._ = context3.commands.concat(argv._.map((a) => "" + a)); + this.postProcessPositionals(argv, positionalMap, this.cmdToParseOptions(commandHandler.original), yargs); + return positionalMap; + } + populatePositional(positional, argv, positionalMap) { + const cmd = positional.cmd[0]; + if (positional.variadic) { + positionalMap[cmd] = argv._.splice(0).map(String); + } else { + if (argv._.length) + positionalMap[cmd] = [String(argv._.shift())]; + } + } + cmdToParseOptions(cmdString) { + const parseOptions2 = { + array: [], + default: {}, + alias: {}, + demand: {} + }; + const parsed = parseCommand(cmdString); + parsed.demanded.forEach((d) => { + const [cmd, ...aliases] = d.cmd; + if (d.variadic) { + parseOptions2.array.push(cmd); + parseOptions2.default[cmd] = []; + } + parseOptions2.alias[cmd] = aliases; + parseOptions2.demand[cmd] = true; + }); + parsed.optional.forEach((o) => { + const [cmd, ...aliases] = o.cmd; + if (o.variadic) { + parseOptions2.array.push(cmd); + parseOptions2.default[cmd] = []; + } + parseOptions2.alias[cmd] = aliases; + }); + return parseOptions2; + } + postProcessPositionals(argv, positionalMap, parseOptions2, yargs) { + const options = Object.assign({}, yargs.getOptions()); + options.default = Object.assign(parseOptions2.default, options.default); + for (const key of Object.keys(parseOptions2.alias)) { + options.alias[key] = (options.alias[key] || []).concat(parseOptions2.alias[key]); + } + options.array = options.array.concat(parseOptions2.array); + options.config = {}; + const unparsed = []; + Object.keys(positionalMap).forEach((key) => { + positionalMap[key].map((value) => { + if (options.configuration["unknown-options-as-args"]) + options.key[key] = true; + unparsed.push(`--${key}`); + unparsed.push(value); + }); + }); + if (!unparsed.length) + return; + const config = Object.assign({}, options.configuration, { + "populate--": false + }); + const parsed = this.shim.Parser.detailed(unparsed, Object.assign({}, options, { + configuration: config + })); + if (parsed.error) { + yargs.getInternalMethods().getUsageInstance().fail(parsed.error.message, parsed.error); + } else { + const positionalKeys = Object.keys(positionalMap); + Object.keys(positionalMap).forEach((key) => { + positionalKeys.push(...parsed.aliases[key]); + }); + Object.keys(parsed.argv).forEach((key) => { + if (positionalKeys.includes(key)) { + if (!positionalMap[key]) + positionalMap[key] = parsed.argv[key]; + if (!this.isInConfigs(yargs, key) && !this.isDefaulted(yargs, key) && Object.prototype.hasOwnProperty.call(argv, key) && Object.prototype.hasOwnProperty.call(parsed.argv, key) && (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) { + argv[key] = [].concat(argv[key], parsed.argv[key]); + } else { + argv[key] = parsed.argv[key]; + } + } + }); + } + } + isDefaulted(yargs, key) { + const { default: defaults3 } = yargs.getOptions(); + return Object.prototype.hasOwnProperty.call(defaults3, key) || Object.prototype.hasOwnProperty.call(defaults3, this.shim.Parser.camelCase(key)); + } + isInConfigs(yargs, key) { + const { configObjects } = yargs.getOptions(); + return configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, key)) || configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key))); + } + runDefaultBuilderOn(yargs) { + if (!this.defaultCommand) + return; + if (this.shouldUpdateUsage(yargs)) { + const commandString = DEFAULT_MARKER.test(this.defaultCommand.original) ? this.defaultCommand.original : this.defaultCommand.original.replace(/^[^[\]<>]*/, "$0 "); + yargs.getInternalMethods().getUsageInstance().usage(commandString, this.defaultCommand.description); + } + const builder = this.defaultCommand.builder; + if (isCommandBuilderCallback(builder)) { + return builder(yargs, true); + } else if (!isCommandBuilderDefinition(builder)) { + Object.keys(builder).forEach((key) => { + yargs.option(key, builder[key]); + }); + } + return void 0; + } + extractDesc({ describe, description, desc }) { + for (const test of [describe, description, desc]) { + if (typeof test === "string" || test === false) + return test; + assertNotStrictEqual(test, true, this.shim); + } + return false; + } + freeze() { + this.frozens.push({ + handlers: this.handlers, + aliasMap: this.aliasMap, + defaultCommand: this.defaultCommand + }); + } + unfreeze() { + const frozen = this.frozens.pop(); + assertNotStrictEqual(frozen, void 0, this.shim); + ({ + handlers: this.handlers, + aliasMap: this.aliasMap, + defaultCommand: this.defaultCommand + } = frozen); + } + reset() { + this.handlers = {}; + this.aliasMap = {}; + this.defaultCommand = void 0; + this.requireCache = /* @__PURE__ */ new Set(); + return this; + } +}; +function command(usage2, validation2, globalMiddleware, shim3) { + return new CommandInstance(usage2, validation2, globalMiddleware, shim3); +} +function isCommandBuilderDefinition(builder) { + return typeof builder === "object" && !!builder.builder && typeof builder.handler === "function"; +} +function isCommandAndAliases(cmd) { + return cmd.every((c) => typeof c === "string"); +} +function isCommandBuilderCallback(builder) { + return typeof builder === "function"; +} +function isCommandBuilderOptionDefinitions(builder) { + return typeof builder === "object"; +} +function isCommandHandlerDefinition(cmd) { + return typeof cmd === "object" && !Array.isArray(cmd); +} + +// +function objFilter(original = {}, filter2 = () => true) { + const obj = {}; + objectKeys(original).forEach((key) => { + if (filter2(key, original[key])) { + obj[key] = original[key]; + } + }); + return obj; +} + +// +function setBlocking(blocking) { + if (typeof process === "undefined") + return; + [process.stdout, process.stderr].forEach((_stream) => { + const stream = _stream; + if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === "function") { + stream._handle.setBlocking(blocking); + } + }); +} + +// +function isBoolean(fail) { + return typeof fail === "boolean"; +} +function usage(yargs, shim3) { + const __ = shim3.y18n.__; + const self = {}; + const fails = []; + self.failFn = function failFn(f) { + fails.push(f); + }; + let failMessage = null; + let globalFailMessage = null; + let showHelpOnFail = true; + self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) { + const [enabled, message] = typeof arg1 === "string" ? [true, arg1] : [arg1, arg2]; + if (yargs.getInternalMethods().isGlobalContext()) { + globalFailMessage = message; + } + failMessage = message; + showHelpOnFail = enabled; + return self; + }; + let failureOutput = false; + self.fail = function fail(msg, err) { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (fails.length) { + for (let i = fails.length - 1; i >= 0; --i) { + const fail2 = fails[i]; + if (isBoolean(fail2)) { + if (err) + throw err; + else if (msg) + throw Error(msg); + } else { + fail2(msg, err, self); + } + } + } else { + if (yargs.getExitProcess()) + setBlocking(true); + if (!failureOutput) { + failureOutput = true; + if (showHelpOnFail) { + yargs.showHelp("error"); + logger.error(); + } + if (msg || err) + logger.error(msg || err); + const globalOrCommandFailMessage = failMessage || globalFailMessage; + if (globalOrCommandFailMessage) { + if (msg || err) + logger.error(""); + logger.error(globalOrCommandFailMessage); + } + } + err = err || new YError(msg); + if (yargs.getExitProcess()) { + return yargs.exit(1); + } else if (yargs.getInternalMethods().hasParseCallback()) { + return yargs.exit(1, err); + } else { + throw err; + } + } + }; + let usages = []; + let usageDisabled = false; + self.usage = (msg, description) => { + if (msg === null) { + usageDisabled = true; + usages = []; + return self; + } + usageDisabled = false; + usages.push([msg, description || ""]); + return self; + }; + self.getUsage = () => { + return usages; + }; + self.getUsageDisabled = () => { + return usageDisabled; + }; + self.getPositionalGroupName = () => { + return __("Positionals:"); + }; + let examples = []; + self.example = (cmd, description) => { + examples.push([cmd, description || ""]); + }; + let commands = []; + self.command = function command2(cmd, description, isDefault, aliases, deprecated = false) { + if (isDefault) { + commands = commands.map((cmdArray) => { + cmdArray[2] = false; + return cmdArray; + }); + } + commands.push([cmd, description || "", isDefault, aliases, deprecated]); + }; + self.getCommands = () => commands; + let descriptions = {}; + self.describe = function describe(keyOrKeys, desc) { + if (Array.isArray(keyOrKeys)) { + keyOrKeys.forEach((k) => { + self.describe(k, desc); + }); + } else if (typeof keyOrKeys === "object") { + Object.keys(keyOrKeys).forEach((k) => { + self.describe(k, keyOrKeys[k]); + }); + } else { + descriptions[keyOrKeys] = desc; + } + }; + self.getDescriptions = () => descriptions; + let epilogs = []; + self.epilog = (msg) => { + epilogs.push(msg); + }; + let wrapSet = false; + let wrap; + self.wrap = (cols) => { + wrapSet = true; + wrap = cols; + }; + self.getWrap = () => { + if (shim3.getEnv("YARGS_DISABLE_WRAP")) { + return null; + } + if (!wrapSet) { + wrap = windowWidth(); + wrapSet = true; + } + return wrap; + }; + const deferY18nLookupPrefix = "__yargsString__:"; + self.deferY18nLookup = (str) => deferY18nLookupPrefix + str; + self.help = function help() { + if (cachedHelpMessage) + return cachedHelpMessage; + normalizeAliases(); + const base$0 = yargs.customScriptName ? yargs.$0 : shim3.path.basename(yargs.$0); + const demandedOptions = yargs.getDemandedOptions(); + const demandedCommands = yargs.getDemandedCommands(); + const deprecatedOptions = yargs.getDeprecatedOptions(); + const groups = yargs.getGroups(); + const options = yargs.getOptions(); + let keys = []; + keys = keys.concat(Object.keys(descriptions)); + keys = keys.concat(Object.keys(demandedOptions)); + keys = keys.concat(Object.keys(demandedCommands)); + keys = keys.concat(Object.keys(options.default)); + keys = keys.filter(filterHiddenOptions); + keys = Object.keys(keys.reduce((acc, key) => { + if (key !== "_") + acc[key] = true; + return acc; + }, {})); + const theWrap = self.getWrap(); + const ui2 = shim3.cliui({ + width: theWrap, + wrap: !!theWrap + }); + if (!usageDisabled) { + if (usages.length) { + usages.forEach((usage2) => { + ui2.div({ text: `${usage2[0].replace(/\$0/g, base$0)}` }); + if (usage2[1]) { + ui2.div({ text: `${usage2[1]}`, padding: [1, 0, 0, 0] }); + } + }); + ui2.div(); + } else if (commands.length) { + let u = null; + if (demandedCommands._) { + u = `${base$0} <${__("command")}> +`; + } else { + u = `${base$0} [${__("command")}] +`; + } + ui2.div(`${u}`); + } + } + if (commands.length > 1 || commands.length === 1 && !commands[0][2]) { + ui2.div(__("Commands:")); + const context3 = yargs.getInternalMethods().getContext(); + const parentCommands = context3.commands.length ? `${context3.commands.join(" ")} ` : ""; + if (yargs.getInternalMethods().getParserConfiguration()["sort-commands"] === true) { + commands = commands.sort((a, b) => a[0].localeCompare(b[0])); + } + const prefix = base$0 ? `${base$0} ` : ""; + commands.forEach((command2) => { + const commandString = `${prefix}${parentCommands}${command2[0].replace(/^\$0 ?/, "")}`; + ui2.span({ + text: commandString, + padding: [0, 2, 0, 2], + width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4 + }, { text: command2[1] }); + const hints = []; + if (command2[2]) + hints.push(`[${__("default")}]`); + if (command2[3] && command2[3].length) { + hints.push(`[${__("aliases:")} ${command2[3].join(", ")}]`); + } + if (command2[4]) { + if (typeof command2[4] === "string") { + hints.push(`[${__("deprecated: %s", command2[4])}]`); + } else { + hints.push(`[${__("deprecated")}]`); + } + } + if (hints.length) { + ui2.div({ + text: hints.join(" "), + padding: [0, 0, 0, 2], + align: "right" + }); + } else { + ui2.div(); + } + }); + ui2.div(); + } + const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []); + keys = keys.filter((key) => !yargs.parsed.newAliases[key] && aliasKeys.every((alias) => (options.alias[alias] || []).indexOf(key) === -1)); + const defaultGroup = __("Options:"); + if (!groups[defaultGroup]) + groups[defaultGroup] = []; + addUngroupedKeys(keys, options.alias, groups, defaultGroup); + const isLongSwitch = (sw) => /^--/.test(getText(sw)); + const displayedGroups = Object.keys(groups).filter((groupName) => groups[groupName].length > 0).map((groupName) => { + const normalizedKeys = groups[groupName].filter(filterHiddenOptions).map((key) => { + if (aliasKeys.includes(key)) + return key; + for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== void 0; i++) { + if ((options.alias[aliasKey] || []).includes(key)) + return aliasKey; + } + return key; + }); + return { groupName, normalizedKeys }; + }).filter(({ normalizedKeys }) => normalizedKeys.length > 0).map(({ groupName, normalizedKeys }) => { + const switches = normalizedKeys.reduce((acc, key) => { + acc[key] = [key].concat(options.alias[key] || []).map((sw) => { + if (groupName === self.getPositionalGroupName()) + return sw; + else { + return (/^[0-9]$/.test(sw) ? options.boolean.includes(key) ? "-" : "--" : sw.length > 1 ? "--" : "-") + sw; + } + }).sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2) ? 0 : isLongSwitch(sw1) ? 1 : -1).join(", "); + return acc; + }, {}); + return { groupName, normalizedKeys, switches }; + }); + const shortSwitchesUsed = displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).some(({ normalizedKeys, switches }) => !normalizedKeys.every((key) => isLongSwitch(switches[key]))); + if (shortSwitchesUsed) { + displayedGroups.filter(({ groupName }) => groupName !== self.getPositionalGroupName()).forEach(({ normalizedKeys, switches }) => { + normalizedKeys.forEach((key) => { + if (isLongSwitch(switches[key])) { + switches[key] = addIndentation(switches[key], "-x, ".length); + } + }); + }); + } + displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => { + ui2.div(groupName); + normalizedKeys.forEach((key) => { + const kswitch = switches[key]; + let desc = descriptions[key] || ""; + let type = null; + if (desc.includes(deferY18nLookupPrefix)) + desc = __(desc.substring(deferY18nLookupPrefix.length)); + if (options.boolean.includes(key)) + type = `[${__("boolean")}]`; + if (options.count.includes(key)) + type = `[${__("count")}]`; + if (options.string.includes(key)) + type = `[${__("string")}]`; + if (options.normalize.includes(key)) + type = `[${__("string")}]`; + if (options.array.includes(key)) + type = `[${__("array")}]`; + if (options.number.includes(key)) + type = `[${__("number")}]`; + const deprecatedExtra = (deprecated) => typeof deprecated === "string" ? `[${__("deprecated: %s", deprecated)}]` : `[${__("deprecated")}]`; + const extra = [ + key in deprecatedOptions ? deprecatedExtra(deprecatedOptions[key]) : null, + type, + key in demandedOptions ? `[${__("required")}]` : null, + options.choices && options.choices[key] ? `[${__("choices:")} ${self.stringifiedValues(options.choices[key])}]` : null, + defaultString(options.default[key], options.defaultDescription[key]) + ].filter(Boolean).join(" "); + ui2.span({ + text: getText(kswitch), + padding: [0, 2, 0, 2 + getIndentation(kswitch)], + width: maxWidth(switches, theWrap) + 4 + }, desc); + const shouldHideOptionExtras = yargs.getInternalMethods().getUsageConfiguration()["hide-types"] === true; + if (extra && !shouldHideOptionExtras) + ui2.div({ text: extra, padding: [0, 0, 0, 2], align: "right" }); + else + ui2.div(); + }); + ui2.div(); + }); + if (examples.length) { + ui2.div(__("Examples:")); + examples.forEach((example) => { + example[0] = example[0].replace(/\$0/g, base$0); + }); + examples.forEach((example) => { + if (example[1] === "") { + ui2.div({ + text: example[0], + padding: [0, 2, 0, 2] + }); + } else { + ui2.div({ + text: example[0], + padding: [0, 2, 0, 2], + width: maxWidth(examples, theWrap) + 4 + }, { + text: example[1] + }); + } + }); + ui2.div(); + } + if (epilogs.length > 0) { + const e = epilogs.map((epilog) => epilog.replace(/\$0/g, base$0)).join("\n"); + ui2.div(`${e} +`); + } + return ui2.toString().replace(/\s*$/, ""); + }; + function maxWidth(table, theWrap, modifier) { + let width = 0; + if (!Array.isArray(table)) { + table = Object.values(table).map((v) => [v]); + } + table.forEach((v) => { + width = Math.max(shim3.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width); + }); + if (theWrap) + width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10)); + return width; + } + function normalizeAliases() { + const demandedOptions = yargs.getDemandedOptions(); + const options = yargs.getOptions(); + (Object.keys(options.alias) || []).forEach((key) => { + options.alias[key].forEach((alias) => { + if (descriptions[alias]) + self.describe(key, descriptions[alias]); + if (alias in demandedOptions) + yargs.demandOption(key, demandedOptions[alias]); + if (options.boolean.includes(alias)) + yargs.boolean(key); + if (options.count.includes(alias)) + yargs.count(key); + if (options.string.includes(alias)) + yargs.string(key); + if (options.normalize.includes(alias)) + yargs.normalize(key); + if (options.array.includes(alias)) + yargs.array(key); + if (options.number.includes(alias)) + yargs.number(key); + }); + }); + } + let cachedHelpMessage; + self.cacheHelpMessage = function() { + cachedHelpMessage = this.help(); + }; + self.clearCachedHelpMessage = function() { + cachedHelpMessage = void 0; + }; + self.hasCachedHelpMessage = function() { + return !!cachedHelpMessage; + }; + function addUngroupedKeys(keys, aliases, groups, defaultGroup) { + let groupedKeys = []; + let toCheck = null; + Object.keys(groups).forEach((group) => { + groupedKeys = groupedKeys.concat(groups[group]); + }); + keys.forEach((key) => { + toCheck = [key].concat(aliases[key]); + if (!toCheck.some((k) => groupedKeys.indexOf(k) !== -1)) { + groups[defaultGroup].push(key); + } + }); + return groupedKeys; + } + function filterHiddenOptions(key) { + return yargs.getOptions().hiddenOptions.indexOf(key) < 0 || yargs.parsed.argv[yargs.getOptions().showHiddenOpt]; + } + self.showHelp = (level) => { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (!level) + level = "error"; + const emit = typeof level === "function" ? level : logger[level]; + emit(self.help()); + }; + self.functionDescription = (fn) => { + const description = fn.name ? shim3.Parser.decamelize(fn.name, "-") : __("generated-value"); + return ["(", description, ")"].join(""); + }; + self.stringifiedValues = function stringifiedValues(values, separator) { + let string = ""; + const sep3 = separator || ", "; + const array = [].concat(values); + if (!values || !array.length) + return string; + array.forEach((value) => { + if (string.length) + string += sep3; + string += JSON.stringify(value); + }); + return string; + }; + function defaultString(value, defaultDescription) { + let string = `[${__("default:")} `; + if (value === void 0 && !defaultDescription) + return null; + if (defaultDescription) { + string += defaultDescription; + } else { + switch (typeof value) { + case "string": + string += `"${value}"`; + break; + case "object": + string += JSON.stringify(value); + break; + default: + string += value; + } + } + return `${string}]`; + } + function windowWidth() { + const maxWidth2 = 80; + if (shim3.process.stdColumns) { + return Math.min(maxWidth2, shim3.process.stdColumns); + } else { + return maxWidth2; + } + } + let version = null; + self.version = (ver) => { + version = ver; + }; + self.showVersion = (level) => { + const logger = yargs.getInternalMethods().getLoggerInstance(); + if (!level) + level = "error"; + const emit = typeof level === "function" ? level : logger[level]; + emit(version); + }; + self.reset = function reset(localLookup) { + failMessage = null; + failureOutput = false; + usages = []; + usageDisabled = false; + epilogs = []; + examples = []; + commands = []; + descriptions = objFilter(descriptions, (k) => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions + }); + }; + self.unfreeze = function unfreeze(defaultCommand = false) { + const frozen = frozens.pop(); + if (!frozen) + return; + if (defaultCommand) { + descriptions = { ...frozen.descriptions, ...descriptions }; + commands = [...frozen.commands, ...commands]; + usages = [...frozen.usages, ...usages]; + examples = [...frozen.examples, ...examples]; + epilogs = [...frozen.epilogs, ...epilogs]; + } else { + ({ + failMessage, + failureOutput, + usages, + usageDisabled, + epilogs, + examples, + commands, + descriptions + } = frozen); + } + }; + return self; +} +function isIndentedText(text) { + return typeof text === "object"; +} +function addIndentation(text, indent) { + return isIndentedText(text) ? { text: text.text, indentation: text.indentation + indent } : { text, indentation: indent }; +} +function getIndentation(text) { + return isIndentedText(text) ? text.indentation : 0; +} +function getText(text) { + return isIndentedText(text) ? text.text : text; +} + +// +var completionShTemplate = `###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc +# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local cur_word args type_list + + cur_word="\${COMP_WORDS[COMP_CWORD]}" + args=("\${COMP_WORDS[@]}") + + # ask yargs to generate completions. + # see https://stackoverflow.com/a/40944195/7080036 for the spaces-handling awk + mapfile -t type_list < <({{app_path}} --get-yargs-completions "\${args[@]}") + mapfile -t COMPREPLY < <(compgen -W "$( printf '%q ' "\${type_list[@]}" )" -- "\${cur_word}" | + awk '/ / { print "\\""$0"\\"" } /^[^ ]+$/ { print $0 }') + + # if no match was found, fall back to filename completion + if [ \${#COMPREPLY[@]} -eq 0 ]; then + COMPREPLY=() + fi + + return 0 +} +complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}} +###-end-{{app_name}}-completions-### +`; +var completionZshTemplate = `#compdef {{app_name}} +###-begin-{{app_name}}-completions-### +# +# yargs command completion script +# +# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc +# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX. +# +_{{app_name}}_yargs_completions() +{ + local reply + local si=$IFS + IFS=$' +' reply=($(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" {{app_path}} --get-yargs-completions "\${words[@]}")) + IFS=$si + if [[ \${#reply} -gt 0 ]]; then + _describe 'values' reply + else + _default + fi +} +if [[ "'\${zsh_eval_context[-1]}" == "loadautofunc" ]]; then + _{{app_name}}_yargs_completions "$@" +else + compdef _{{app_name}}_yargs_completions {{app_name}} +fi +###-end-{{app_name}}-completions-### +`; + +// +var Completion = class { + constructor(yargs, usage2, command2, shim3) { + var _a3, _b2, _c2; + this.yargs = yargs; + this.usage = usage2; + this.command = command2; + this.shim = shim3; + this.completionKey = "get-yargs-completions"; + this.aliases = null; + this.customCompletionFunction = null; + this.indexAfterLastReset = 0; + this.zshShell = (_c2 = ((_a3 = this.shim.getEnv("SHELL")) === null || _a3 === void 0 ? void 0 : _a3.includes("zsh")) || ((_b2 = this.shim.getEnv("ZSH_NAME")) === null || _b2 === void 0 ? void 0 : _b2.includes("zsh"))) !== null && _c2 !== void 0 ? _c2 : false; + } + defaultCompletion(args, argv, current, done) { + const handlers = this.command.getCommandHandlers(); + for (let i = 0, ii = args.length; i < ii; ++i) { + if (handlers[args[i]] && handlers[args[i]].builder) { + const builder = handlers[args[i]].builder; + if (isCommandBuilderCallback(builder)) { + this.indexAfterLastReset = i + 1; + const y = this.yargs.getInternalMethods().reset(); + builder(y, true); + return y.argv; + } + } + } + const completions = []; + this.commandCompletions(completions, args, current); + this.optionCompletions(completions, args, argv, current); + this.choicesFromOptionsCompletions(completions, args, argv, current); + this.choicesFromPositionalsCompletions(completions, args, argv, current); + done(null, completions); + } + commandCompletions(completions, args, current) { + const parentCommands = this.yargs.getInternalMethods().getContext().commands; + if (!current.match(/^-/) && parentCommands[parentCommands.length - 1] !== current && !this.previousArgHasChoices(args)) { + this.usage.getCommands().forEach((usageCommand) => { + const commandName = parseCommand(usageCommand[0]).cmd; + if (args.indexOf(commandName) === -1) { + if (!this.zshShell) { + completions.push(commandName); + } else { + const desc = usageCommand[1] || ""; + completions.push(commandName.replace(/:/g, "\\:") + ":" + desc); + } + } + }); + } + } + optionCompletions(completions, args, argv, current) { + if ((current.match(/^-/) || current === "" && completions.length === 0) && !this.previousArgHasChoices(args)) { + const options = this.yargs.getOptions(); + const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; + Object.keys(options.key).forEach((key) => { + const negable = !!options.configuration["boolean-negation"] && options.boolean.includes(key); + const isPositionalKey = positionalKeys.includes(key); + if (!isPositionalKey && !options.hiddenOptions.includes(key) && !this.argsContainKey(args, key, negable)) { + this.completeOptionKey(key, completions, current, negable && !!options.default[key]); + } + }); + } + } + choicesFromOptionsCompletions(completions, args, argv, current) { + if (this.previousArgHasChoices(args)) { + const choices = this.getPreviousArgChoices(args); + if (choices && choices.length > 0) { + completions.push(...choices.map((c) => c.replace(/:/g, "\\:"))); + } + } + } + choicesFromPositionalsCompletions(completions, args, argv, current) { + if (current === "" && completions.length > 0 && this.previousArgHasChoices(args)) { + return; + } + const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || []; + const offset = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length + 1); + const positionalKey = positionalKeys[argv._.length - offset - 1]; + if (!positionalKey) { + return; + } + const choices = this.yargs.getOptions().choices[positionalKey] || []; + for (const choice of choices) { + if (choice.startsWith(current)) { + completions.push(choice.replace(/:/g, "\\:")); + } + } + } + getPreviousArgChoices(args) { + if (args.length < 1) + return; + let previousArg = args[args.length - 1]; + let filter2 = ""; + if (!previousArg.startsWith("-") && args.length > 1) { + filter2 = previousArg; + previousArg = args[args.length - 2]; + } + if (!previousArg.startsWith("-")) + return; + const previousArgKey = previousArg.replace(/^-+/, ""); + const options = this.yargs.getOptions(); + const possibleAliases = [ + previousArgKey, + ...this.yargs.getAliases()[previousArgKey] || [] + ]; + let choices; + for (const possibleAlias of possibleAliases) { + if (Object.prototype.hasOwnProperty.call(options.key, possibleAlias) && Array.isArray(options.choices[possibleAlias])) { + choices = options.choices[possibleAlias]; + break; + } + } + if (choices) { + return choices.filter((choice) => !filter2 || choice.startsWith(filter2)); + } + } + previousArgHasChoices(args) { + const choices = this.getPreviousArgChoices(args); + return choices !== void 0 && choices.length > 0; + } + argsContainKey(args, key, negable) { + const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? "-" : "--") + s) !== -1; + if (argsContains(key)) + return true; + if (negable && argsContains(`no-${key}`)) + return true; + if (this.aliases) { + for (const alias of this.aliases[key]) { + if (argsContains(alias)) + return true; + } + } + return false; + } + completeOptionKey(key, completions, current, negable) { + var _a3, _b2, _c2, _d; + let keyWithDesc = key; + if (this.zshShell) { + const descs = this.usage.getDescriptions(); + const aliasKey = (_b2 = (_a3 = this === null || this === void 0 ? void 0 : this.aliases) === null || _a3 === void 0 ? void 0 : _a3[key]) === null || _b2 === void 0 ? void 0 : _b2.find((alias) => { + const desc2 = descs[alias]; + return typeof desc2 === "string" && desc2.length > 0; + }); + const descFromAlias = aliasKey ? descs[aliasKey] : void 0; + const desc = (_d = (_c2 = descs[key]) !== null && _c2 !== void 0 ? _c2 : descFromAlias) !== null && _d !== void 0 ? _d : ""; + keyWithDesc = `${key.replace(/:/g, "\\:")}:${desc.replace("__yargsString__:", "").replace(/(\r\n|\n|\r)/gm, " ")}`; + } + const startsByTwoDashes = (s) => /^--/.test(s); + const isShortOption = (s) => /^[^0-9]$/.test(s); + const dashes = !startsByTwoDashes(current) && isShortOption(key) ? "-" : "--"; + completions.push(dashes + keyWithDesc); + if (negable) { + completions.push(dashes + "no-" + keyWithDesc); + } + } + customCompletion(args, argv, current, done) { + assertNotStrictEqual(this.customCompletionFunction, null, this.shim); + if (isSyncCompletionFunction(this.customCompletionFunction)) { + const result = this.customCompletionFunction(current, argv); + if (isPromise(result)) { + return result.then((list) => { + this.shim.process.nextTick(() => { + done(null, list); + }); + }).catch((err) => { + this.shim.process.nextTick(() => { + done(err, void 0); + }); + }); + } + return done(null, result); + } else if (isFallbackCompletionFunction(this.customCompletionFunction)) { + return this.customCompletionFunction(current, argv, (onCompleted = done) => this.defaultCompletion(args, argv, current, onCompleted), (completions) => { + done(null, completions); + }); + } else { + return this.customCompletionFunction(current, argv, (completions) => { + done(null, completions); + }); + } + } + getCompletion(args, done) { + const current = args.length ? args[args.length - 1] : ""; + const argv = this.yargs.parse(args, true); + const completionFunction = this.customCompletionFunction ? (argv2) => this.customCompletion(args, argv2, current, done) : (argv2) => this.defaultCompletion(args, argv2, current, done); + return isPromise(argv) ? argv.then(completionFunction) : completionFunction(argv); + } + generateCompletionScript($0, cmd) { + let script = this.zshShell ? completionZshTemplate : completionShTemplate; + const name = this.shim.path.basename($0); + if ($0.match(/\.js$/)) + $0 = `./${$0}`; + script = script.replace(/{{app_name}}/g, name); + script = script.replace(/{{completion_command}}/g, cmd); + return script.replace(/{{app_path}}/g, $0); + } + registerFunction(fn) { + this.customCompletionFunction = fn; + } + setParsed(parsed) { + this.aliases = parsed.aliases; + } +}; +function completion(yargs, usage2, command2, shim3) { + return new Completion(yargs, usage2, command2, shim3); +} +function isSyncCompletionFunction(completionFunction) { + return completionFunction.length < 3; +} +function isFallbackCompletionFunction(completionFunction) { + return completionFunction.length > 3; +} + +// +function levenshtein(a, b) { + if (a.length === 0) + return b.length; + if (b.length === 0) + return a.length; + const matrix = []; + let i; + for (i = 0; i <= b.length; i++) { + matrix[i] = [i]; + } + let j; + for (j = 0; j <= a.length; j++) { + matrix[0][j] = j; + } + for (i = 1; i <= b.length; i++) { + for (j = 1; j <= a.length; j++) { + if (b.charAt(i - 1) === a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } else { + if (i > 1 && j > 1 && b.charAt(i - 2) === a.charAt(j - 1) && b.charAt(i - 1) === a.charAt(j - 2)) { + matrix[i][j] = matrix[i - 2][j - 2] + 1; + } else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); + } + } + } + } + return matrix[b.length][a.length]; +} + +// +var specialKeys = ["$0", "--", "_"]; +function validation(yargs, usage2, shim3) { + const __ = shim3.y18n.__; + const __n = shim3.y18n.__n; + const self = {}; + self.nonOptionCount = function nonOptionCount(argv) { + const demandedCommands = yargs.getDemandedCommands(); + const positionalCount = argv._.length + (argv["--"] ? argv["--"].length : 0); + const _s = positionalCount - yargs.getInternalMethods().getContext().commands.length; + if (demandedCommands._ && (_s < demandedCommands._.min || _s > demandedCommands._.max)) { + if (_s < demandedCommands._.min) { + if (demandedCommands._.minMsg !== void 0) { + usage2.fail(demandedCommands._.minMsg ? demandedCommands._.minMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.min.toString()) : null); + } else { + usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", _s, _s.toString(), demandedCommands._.min.toString())); + } + } else if (_s > demandedCommands._.max) { + if (demandedCommands._.maxMsg !== void 0) { + usage2.fail(demandedCommands._.maxMsg ? demandedCommands._.maxMsg.replace(/\$0/g, _s.toString()).replace(/\$1/, demandedCommands._.max.toString()) : null); + } else { + usage2.fail(__n("Too many non-option arguments: got %s, maximum of %s", "Too many non-option arguments: got %s, maximum of %s", _s, _s.toString(), demandedCommands._.max.toString())); + } + } + } + }; + self.positionalCount = function positionalCount(required, observed) { + if (observed < required) { + usage2.fail(__n("Not enough non-option arguments: got %s, need at least %s", "Not enough non-option arguments: got %s, need at least %s", observed, observed + "", required + "")); + } + }; + self.requiredArguments = function requiredArguments(argv, demandedOptions) { + let missing = null; + for (const key of Object.keys(demandedOptions)) { + if (!Object.prototype.hasOwnProperty.call(argv, key) || typeof argv[key] === "undefined") { + missing = missing || {}; + missing[key] = demandedOptions[key]; + } + } + if (missing) { + const customMsgs = []; + for (const key of Object.keys(missing)) { + const msg = missing[key]; + if (msg && customMsgs.indexOf(msg) < 0) { + customMsgs.push(msg); + } + } + const customMsg = customMsgs.length ? ` +${customMsgs.join("\n")}` : ""; + usage2.fail(__n("Missing required argument: %s", "Missing required arguments: %s", Object.keys(missing).length, Object.keys(missing).join(", ") + customMsg)); + } + }; + self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) { + var _a3; + const commandKeys = yargs.getInternalMethods().getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getInternalMethods().getContext(); + Object.keys(argv).forEach((key) => { + if (!specialKeys.includes(key) && !Object.prototype.hasOwnProperty.call(positionalMap, key) && !Object.prototype.hasOwnProperty.call(yargs.getInternalMethods().getParseContext(), key) && !self.isValidAndSomeAliasIsNotNew(key, aliases)) { + unknown.push(key); + } + }); + if (checkPositionals && (currentContext.commands.length > 0 || commandKeys.length > 0 || isDefaultCommand)) { + argv._.slice(currentContext.commands.length).forEach((key) => { + if (!commandKeys.includes("" + key)) { + unknown.push("" + key); + } + }); + } + if (checkPositionals) { + const demandedCommands = yargs.getDemandedCommands(); + const maxNonOptDemanded = ((_a3 = demandedCommands._) === null || _a3 === void 0 ? void 0 : _a3.max) || 0; + const expected = currentContext.commands.length + maxNonOptDemanded; + if (expected < argv._.length) { + argv._.slice(expected).forEach((key) => { + key = String(key); + if (!currentContext.commands.includes(key) && !unknown.includes(key)) { + unknown.push(key); + } + }); + } + } + if (unknown.length) { + usage2.fail(__n("Unknown argument: %s", "Unknown arguments: %s", unknown.length, unknown.map((s) => s.trim() ? s : `"${s}"`).join(", "))); + } + }; + self.unknownCommands = function unknownCommands(argv) { + const commandKeys = yargs.getInternalMethods().getCommandInstance().getCommands(); + const unknown = []; + const currentContext = yargs.getInternalMethods().getContext(); + if (currentContext.commands.length > 0 || commandKeys.length > 0) { + argv._.slice(currentContext.commands.length).forEach((key) => { + if (!commandKeys.includes("" + key)) { + unknown.push("" + key); + } + }); + } + if (unknown.length > 0) { + usage2.fail(__n("Unknown command: %s", "Unknown commands: %s", unknown.length, unknown.join(", "))); + return true; + } else { + return false; + } + }; + self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) { + if (!Object.prototype.hasOwnProperty.call(aliases, key)) { + return false; + } + const newAliases = yargs.parsed.newAliases; + return [key, ...aliases[key]].some((a) => !Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]); + }; + self.limitedChoices = function limitedChoices(argv) { + const options = yargs.getOptions(); + const invalid = {}; + if (!Object.keys(options.choices).length) + return; + Object.keys(argv).forEach((key) => { + if (specialKeys.indexOf(key) === -1 && Object.prototype.hasOwnProperty.call(options.choices, key)) { + [].concat(argv[key]).forEach((value) => { + if (options.choices[key].indexOf(value) === -1 && value !== void 0) { + invalid[key] = (invalid[key] || []).concat(value); + } + }); + } + }); + const invalidKeys = Object.keys(invalid); + if (!invalidKeys.length) + return; + let msg = __("Invalid values:"); + invalidKeys.forEach((key) => { + msg += ` + ${__("Argument: %s, Given: %s, Choices: %s", key, usage2.stringifiedValues(invalid[key]), usage2.stringifiedValues(options.choices[key]))}`; + }); + usage2.fail(msg); + }; + let implied = {}; + self.implies = function implies(key, value) { + argsert(" [array|number|string]", [key, value], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + self.implies(k, key[k]); + }); + } else { + yargs.global(key); + if (!implied[key]) { + implied[key] = []; + } + if (Array.isArray(value)) { + value.forEach((i) => self.implies(key, i)); + } else { + assertNotStrictEqual(value, void 0, shim3); + implied[key].push(value); + } + } + }; + self.getImplied = function getImplied() { + return implied; + }; + function keyExists(argv, val) { + const num = Number(val); + val = isNaN(num) ? val : num; + if (typeof val === "number") { + val = argv._.length >= val; + } else if (val.match(/^--no-.+/)) { + val = val.match(/^--no-(.+)/)[1]; + val = !Object.prototype.hasOwnProperty.call(argv, val); + } else { + val = Object.prototype.hasOwnProperty.call(argv, val); + } + return val; + } + self.implications = function implications(argv) { + const implyFail = []; + Object.keys(implied).forEach((key) => { + const origKey = key; + (implied[key] || []).forEach((value) => { + let key2 = origKey; + const origValue = value; + key2 = keyExists(argv, key2); + value = keyExists(argv, value); + if (key2 && !value) { + implyFail.push(` ${origKey} -> ${origValue}`); + } + }); + }); + if (implyFail.length) { + let msg = `${__("Implications failed:")} +`; + implyFail.forEach((value) => { + msg += value; + }); + usage2.fail(msg); + } + }; + let conflicting = {}; + self.conflicts = function conflicts(key, value) { + argsert(" [array|string]", [key, value], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + self.conflicts(k, key[k]); + }); + } else { + yargs.global(key); + if (!conflicting[key]) { + conflicting[key] = []; + } + if (Array.isArray(value)) { + value.forEach((i) => self.conflicts(key, i)); + } else { + conflicting[key].push(value); + } + } + }; + self.getConflicting = () => conflicting; + self.conflicting = function conflictingFn(argv) { + Object.keys(argv).forEach((key) => { + if (conflicting[key]) { + conflicting[key].forEach((value) => { + if (value && argv[key] !== void 0 && argv[value] !== void 0) { + usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); + } + }); + } + }); + if (yargs.getInternalMethods().getParserConfiguration()["strip-dashed"]) { + Object.keys(conflicting).forEach((key) => { + conflicting[key].forEach((value) => { + if (value && argv[shim3.Parser.camelCase(key)] !== void 0 && argv[shim3.Parser.camelCase(value)] !== void 0) { + usage2.fail(__("Arguments %s and %s are mutually exclusive", key, value)); + } + }); + }); + } + }; + self.recommendCommands = function recommendCommands(cmd, potentialCommands) { + const threshold = 3; + potentialCommands = potentialCommands.sort((a, b) => b.length - a.length); + let recommended = null; + let bestDistance = Infinity; + for (let i = 0, candidate; (candidate = potentialCommands[i]) !== void 0; i++) { + const d = levenshtein(cmd, candidate); + if (d <= threshold && d < bestDistance) { + bestDistance = d; + recommended = candidate; + } + } + if (recommended) + usage2.fail(__("Did you mean %s?", recommended)); + }; + self.reset = function reset(localLookup) { + implied = objFilter(implied, (k) => !localLookup[k]); + conflicting = objFilter(conflicting, (k) => !localLookup[k]); + return self; + }; + const frozens = []; + self.freeze = function freeze() { + frozens.push({ + implied, + conflicting + }); + }; + self.unfreeze = function unfreeze() { + const frozen = frozens.pop(); + assertNotStrictEqual(frozen, void 0, shim3); + ({ implied, conflicting } = frozen); + }; + return self; +} + +// +var previouslyVisitedConfigs = []; +var shim2; +function applyExtends(config, cwd, mergeExtends, _shim) { + shim2 = _shim; + let defaultConfig = {}; + if (Object.prototype.hasOwnProperty.call(config, "extends")) { + if (typeof config.extends !== "string") + return defaultConfig; + const isPath = /\.json|\..*rc$/.test(config.extends); + let pathToDefault = null; + if (!isPath) { + try { + pathToDefault = import.meta.resolve(config.extends); + } catch (_err) { + return config; + } + } else { + pathToDefault = getPathToDefaultConfig(cwd, config.extends); + } + checkForCircularExtends(pathToDefault); + previouslyVisitedConfigs.push(pathToDefault); + defaultConfig = isPath ? JSON.parse(shim2.readFileSync(pathToDefault, "utf8")) : _shim.require(config.extends); + delete config.extends; + defaultConfig = applyExtends(defaultConfig, shim2.path.dirname(pathToDefault), mergeExtends, shim2); + } + previouslyVisitedConfigs = []; + return mergeExtends ? mergeDeep2(defaultConfig, config) : Object.assign({}, defaultConfig, config); +} +function checkForCircularExtends(cfgPath) { + if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) { + throw new YError(`Circular extended configurations: '${cfgPath}'.`); + } +} +function getPathToDefaultConfig(cwd, pathToExtend) { + return shim2.path.resolve(cwd, pathToExtend); +} +function mergeDeep2(config1, config2) { + const target = {}; + function isObject(obj) { + return obj && typeof obj === "object" && !Array.isArray(obj); + } + Object.assign(target, config1); + for (const key of Object.keys(config2)) { + if (isObject(config2[key]) && isObject(target[key])) { + target[key] = mergeDeep2(config1[key], config2[key]); + } else { + target[key] = config2[key]; + } + } + return target; +} + +// +var __classPrivateFieldSet = function(receiver, state, value, kind, f) { + if (kind === "m") + throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; +}; +var __classPrivateFieldGet = function(receiver, state, kind, f) { + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _YargsInstance_command; +var _YargsInstance_cwd; +var _YargsInstance_context; +var _YargsInstance_completion; +var _YargsInstance_completionCommand; +var _YargsInstance_defaultShowHiddenOpt; +var _YargsInstance_exitError; +var _YargsInstance_detectLocale; +var _YargsInstance_emittedWarnings; +var _YargsInstance_exitProcess; +var _YargsInstance_frozens; +var _YargsInstance_globalMiddleware; +var _YargsInstance_groups; +var _YargsInstance_hasOutput; +var _YargsInstance_helpOpt; +var _YargsInstance_isGlobalContext; +var _YargsInstance_logger; +var _YargsInstance_output; +var _YargsInstance_options; +var _YargsInstance_parentRequire; +var _YargsInstance_parserConfig; +var _YargsInstance_parseFn; +var _YargsInstance_parseContext; +var _YargsInstance_pkgs; +var _YargsInstance_preservedGroups; +var _YargsInstance_processArgs; +var _YargsInstance_recommendCommands; +var _YargsInstance_shim; +var _YargsInstance_strict; +var _YargsInstance_strictCommands; +var _YargsInstance_strictOptions; +var _YargsInstance_usage; +var _YargsInstance_usageConfig; +var _YargsInstance_versionOpt; +var _YargsInstance_validation; +function YargsFactory(_shim) { + return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => { + const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim); + Object.defineProperty(yargs, "argv", { + get: () => { + return yargs.parse(); + }, + enumerable: true + }); + yargs.help(); + yargs.version(); + return yargs; + }; +} +var kCopyDoubleDash = Symbol("copyDoubleDash"); +var kCreateLogger = Symbol("copyDoubleDash"); +var kDeleteFromParserHintObject = Symbol("deleteFromParserHintObject"); +var kEmitWarning = Symbol("emitWarning"); +var kFreeze = Symbol("freeze"); +var kGetDollarZero = Symbol("getDollarZero"); +var kGetParserConfiguration = Symbol("getParserConfiguration"); +var kGetUsageConfiguration = Symbol("getUsageConfiguration"); +var kGuessLocale = Symbol("guessLocale"); +var kGuessVersion = Symbol("guessVersion"); +var kParsePositionalNumbers = Symbol("parsePositionalNumbers"); +var kPkgUp = Symbol("pkgUp"); +var kPopulateParserHintArray = Symbol("populateParserHintArray"); +var kPopulateParserHintSingleValueDictionary = Symbol("populateParserHintSingleValueDictionary"); +var kPopulateParserHintArrayDictionary = Symbol("populateParserHintArrayDictionary"); +var kPopulateParserHintDictionary = Symbol("populateParserHintDictionary"); +var kSanitizeKey = Symbol("sanitizeKey"); +var kSetKey = Symbol("setKey"); +var kUnfreeze = Symbol("unfreeze"); +var kValidateAsync = Symbol("validateAsync"); +var kGetCommandInstance = Symbol("getCommandInstance"); +var kGetContext = Symbol("getContext"); +var kGetHasOutput = Symbol("getHasOutput"); +var kGetLoggerInstance = Symbol("getLoggerInstance"); +var kGetParseContext = Symbol("getParseContext"); +var kGetUsageInstance = Symbol("getUsageInstance"); +var kGetValidationInstance = Symbol("getValidationInstance"); +var kHasParseCallback = Symbol("hasParseCallback"); +var kIsGlobalContext = Symbol("isGlobalContext"); +var kPostProcess = Symbol("postProcess"); +var kRebase = Symbol("rebase"); +var kReset = Symbol("reset"); +var kRunYargsParserAndExecuteCommands = Symbol("runYargsParserAndExecuteCommands"); +var kRunValidation = Symbol("runValidation"); +var kSetHasOutput = Symbol("setHasOutput"); +var kTrackManuallySetKeys = Symbol("kTrackManuallySetKeys"); +var DEFAULT_LOCALE = "en_US"; +var YargsInstance = class { + constructor(processArgs = [], cwd, parentRequire, shim3) { + this.customScriptName = false; + this.parsed = false; + _YargsInstance_command.set(this, void 0); + _YargsInstance_cwd.set(this, void 0); + _YargsInstance_context.set(this, { commands: [], fullCommands: [] }); + _YargsInstance_completion.set(this, null); + _YargsInstance_completionCommand.set(this, null); + _YargsInstance_defaultShowHiddenOpt.set(this, "show-hidden"); + _YargsInstance_exitError.set(this, null); + _YargsInstance_detectLocale.set(this, true); + _YargsInstance_emittedWarnings.set(this, {}); + _YargsInstance_exitProcess.set(this, true); + _YargsInstance_frozens.set(this, []); + _YargsInstance_globalMiddleware.set(this, void 0); + _YargsInstance_groups.set(this, {}); + _YargsInstance_hasOutput.set(this, false); + _YargsInstance_helpOpt.set(this, null); + _YargsInstance_isGlobalContext.set(this, true); + _YargsInstance_logger.set(this, void 0); + _YargsInstance_output.set(this, ""); + _YargsInstance_options.set(this, void 0); + _YargsInstance_parentRequire.set(this, void 0); + _YargsInstance_parserConfig.set(this, {}); + _YargsInstance_parseFn.set(this, null); + _YargsInstance_parseContext.set(this, null); + _YargsInstance_pkgs.set(this, {}); + _YargsInstance_preservedGroups.set(this, {}); + _YargsInstance_processArgs.set(this, void 0); + _YargsInstance_recommendCommands.set(this, false); + _YargsInstance_shim.set(this, void 0); + _YargsInstance_strict.set(this, false); + _YargsInstance_strictCommands.set(this, false); + _YargsInstance_strictOptions.set(this, false); + _YargsInstance_usage.set(this, void 0); + _YargsInstance_usageConfig.set(this, {}); + _YargsInstance_versionOpt.set(this, null); + _YargsInstance_validation.set(this, void 0); + __classPrivateFieldSet(this, _YargsInstance_shim, shim3, "f"); + __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, "f"); + __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, "f"); + __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, "f"); + __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), "f"); + this.$0 = this[kGetDollarZero](); + this[kReset](); + __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f"), "f"); + __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f"), "f"); + __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); + __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), "f"); + __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.setLocale(DEFAULT_LOCALE); + } + addHelpOpt(opt, msg) { + const defaultHelpOpt = "help"; + argsert("[string|boolean] [string]", [opt, msg], arguments.length); + if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { + this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); + __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, "f"); + } + if (opt === false && msg === void 0) + return this; + __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === "string" ? opt : defaultHelpOpt, "f"); + this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")); + this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show help")); + return this; + } + help(opt, msg) { + return this.addHelpOpt(opt, msg); + } + addShowHiddenOpt(opt, msg) { + argsert("[string|boolean] [string]", [opt, msg], arguments.length); + if (opt === false && msg === void 0) + return this; + const showHiddenOpt = typeof opt === "string" ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, "f"); + this.boolean(showHiddenOpt); + this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show hidden options")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").showHiddenOpt = showHiddenOpt; + return this; + } + showHidden(opt, msg) { + return this.addShowHiddenOpt(opt, msg); + } + alias(key, value) { + argsert(" [string|array]", [key, value], arguments.length); + this[kPopulateParserHintArrayDictionary](this.alias.bind(this), "alias", key, value); + return this; + } + array(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("array", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + boolean(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("boolean", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + check(f, global3) { + argsert(" [boolean]", [f, global3], arguments.length); + this.middleware((argv, _yargs) => { + return maybeAsyncResult(() => { + return f(argv, _yargs.getOptions()); + }, (result) => { + if (!result) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(__classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__("Argument check failed: %s", f.toString())); + } else if (typeof result === "string" || result instanceof Error) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(result.toString(), result); + } + return argv; + }, (err) => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message ? err.message : err.toString(), err); + return argv; + }); + }, false, global3); + return this; + } + choices(key, value) { + argsert(" [string|array]", [key, value], arguments.length); + this[kPopulateParserHintArrayDictionary](this.choices.bind(this), "choices", key, value); + return this; + } + coerce(keys, value) { + argsert(" [function]", [keys, value], arguments.length); + if (Array.isArray(keys)) { + if (!value) { + throw new YError("coerce callback must be provided"); + } + for (const key of keys) { + this.coerce(key, value); + } + return this; + } else if (typeof keys === "object") { + for (const key of Object.keys(keys)) { + this.coerce(key, keys[key]); + } + return this; + } + if (!value) { + throw new YError("coerce callback must be provided"); + } + const coerceKey = keys; + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[coerceKey] = true; + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addCoerceMiddleware((argv, yargs) => { + var _a3; + const coerceKeyAliases = (_a3 = yargs.getAliases()[coerceKey]) !== null && _a3 !== void 0 ? _a3 : []; + const argvKeys = [coerceKey, ...coerceKeyAliases].filter((key) => Object.prototype.hasOwnProperty.call(argv, key)); + if (argvKeys.length === 0) { + return argv; + } + return maybeAsyncResult(() => { + return value(argv[argvKeys[0]]); + }, (result) => { + argvKeys.forEach((key) => { + argv[key] = result; + }); + return argv; + }, (err) => { + throw new YError(err.message); + }); + }, coerceKey); + return this; + } + conflicts(key1, key2) { + argsert(" [string|array]", [key1, key2], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicts(key1, key2); + return this; + } + config(key = "config", msg, parseFn) { + argsert("[object|string] [string|function] [function]", [key, msg, parseFn], arguments.length); + if (typeof key === "object" && !Array.isArray(key)) { + key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()["deep-merge-config"] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(key); + return this; + } + if (typeof msg === "function") { + parseFn = msg; + msg = void 0; + } + this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Path to JSON config file")); + (Array.isArray(key) ? key : [key]).forEach((k) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f").config[k] = parseFn || true; + }); + return this; + } + completion(cmd, desc, fn) { + argsert("[string] [string|boolean|function] [function]", [cmd, desc, fn], arguments.length); + if (typeof desc === "function") { + fn = desc; + desc = void 0; + } + __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || "completion", "f"); + if (!desc && desc !== false) { + desc = "generate completion script"; + } + this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), desc); + if (fn) + __classPrivateFieldGet(this, _YargsInstance_completion, "f").registerFunction(fn); + return this; + } + command(cmd, description, builder, handler2, middlewares, deprecated) { + argsert(" [string|boolean] [function|object] [function] [array] [boolean|string]", [cmd, description, builder, handler2, middlewares, deprecated], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_command, "f").addHandler(cmd, description, builder, handler2, middlewares, deprecated); + return this; + } + commands(cmd, description, builder, handler2, middlewares, deprecated) { + return this.command(cmd, description, builder, handler2, middlewares, deprecated); + } + commandDir(dir, opts) { + argsert(" [object]", [dir, opts], arguments.length); + const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, "f") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").require; + __classPrivateFieldGet(this, _YargsInstance_command, "f").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, "f").getCallerFile(), opts); + return this; + } + count(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("count", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + default(key, value, defaultDescription) { + argsert(" [*] [string]", [key, value, defaultDescription], arguments.length); + if (defaultDescription) { + assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = defaultDescription; + } + if (typeof value === "function") { + assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key]) + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = __classPrivateFieldGet(this, _YargsInstance_usage, "f").functionDescription(value); + value = value.call(); + } + this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), "default", key, value); + return this; + } + defaults(key, value, defaultDescription) { + return this.default(key, value, defaultDescription); + } + demandCommand(min = 1, max, minMsg, maxMsg) { + argsert("[number] [number|string] [string|null|undefined] [string|null|undefined]", [min, max, minMsg, maxMsg], arguments.length); + if (typeof max !== "number") { + minMsg = max; + max = Infinity; + } + this.global("_", false); + __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands._ = { + min, + max, + minMsg, + maxMsg + }; + return this; + } + demand(keys, max, msg) { + if (Array.isArray(max)) { + max.forEach((key) => { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandOption(key, msg); + }); + max = Infinity; + } else if (typeof max !== "number") { + msg = max; + max = Infinity; + } + if (typeof keys === "number") { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandCommand(keys, max, msg, msg); + } else if (Array.isArray(keys)) { + keys.forEach((key) => { + assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + this.demandOption(key, msg); + }); + } else { + if (typeof msg === "string") { + this.demandOption(keys, msg); + } else if (msg === true || typeof msg === "undefined") { + this.demandOption(keys); + } + } + return this; + } + demandOption(keys, msg) { + argsert(" [string]", [keys, msg], arguments.length); + this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), "demandedOptions", keys, msg); + return this; + } + deprecateOption(option, message) { + argsert(" [string|boolean]", [option, message], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions[option] = message; + return this; + } + describe(keys, description) { + argsert(" [string]", [keys, description], arguments.length); + this[kSetKey](keys, true); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").describe(keys, description); + return this; + } + detectLocale(detect2) { + argsert("", [detect2], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect2, "f"); + return this; + } + env(prefix) { + argsert("[string|boolean]", [prefix], arguments.length); + if (prefix === false) + delete __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; + else + __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix = prefix || ""; + return this; + } + epilogue(msg) { + argsert("", [msg], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").epilog(msg); + return this; + } + epilog(msg) { + return this.epilogue(msg); + } + example(cmd, description) { + argsert(" [string]", [cmd, description], arguments.length); + if (Array.isArray(cmd)) { + cmd.forEach((exampleParams) => this.example(...exampleParams)); + } else { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").example(cmd, description); + } + return this; + } + exit(code, err) { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + __classPrivateFieldSet(this, _YargsInstance_exitError, err, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.exit(code); + } + exitProcess(enabled = true) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, "f"); + return this; + } + fail(f) { + argsert("", [f], arguments.length); + if (typeof f === "boolean" && f !== false) { + throw new YError("Invalid first argument. Expected function or boolean 'false'"); + } + __classPrivateFieldGet(this, _YargsInstance_usage, "f").failFn(f); + return this; + } + getAliases() { + return this.parsed ? this.parsed.aliases : {}; + } + async getCompletion(args, done) { + argsert(" [function]", [args, done], arguments.length); + if (!done) { + return new Promise((resolve5, reject) => { + __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, (err, completions) => { + if (err) + reject(err); + else + resolve5(completions); + }); + }); + } else { + return __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(args, done); + } + } + getDemandedOptions() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedOptions; + } + getDemandedCommands() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").demandedCommands; + } + getDeprecatedOptions() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_options, "f").deprecatedOptions; + } + getDetectLocale() { + return __classPrivateFieldGet(this, _YargsInstance_detectLocale, "f"); + } + getExitProcess() { + return __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"); + } + getGroups() { + return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, "f"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")); + } + getHelp() { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const parse3 = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), void 0, void 0, 0, true); + if (isPromise(parse3)) { + return parse3.then(() => { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); + }); + } + } + const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); + if (isPromise(builderResponse)) { + return builderResponse.then(() => { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f").help(); + }); + } + } + return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, "f").help()); + } + getOptions() { + return __classPrivateFieldGet(this, _YargsInstance_options, "f"); + } + getStrict() { + return __classPrivateFieldGet(this, _YargsInstance_strict, "f"); + } + getStrictCommands() { + return __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"); + } + getStrictOptions() { + return __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"); + } + global(globals, global3) { + argsert(" [boolean]", [globals, global3], arguments.length); + globals = [].concat(globals); + if (global3 !== false) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local.filter((l) => globals.indexOf(l) === -1); + } else { + globals.forEach((g) => { + if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").local.includes(g)) + __classPrivateFieldGet(this, _YargsInstance_options, "f").local.push(g); + }); + } + return this; + } + group(opts, groupName) { + argsert(" ", [opts, groupName], arguments.length); + const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName]; + if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]) { + delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f")[groupName]; + } + const seen = {}; + __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName] = (existing || []).concat(opts).filter((key) => { + if (seen[key]) + return false; + return seen[key] = true; + }); + return this; + } + hide(key) { + argsert("", [key], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_options, "f").hiddenOptions.push(key); + return this; + } + implies(key, value) { + argsert(" [number|string|array]", [key, value], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").implies(key, value); + return this; + } + locale(locale) { + argsert("[string]", [locale], arguments.length); + if (locale === void 0) { + this[kGuessLocale](); + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.getLocale(); + } + __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); + __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.setLocale(locale); + return this; + } + middleware(callback, applyBeforeValidation, global3) { + return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addMiddleware(callback, !!applyBeforeValidation, global3); + } + nargs(key, value) { + argsert(" [number]", [key, value], arguments.length); + this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), "narg", key, value); + return this; + } + normalize(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("normalize", keys); + return this; + } + number(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("number", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + option(key, opt) { + argsert(" [object]", [key, opt], arguments.length); + if (typeof key === "object") { + Object.keys(key).forEach((k) => { + this.options(k, key[k]); + }); + } else { + if (typeof opt !== "object") { + opt = {}; + } + this[kTrackManuallySetKeys](key); + if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && (key === "version" || (opt === null || opt === void 0 ? void 0 : opt.alias) === "version")) { + this[kEmitWarning]([ + '"version" is a reserved word.', + "Please do one of the following:", + '- Disable version with `yargs.version(false)` if using "version" as an option', + "- Use the built-in `yargs.version` method instead (if applicable)", + "- Use a different option key", + "https://yargs.js.org/docs/#api-reference-version" + ].join("\n"), void 0, "versionWarning"); + } + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[key] = true; + if (opt.alias) + this.alias(key, opt.alias); + const deprecate = opt.deprecate || opt.deprecated; + if (deprecate) { + this.deprecateOption(key, deprecate); + } + const demand = opt.demand || opt.required || opt.require; + if (demand) { + this.demand(key, demand); + } + if (opt.demandOption) { + this.demandOption(key, typeof opt.demandOption === "string" ? opt.demandOption : void 0); + } + if (opt.conflicts) { + this.conflicts(key, opt.conflicts); + } + if ("default" in opt) { + this.default(key, opt.default); + } + if (opt.implies !== void 0) { + this.implies(key, opt.implies); + } + if (opt.nargs !== void 0) { + this.nargs(key, opt.nargs); + } + if (opt.config) { + this.config(key, opt.configParser); + } + if (opt.normalize) { + this.normalize(key); + } + if (opt.choices) { + this.choices(key, opt.choices); + } + if (opt.coerce) { + this.coerce(key, opt.coerce); + } + if (opt.group) { + this.group(key, opt.group); + } + if (opt.boolean || opt.type === "boolean") { + this.boolean(key); + if (opt.alias) + this.boolean(opt.alias); + } + if (opt.array || opt.type === "array") { + this.array(key); + if (opt.alias) + this.array(opt.alias); + } + if (opt.number || opt.type === "number") { + this.number(key); + if (opt.alias) + this.number(opt.alias); + } + if (opt.string || opt.type === "string") { + this.string(key); + if (opt.alias) + this.string(opt.alias); + } + if (opt.count || opt.type === "count") { + this.count(key); + } + if (typeof opt.global === "boolean") { + this.global(key, opt.global); + } + if (opt.defaultDescription) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").defaultDescription[key] = opt.defaultDescription; + } + if (opt.skipValidation) { + this.skipValidation(key); + } + const desc = opt.describe || opt.description || opt.desc; + const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions(); + if (!Object.prototype.hasOwnProperty.call(descriptions, key) || typeof desc === "string") { + this.describe(key, desc); + } + if (opt.hidden) { + this.hide(key); + } + if (opt.requiresArg) { + this.requiresArg(key); + } + } + return this; + } + options(key, opt) { + return this.option(key, opt); + } + parse(args, shortCircuit, _parseFn) { + argsert("[string|array] [function|boolean|object] [function]", [args, shortCircuit, _parseFn], arguments.length); + this[kFreeze](); + if (typeof args === "undefined") { + args = __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); + } + if (typeof shortCircuit === "object") { + __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, "f"); + shortCircuit = _parseFn; + } + if (typeof shortCircuit === "function") { + __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, "f"); + shortCircuit = false; + } + if (!shortCircuit) + __classPrivateFieldSet(this, _YargsInstance_processArgs, args, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, "f"); + const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit); + const tmpParsed = this.parsed; + __classPrivateFieldGet(this, _YargsInstance_completion, "f").setParsed(this.parsed); + if (isPromise(parsed)) { + return parsed.then((argv) => { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + return argv; + }).catch((err) => { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) { + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + } + throw err; + }).finally(() => { + this[kUnfreeze](); + this.parsed = tmpParsed; + }); + } else { + if (__classPrivateFieldGet(this, _YargsInstance_parseFn, "f")) + __classPrivateFieldGet(this, _YargsInstance_parseFn, "f").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, "f")); + this[kUnfreeze](); + this.parsed = tmpParsed; + } + return parsed; + } + parseAsync(args, shortCircuit, _parseFn) { + const maybePromise = this.parse(args, shortCircuit, _parseFn); + return !isPromise(maybePromise) ? Promise.resolve(maybePromise) : maybePromise; + } + parseSync(args, shortCircuit, _parseFn) { + const maybePromise = this.parse(args, shortCircuit, _parseFn); + if (isPromise(maybePromise)) { + throw new YError(".parseSync() must not be used with asynchronous builders, handlers, or middleware"); + } + return maybePromise; + } + parserConfiguration(config) { + argsert("", [config], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, "f"); + return this; + } + pkgConf(key, rootPath) { + argsert(" [string]", [key, rootPath], arguments.length); + let conf = null; + const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f")); + if (obj[key] && typeof obj[key] === "object") { + conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, "f"), this[kGetParserConfiguration]()["deep-merge-config"] || false, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []).concat(conf); + } + return this; + } + positional(key, opts) { + argsert(" ", [key, opts], arguments.length); + const supportedOpts = [ + "default", + "defaultDescription", + "implies", + "normalize", + "choices", + "conflicts", + "coerce", + "type", + "describe", + "desc", + "description", + "alias" + ]; + opts = objFilter(opts, (k, v) => { + if (k === "type" && !["string", "number", "boolean"].includes(v)) + return false; + return supportedOpts.includes(k); + }); + const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, "f").fullCommands.length - 1]; + const parseOptions2 = fullCommand ? __classPrivateFieldGet(this, _YargsInstance_command, "f").cmdToParseOptions(fullCommand) : { + array: [], + alias: {}, + default: {}, + demand: {} + }; + objectKeys(parseOptions2).forEach((pk) => { + const parseOption = parseOptions2[pk]; + if (Array.isArray(parseOption)) { + if (parseOption.indexOf(key) !== -1) + opts[pk] = true; + } else { + if (parseOption[key] && !(pk in opts)) + opts[pk] = parseOption[key]; + } + }); + this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, "f").getPositionalGroupName()); + return this.option(key, opts); + } + recommendCommands(recommend = true) { + argsert("[boolean]", [recommend], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, "f"); + return this; + } + required(keys, max, msg) { + return this.demand(keys, max, msg); + } + require(keys, max, msg) { + return this.demand(keys, max, msg); + } + requiresArg(keys) { + argsert(" [number]", [keys], arguments.length); + if (typeof keys === "string" && __classPrivateFieldGet(this, _YargsInstance_options, "f").narg[keys]) { + return this; + } else { + this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), "narg", keys, NaN); + } + return this; + } + showCompletionScript($0, cmd) { + argsert("[string] [string]", [$0, cmd], arguments.length); + $0 = $0 || this.$0; + __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(__classPrivateFieldGet(this, _YargsInstance_completion, "f").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") || "completion")); + return this; + } + showHelp(level) { + argsert("[string|function]", [level], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_usage, "f").hasCachedHelpMessage()) { + if (!this.parsed) { + const parse3 = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, "f"), void 0, void 0, 0, true); + if (isPromise(parse3)) { + parse3.then(() => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + }); + return this; + } + } + const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, "f").runDefaultBuilderOn(this); + if (isPromise(builderResponse)) { + builderResponse.then(() => { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + }); + return this; + } + } + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelp(level); + return this; + } + scriptName(scriptName) { + this.customScriptName = true; + this.$0 = scriptName; + return this; + } + showHelpOnFail(enabled, message) { + argsert("[boolean|string] [string]", [enabled, message], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showHelpOnFail(enabled, message); + return this; + } + showVersion(level) { + argsert("[string|function]", [level], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion(level); + return this; + } + skipValidation(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("skipValidation", keys); + return this; + } + strict(enabled) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, "f"); + return this; + } + strictCommands(enabled) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, "f"); + return this; + } + strictOptions(enabled) { + argsert("[boolean]", [enabled], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, "f"); + return this; + } + string(keys) { + argsert("", [keys], arguments.length); + this[kPopulateParserHintArray]("string", keys); + this[kTrackManuallySetKeys](keys); + return this; + } + terminalWidth() { + argsert([], 0); + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.stdColumns; + } + updateLocale(obj) { + return this.updateStrings(obj); + } + updateStrings(obj) { + argsert("", [obj], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, "f"); + __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.updateLocale(obj); + return this; + } + usage(msg, description, builder, handler2) { + argsert(" [string|boolean] [function|object] [function]", [msg, description, builder, handler2], arguments.length); + if (description !== void 0) { + assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + if ((msg || "").match(/^\$0( |$)/)) { + return this.command(msg, description, builder, handler2); + } else { + throw new YError(".usage() description must start with $0 if being used as alias for .command()"); + } + } else { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").usage(msg); + return this; + } + } + usageConfiguration(config) { + argsert("", [config], arguments.length); + __classPrivateFieldSet(this, _YargsInstance_usageConfig, config, "f"); + return this; + } + version(opt, msg, ver) { + const defaultVersionOpt = "version"; + argsert("[boolean|string] [string] [string]", [opt, msg, ver], arguments.length); + if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")) { + this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(void 0); + __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, "f"); + } + if (arguments.length === 0) { + ver = this[kGuessVersion](); + opt = defaultVersionOpt; + } else if (arguments.length === 1) { + if (opt === false) { + return this; + } + ver = opt; + opt = defaultVersionOpt; + } else if (arguments.length === 2) { + ver = msg; + msg = void 0; + } + __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === "string" ? opt : defaultVersionOpt, "f"); + msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, "f").deferY18nLookup("Show version number"); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").version(ver || void 0); + this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f")); + this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, "f"), msg); + return this; + } + wrap(cols) { + argsert("", [cols], arguments.length); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").wrap(cols); + return this; + } + [(_YargsInstance_command = /* @__PURE__ */ new WeakMap(), _YargsInstance_cwd = /* @__PURE__ */ new WeakMap(), _YargsInstance_context = /* @__PURE__ */ new WeakMap(), _YargsInstance_completion = /* @__PURE__ */ new WeakMap(), _YargsInstance_completionCommand = /* @__PURE__ */ new WeakMap(), _YargsInstance_defaultShowHiddenOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_exitError = /* @__PURE__ */ new WeakMap(), _YargsInstance_detectLocale = /* @__PURE__ */ new WeakMap(), _YargsInstance_emittedWarnings = /* @__PURE__ */ new WeakMap(), _YargsInstance_exitProcess = /* @__PURE__ */ new WeakMap(), _YargsInstance_frozens = /* @__PURE__ */ new WeakMap(), _YargsInstance_globalMiddleware = /* @__PURE__ */ new WeakMap(), _YargsInstance_groups = /* @__PURE__ */ new WeakMap(), _YargsInstance_hasOutput = /* @__PURE__ */ new WeakMap(), _YargsInstance_helpOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_isGlobalContext = /* @__PURE__ */ new WeakMap(), _YargsInstance_logger = /* @__PURE__ */ new WeakMap(), _YargsInstance_output = /* @__PURE__ */ new WeakMap(), _YargsInstance_options = /* @__PURE__ */ new WeakMap(), _YargsInstance_parentRequire = /* @__PURE__ */ new WeakMap(), _YargsInstance_parserConfig = /* @__PURE__ */ new WeakMap(), _YargsInstance_parseFn = /* @__PURE__ */ new WeakMap(), _YargsInstance_parseContext = /* @__PURE__ */ new WeakMap(), _YargsInstance_pkgs = /* @__PURE__ */ new WeakMap(), _YargsInstance_preservedGroups = /* @__PURE__ */ new WeakMap(), _YargsInstance_processArgs = /* @__PURE__ */ new WeakMap(), _YargsInstance_recommendCommands = /* @__PURE__ */ new WeakMap(), _YargsInstance_shim = /* @__PURE__ */ new WeakMap(), _YargsInstance_strict = /* @__PURE__ */ new WeakMap(), _YargsInstance_strictCommands = /* @__PURE__ */ new WeakMap(), _YargsInstance_strictOptions = /* @__PURE__ */ new WeakMap(), _YargsInstance_usage = /* @__PURE__ */ new WeakMap(), _YargsInstance_usageConfig = /* @__PURE__ */ new WeakMap(), _YargsInstance_versionOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_validation = /* @__PURE__ */ new WeakMap(), kCopyDoubleDash)](argv) { + if (!argv._ || !argv["--"]) + return argv; + argv._.push.apply(argv._, argv["--"]); + try { + delete argv["--"]; + } catch (_err) { + } + return argv; + } + [kCreateLogger]() { + return { + log: (...args) => { + if (!this[kHasParseCallback]()) + console.log(...args); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + "\n", "f"); + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(" "), "f"); + }, + error: (...args) => { + if (!this[kHasParseCallback]()) + console.error(...args); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + if (__classPrivateFieldGet(this, _YargsInstance_output, "f").length) + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + "\n", "f"); + __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, "f") + args.join(" "), "f"); + } + }; + } + [kDeleteFromParserHintObject](optionKey) { + objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, "f")).forEach((hintKey) => { + if (/* @__PURE__ */ ((key) => key === "configObjects")(hintKey)) + return; + const hint = __classPrivateFieldGet(this, _YargsInstance_options, "f")[hintKey]; + if (Array.isArray(hint)) { + if (hint.includes(optionKey)) + hint.splice(hint.indexOf(optionKey), 1); + } else if (typeof hint === "object") { + delete hint[optionKey]; + } + }); + delete __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions()[optionKey]; + } + [kEmitWarning](warning, type, deduplicationId) { + if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId]) { + __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.emitWarning(warning, type); + __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, "f")[deduplicationId] = true; + } + } + [kFreeze]() { + __classPrivateFieldGet(this, _YargsInstance_frozens, "f").push({ + options: __classPrivateFieldGet(this, _YargsInstance_options, "f"), + configObjects: __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects.slice(0), + exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, "f"), + groups: __classPrivateFieldGet(this, _YargsInstance_groups, "f"), + strict: __classPrivateFieldGet(this, _YargsInstance_strict, "f"), + strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, "f"), + strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f"), + completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f"), + output: __classPrivateFieldGet(this, _YargsInstance_output, "f"), + exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, "f"), + hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"), + parsed: this.parsed, + parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, "f"), + parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") + }); + __classPrivateFieldGet(this, _YargsInstance_usage, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_command, "f").freeze(); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").freeze(); + } + [kGetDollarZero]() { + let $0 = ""; + let default$0; + if (/\b(node|iojs|electron)(\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv()[0])) { + default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(1, 2); + } else { + default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").process.argv().slice(0, 1); + } + $0 = default$0.map((x) => { + const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, "f"), x); + return x.match(/^(\/|([a-zA-Z]:)?\\)/) && b.length < x.length ? b : x; + }).join(" ").trim(); + if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_") && __classPrivateFieldGet(this, _YargsInstance_shim, "f").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_")) { + $0 = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("_").replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, "f").process.execPath())}/`, ""); + } + return $0; + } + [kGetParserConfiguration]() { + return __classPrivateFieldGet(this, _YargsInstance_parserConfig, "f"); + } + [kGetUsageConfiguration]() { + return __classPrivateFieldGet(this, _YargsInstance_usageConfig, "f"); + } + [kGuessLocale]() { + if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, "f")) + return; + const locale = __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LC_ALL") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LC_MESSAGES") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LANG") || __classPrivateFieldGet(this, _YargsInstance_shim, "f").getEnv("LANGUAGE") || "en_US"; + this.locale(locale.replace(/[.:].*/, "")); + } + [kGuessVersion]() { + const obj = this[kPkgUp](); + return obj.version || "unknown"; + } + [kParsePositionalNumbers](argv) { + const args = argv["--"] ? argv["--"] : argv._; + for (let i = 0, arg; (arg = args[i]) !== void 0; i++) { + if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.looksLikeNumber(arg) && Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) { + args[i] = Number(arg); + } + } + return argv; + } + [kPkgUp](rootPath) { + const npath = rootPath || "*"; + if (__classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]) + return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; + let obj = {}; + try { + let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, "f").mainFilename; + if (__classPrivateFieldGet(this, _YargsInstance_shim, "f").path.extname(startDir)) { + startDir = __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.dirname(startDir); + } + const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, "f").findUp(startDir, (dir, names) => { + if (names.includes("package.json")) { + return "package.json"; + } else { + return void 0; + } + }); + assertNotStrictEqual(pkgJsonPath, void 0, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, "f").readFileSync(pkgJsonPath, "utf8")); + } catch (_noop) { + } + __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath] = obj || {}; + return __classPrivateFieldGet(this, _YargsInstance_pkgs, "f")[npath]; + } + [kPopulateParserHintArray](type, keys) { + keys = [].concat(keys); + keys.forEach((key) => { + key = this[kSanitizeKey](key); + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type].push(key); + }); + } + [kPopulateParserHintSingleValueDictionary](builder, type, key, value) { + this[kPopulateParserHintDictionary](builder, type, key, value, (type2, key2, value2) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] = value2; + }); + } + [kPopulateParserHintArrayDictionary](builder, type, key, value) { + this[kPopulateParserHintDictionary](builder, type, key, value, (type2, key2, value2) => { + __classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[type2][key2] || []).concat(value2); + }); + } + [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) { + if (Array.isArray(key)) { + key.forEach((k) => { + builder(k, value); + }); + } else if (/* @__PURE__ */ ((key2) => typeof key2 === "object")(key)) { + for (const k of objectKeys(key)) { + builder(k, key[k]); + } + } else { + singleKeyHandler(type, this[kSanitizeKey](key), value); + } + } + [kSanitizeKey](key) { + if (key === "__proto__") + return "___proto___"; + return key; + } + [kSetKey](key, set2) { + this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), "key", key, set2); + return this; + } + [kUnfreeze]() { + var _a3, _b2, _c2, _d, _e, _f, _g, _h, _j, _k, _l, _m; + const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, "f").pop(); + assertNotStrictEqual(frozen, void 0, __classPrivateFieldGet(this, _YargsInstance_shim, "f")); + let configObjects; + _a3 = this, _b2 = this, _c2 = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, { + options: { set value(_o) { + __classPrivateFieldSet(_a3, _YargsInstance_options, _o, "f"); + } }.value, + configObjects, + exitProcess: { set value(_o) { + __classPrivateFieldSet(_b2, _YargsInstance_exitProcess, _o, "f"); + } }.value, + groups: { set value(_o) { + __classPrivateFieldSet(_c2, _YargsInstance_groups, _o, "f"); + } }.value, + output: { set value(_o) { + __classPrivateFieldSet(_d, _YargsInstance_output, _o, "f"); + } }.value, + exitError: { set value(_o) { + __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, "f"); + } }.value, + hasOutput: { set value(_o) { + __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, "f"); + } }.value, + parsed: this.parsed, + strict: { set value(_o) { + __classPrivateFieldSet(_g, _YargsInstance_strict, _o, "f"); + } }.value, + strictCommands: { set value(_o) { + __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, "f"); + } }.value, + strictOptions: { set value(_o) { + __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, "f"); + } }.value, + completionCommand: { set value(_o) { + __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, "f"); + } }.value, + parseFn: { set value(_o) { + __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, "f"); + } }.value, + parseContext: { set value(_o) { + __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, "f"); + } }.value + } = frozen; + __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects = configObjects; + __classPrivateFieldGet(this, _YargsInstance_usage, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_command, "f").unfreeze(); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").unfreeze(); + } + [kValidateAsync](validation2, argv) { + return maybeAsyncResult(argv, (result) => { + validation2(result); + return result; + }); + } + getInternalMethods() { + return { + getCommandInstance: this[kGetCommandInstance].bind(this), + getContext: this[kGetContext].bind(this), + getHasOutput: this[kGetHasOutput].bind(this), + getLoggerInstance: this[kGetLoggerInstance].bind(this), + getParseContext: this[kGetParseContext].bind(this), + getParserConfiguration: this[kGetParserConfiguration].bind(this), + getUsageConfiguration: this[kGetUsageConfiguration].bind(this), + getUsageInstance: this[kGetUsageInstance].bind(this), + getValidationInstance: this[kGetValidationInstance].bind(this), + hasParseCallback: this[kHasParseCallback].bind(this), + isGlobalContext: this[kIsGlobalContext].bind(this), + postProcess: this[kPostProcess].bind(this), + reset: this[kReset].bind(this), + runValidation: this[kRunValidation].bind(this), + runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this), + setHasOutput: this[kSetHasOutput].bind(this) + }; + } + [kGetCommandInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_command, "f"); + } + [kGetContext]() { + return __classPrivateFieldGet(this, _YargsInstance_context, "f"); + } + [kGetHasOutput]() { + return __classPrivateFieldGet(this, _YargsInstance_hasOutput, "f"); + } + [kGetLoggerInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_logger, "f"); + } + [kGetParseContext]() { + return __classPrivateFieldGet(this, _YargsInstance_parseContext, "f") || {}; + } + [kGetUsageInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_usage, "f"); + } + [kGetValidationInstance]() { + return __classPrivateFieldGet(this, _YargsInstance_validation, "f"); + } + [kHasParseCallback]() { + return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, "f"); + } + [kIsGlobalContext]() { + return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, "f"); + } + [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) { + if (calledFromCommand) + return argv; + if (isPromise(argv)) + return argv; + if (!populateDoubleDash) { + argv = this[kCopyDoubleDash](argv); + } + const parsePositionalNumbers = this[kGetParserConfiguration]()["parse-positional-numbers"] || this[kGetParserConfiguration]()["parse-positional-numbers"] === void 0; + if (parsePositionalNumbers) { + argv = this[kParsePositionalNumbers](argv); + } + if (runGlobalMiddleware) { + argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); + } + return argv; + } + [kReset](aliases = {}) { + __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, "f") || {}, "f"); + const tmpOptions = {}; + tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local || []; + tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, "f").configObjects || []; + const localLookup = {}; + tmpOptions.local.forEach((l) => { + localLookup[l] = true; + (aliases[l] || []).forEach((a) => { + localLookup[a] = true; + }); + }); + Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, "f"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, "f")).reduce((acc, groupName) => { + const keys = __classPrivateFieldGet(this, _YargsInstance_groups, "f")[groupName].filter((key) => !(key in localLookup)); + if (keys.length > 0) { + acc[groupName] = keys; + } + return acc; + }, {})); + __classPrivateFieldSet(this, _YargsInstance_groups, {}, "f"); + const arrayOptions = [ + "array", + "boolean", + "string", + "skipValidation", + "count", + "normalize", + "number", + "hiddenOptions" + ]; + const objectOptions = [ + "narg", + "key", + "alias", + "default", + "defaultDescription", + "config", + "choices", + "demandedOptions", + "demandedCommands", + "deprecatedOptions" + ]; + arrayOptions.forEach((k) => { + tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, "f")[k] || []).filter((k2) => !localLookup[k2]); + }); + objectOptions.forEach((k) => { + tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, "f")[k], (k2) => !localLookup[k2]); + }); + tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, "f").envPrefix; + __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, "f"); + __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, "f") ? __classPrivateFieldGet(this, _YargsInstance_usage, "f").reset(localLookup) : usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, "f") ? __classPrivateFieldGet(this, _YargsInstance_validation, "f").reset(localLookup) : validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, "f") ? __classPrivateFieldGet(this, _YargsInstance_command, "f").reset() : command(__classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_validation, "f"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + if (!__classPrivateFieldGet(this, _YargsInstance_completion, "f")) + __classPrivateFieldSet(this, _YargsInstance_completion, completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, "f"), __classPrivateFieldGet(this, _YargsInstance_command, "f"), __classPrivateFieldGet(this, _YargsInstance_shim, "f")), "f"); + __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").reset(); + __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, "f"); + __classPrivateFieldSet(this, _YargsInstance_output, "", "f"); + __classPrivateFieldSet(this, _YargsInstance_exitError, null, "f"); + __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, "f"); + this.parsed = false; + return this; + } + [kRebase](base, dir) { + return __classPrivateFieldGet(this, _YargsInstance_shim, "f").path.relative(base, dir); + } + [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) { + var _a3, _b2, _c2, _d; + let skipValidation = !!calledFromCommand || helpOnly; + args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, "f"); + __classPrivateFieldGet(this, _YargsInstance_options, "f").__ = __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.__; + __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration = this[kGetParserConfiguration](); + const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, "f").configuration["populate--"]; + const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f").configuration, { + "populate--": true + }); + const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, "f").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, "f"), { + configuration: { "parse-positional-numbers": false, ...config } + })); + const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, "f")); + let argvPromise = void 0; + const aliases = parsed.aliases; + let helpOptSet = false; + let versionOptSet = false; + Object.keys(argv).forEach((key) => { + if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, "f") && argv[key]) { + helpOptSet = true; + } else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, "f") && argv[key]) { + versionOptSet = true; + } + }); + argv.$0 = this.$0; + this.parsed = parsed; + if (commandIndex === 0) { + __classPrivateFieldGet(this, _YargsInstance_usage, "f").clearCachedHelpMessage(); + } + try { + this[kGuessLocale](); + if (shortCircuit) { + return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false); + } + if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")) { + const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")].concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, "f")] || []).filter((k) => k.length > 1); + if (helpCmds.includes("" + argv._[argv._.length - 1])) { + argv._.pop(); + helpOptSet = true; + } + } + __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, "f"); + const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, "f").getCommands(); + const requestCompletions = ((_a3 = __classPrivateFieldGet(this, _YargsInstance_completion, "f")) === null || _a3 === void 0 ? void 0 : _a3.completionKey) ? [ + (_b2 = __classPrivateFieldGet(this, _YargsInstance_completion, "f")) === null || _b2 === void 0 ? void 0 : _b2.completionKey, + ...(_d = this.getAliases()[(_c2 = __classPrivateFieldGet(this, _YargsInstance_completion, "f")) === null || _c2 === void 0 ? void 0 : _c2.completionKey]) !== null && _d !== void 0 ? _d : [] + ].some((key) => Object.prototype.hasOwnProperty.call(argv, key)) : false; + const skipRecommendation = helpOptSet || requestCompletions || helpOnly; + if (argv._.length) { + if (handlerKeys.length) { + let firstUnknownCommand; + for (let i = commandIndex || 0, cmd; argv._[i] !== void 0; i++) { + cmd = String(argv._[i]); + if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { + const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly); + return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); + } else if (!firstUnknownCommand && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) { + firstUnknownCommand = cmd; + break; + } + } + if (!__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && __classPrivateFieldGet(this, _YargsInstance_recommendCommands, "f") && firstUnknownCommand && !skipRecommendation) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").recommendCommands(firstUnknownCommand, handlerKeys); + } + } + if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f") && argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, "f")) && !requestCompletions) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + this.showCompletionScript(); + this.exit(0); + } + } + if (__classPrivateFieldGet(this, _YargsInstance_command, "f").hasDefaultCommand() && !skipRecommendation) { + const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, "f").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly); + return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false); + } + if (requestCompletions) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + args = [].concat(args); + const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, "f").completionKey}`) + 1); + __classPrivateFieldGet(this, _YargsInstance_completion, "f").getCompletion(completionArgs, (err, completions) => { + if (err) + throw new YError(err.message); + (completions || []).forEach((completion2) => { + __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(completion2); + }); + this.exit(0); + }); + return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false); + } + if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, "f")) { + if (helpOptSet) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + skipValidation = true; + this.showHelp((message) => { + __classPrivateFieldGet(this, _YargsInstance_logger, "f").log(message); + this.exit(0); + }); + } else if (versionOptSet) { + if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, "f")) + setBlocking(true); + skipValidation = true; + __classPrivateFieldGet(this, _YargsInstance_usage, "f").showVersion("log"); + this.exit(0); + } + } + if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.length > 0) { + skipValidation = Object.keys(argv).some((key) => __classPrivateFieldGet(this, _YargsInstance_options, "f").skipValidation.indexOf(key) >= 0 && argv[key] === true); + } + if (!skipValidation) { + if (parsed.error) + throw new YError(parsed.error.message); + if (!requestCompletions) { + const validation2 = this[kRunValidation](aliases, {}, parsed.error); + if (!calledFromCommand) { + argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), true); + } + argvPromise = this[kValidateAsync](validation2, argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv); + if (isPromise(argvPromise) && !calledFromCommand) { + argvPromise = argvPromise.then(() => { + return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").getMiddleware(), false); + }); + } + } + } + } catch (err) { + if (err instanceof YError) + __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message, err); + else + throw err; + } + return this[kPostProcess](argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true); + } + [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) { + const demandedOptions = { ...this.getDemandedOptions() }; + return (argv) => { + if (parseErrors) + throw new YError(parseErrors.message); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").nonOptionCount(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").requiredArguments(argv, demandedOptions); + let failedStrictCommands = false; + if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, "f")) { + failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownCommands(argv); + } + if (__classPrivateFieldGet(this, _YargsInstance_strict, "f") && !failedStrictCommands) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand); + } else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, "f")) { + __classPrivateFieldGet(this, _YargsInstance_validation, "f").unknownArguments(argv, aliases, {}, false, false); + } + __classPrivateFieldGet(this, _YargsInstance_validation, "f").limitedChoices(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").implications(argv); + __classPrivateFieldGet(this, _YargsInstance_validation, "f").conflicting(argv); + }; + } + [kSetHasOutput]() { + __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, "f"); + } + [kTrackManuallySetKeys](keys) { + if (typeof keys === "string") { + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true; + } else { + for (const k of keys) { + __classPrivateFieldGet(this, _YargsInstance_options, "f").key[k] = true; + } + } + } +}; +function isYargsInstance(y) { + return !!y && typeof y.getInternalMethods === "function"; +} + +// +var Yargs = YargsFactory(esm_default); + +// ng-dev/utils/logging.js +var LogLevel; +(function(LogLevel2) { + LogLevel2[LogLevel2["SILENT"] = 0] = "SILENT"; + LogLevel2[LogLevel2["ERROR"] = 1] = "ERROR"; + LogLevel2[LogLevel2["WARN"] = 2] = "WARN"; + LogLevel2[LogLevel2["LOG"] = 3] = "LOG"; + LogLevel2[LogLevel2["INFO"] = 4] = "INFO"; + LogLevel2[LogLevel2["DEBUG"] = 5] = "DEBUG"; +})(LogLevel || (LogLevel = {})); +var DEFAULT_LOG_LEVEL = LogLevel.INFO; +var red = styleText.bind(null, "red"); +var green = styleText.bind(null, "green"); +var yellow = styleText.bind(null, "yellow"); +var bold = styleText.bind(null, "bold"); +var blue = styleText.bind(null, "blue"); +var underline = styleText.bind(null, "underline"); +var Log = class { +}; +Log.info = buildLogLevelFunction(() => console.info, LogLevel.INFO, null); +Log.error = buildLogLevelFunction(() => console.error, LogLevel.ERROR, red); +Log.debug = buildLogLevelFunction(() => console.debug, LogLevel.DEBUG, null); +Log.log = buildLogLevelFunction(() => console.log, LogLevel.LOG, null); +Log.warn = buildLogLevelFunction(() => console.warn, LogLevel.WARN, yellow); +function buildLogLevelFunction(loadCommand, level, defaultColor) { + return (...values) => { + runConsoleCommand(loadCommand, level, ...values.map((v) => typeof v === "string" && defaultColor ? defaultColor(v) : v)); + }; +} +function runConsoleCommand(loadCommand, logLevel, ...text) { + if (getLogLevel() >= logLevel) { + loadCommand()(...text); + } + appendToLogFile(logLevel, ...text); +} +function getLogLevel() { + const logLevel = Object.keys(LogLevel).indexOf((process.env[`LOG_LEVEL`] || "").toUpperCase()); + if (logLevel === -1) { + return DEFAULT_LOG_LEVEL; + } + return logLevel; +} +var LOG_LEVEL_COLUMNS = 7; +var logStream = void 0; +function appendToLogFile(logLevel, ...text) { + if (logStream === void 0) { + return; + } + if (logLevel === void 0) { + logStream.write(text.join(" ") + "\n"); + return; + } + const logLevelText = `${LogLevel[logLevel]}:`.padEnd(LOG_LEVEL_COLUMNS); + logStream.write(stripVTControlCharacters(text.join(" ").split("\n").map((l) => `${logLevelText} ${l} +`).join(""))); +} + +// ng-dev/utils/config-cache.js +var cachedConfig = null; +function setCachedConfig(config) { + cachedConfig = config; +} +function getCachedConfig() { + return cachedConfig; +} + +// ng-dev/utils/config.js +import { pathToFileURL } from "url"; +var CONFIG_FILE_PATH_MATCHER = ".ng-dev/config.mjs"; +async function getConfig(baseDirOrAssertions, returnNullOnConfigNotFound = false) { + let cachedConfig2 = getCachedConfig(); + if (cachedConfig2 === null) { + let baseDir; + if (typeof baseDirOrAssertions === "string") { + baseDir = baseDirOrAssertions; + } else { + baseDir = determineRepoBaseDirFromCwd(); + } + const configPath = join2(baseDir, CONFIG_FILE_PATH_MATCHER); + cachedConfig2 = await readConfigFile(configPath, returnNullOnConfigNotFound); + if (returnNullOnConfigNotFound && !cachedConfig2) { + return null; + } + setCachedConfig(cachedConfig2); + } + if (Array.isArray(baseDirOrAssertions)) { + for (const assertion of baseDirOrAssertions) { + assertion(cachedConfig2); + } + } + return { ...cachedConfig2, __isNgDevConfigObject: true }; +} +var ConfigValidationError = class extends Error { + constructor(message, errors = []) { + super(message); + this.errors = errors; + } +}; +function assertValidGithubConfig(config) { + const errors = []; + if (config.github === void 0) { + errors.push(`Github repository not configured. Set the "github" option.`); + } else { + if (config.github.name === void 0) { + errors.push(`"github.name" is not defined`); + } + if (config.github.owner === void 0) { + errors.push(`"github.owner" is not defined`); + } + if (config.github.mergeMode === void 0) { + errors.push(`"github.mergeMode" is not defined`); + } + } + if (errors.length) { + throw new ConfigValidationError("Invalid `github` configuration", errors); + } +} +async function readConfigFile(configPath, returnNullOnConfigNotFound = false) { + try { + return await import(pathToFileURL(configPath).toString()); + } catch (e) { + if (returnNullOnConfigNotFound) { + Log.debug(`Could not read configuration file at ${configPath}, returning empty object instead.`); + Log.debug(e); + return null; + } + Log.error(`Could not read configuration file at ${configPath}.`); + Log.error(e); + process.exit(1); + } +} + +// +var GraphQLType; +(function(GraphQLType2) { + GraphQLType2[GraphQLType2["SCALAR"] = 0] = "SCALAR"; + GraphQLType2[GraphQLType2["INLINE_FRAGMENT"] = 1] = "INLINE_FRAGMENT"; + GraphQLType2[GraphQLType2["FRAGMENT"] = 2] = "FRAGMENT"; +})(GraphQLType || (GraphQLType = {})); +var typeSymbol = Symbol("GraphQL Type"); +var paramsSymbol = Symbol("GraphQL Params"); +function isInlineFragmentObject(value) { + return typeof value === "object" && value !== null && value[typeSymbol] === GraphQLType.INLINE_FRAGMENT; +} +function isFragmentObject(value) { + return typeof value === "object" && value !== null && value[typeSymbol] === GraphQLType.FRAGMENT; +} +function isScalarObject(value) { + return typeof value === "object" && value !== null && value[typeSymbol] === GraphQLType.SCALAR; +} +function renderName(name) { + return name === void 0 ? "" : name; +} +function renderParams(params2, brackets, array) { + if (brackets === void 0) { + brackets = true; + } + if (array === void 0) { + array = false; + } + if (!params2) { + return ""; + } + var builder = []; + for (var _i = 0, _a3 = Object.entries(params2); _i < _a3.length; _i++) { + var _b2 = _a3[_i], key = _b2[0], value = _b2[1]; + var params_1 = void 0; + if (value === null) { + params_1 = "null"; + } else if (Array.isArray(value)) { + params_1 = "[".concat(renderParams(value, false, true), "]"); + } else if (typeof value === "object") { + params_1 = "{".concat(renderParams(value, false), "}"); + } else { + params_1 = "".concat(value); + } + builder.push(array ? "".concat(params_1) : "".concat(key, ":").concat(params_1)); + } + var built = builder.join(","); + if (brackets) { + built = "(".concat(built, ")"); + } + return built; +} +function renderScalar(name, params2) { + return renderName(name) + renderParams(params2); +} +function renderInlineFragment(fragment, context3) { + return "...on ".concat(fragment.typeName).concat(renderObject(void 0, fragment.internal, context3)); +} +function renderFragment(fragment, context3) { + return "fragment ".concat(fragment.name, " on ").concat(fragment.typeName).concat(renderObject(void 0, fragment.internal, context3)); +} +function renderArray(name, arr, context3) { + var first = arr[0]; + if (first === void 0 || first === null) { + throw new Error("Cannot render array with no first value"); + } + first[paramsSymbol] = arr[paramsSymbol]; + return renderType(name, first, context3); +} +function renderType(name, value, context3) { + switch (typeof value) { + case "bigint": + case "boolean": + case "number": + case "string": + throw new Error("Rendering type ".concat(typeof value, " directly is disallowed")); + case "object": + if (value === null) { + throw new Error("Cannot render null"); + } + if (isScalarObject(value)) { + return "".concat(renderScalar(name, value[paramsSymbol]), " "); + } else if (Array.isArray(value)) { + return renderArray(name, value, context3); + } else { + return renderObject(name, value, context3); + } + case "undefined": + return ""; + default: + throw new Error("Cannot render type ".concat(typeof value)); + } +} +function renderObject(name, obj, context3) { + var fields = []; + for (var _i = 0, _a3 = Object.entries(obj); _i < _a3.length; _i++) { + var _b2 = _a3[_i], key = _b2[0], value = _b2[1]; + fields.push(renderType(key, value, context3)); + } + for (var _c2 = 0, _d = Object.getOwnPropertySymbols(obj); _c2 < _d.length; _c2++) { + var sym = _d[_c2]; + var value = obj[sym]; + if (isInlineFragmentObject(value)) { + fields.push(renderInlineFragment(value, context3)); + } else if (isFragmentObject(value)) { + context3.fragments.set(sym, value); + fields.push("...".concat(value.name)); + } + } + if (fields.length === 0) { + throw new Error("Object cannot have no fields"); + } + return "".concat(renderName(name)).concat(renderParams(obj[paramsSymbol]), "{").concat(fields.join("").trim(), "}"); +} +function render(value) { + var context3 = { + fragments: /* @__PURE__ */ new Map() + }; + var rend = renderObject(void 0, value, context3); + var rendered = /* @__PURE__ */ new Map(); + var executingContext = context3; + var currentContext = { + // The current context for execution. + fragments: /* @__PURE__ */ new Map() + }; + while (executingContext.fragments.size > 0) { + for (var _i = 0, _a3 = Array.from(executingContext.fragments.entries()); _i < _a3.length; _i++) { + var _b2 = _a3[_i], sym = _b2[0], fragment = _b2[1]; + if (!rendered.has(sym)) { + rendered.set(sym, renderFragment(fragment, currentContext)); + } + } + executingContext = currentContext; + currentContext = { + // Reset current context. + fragments: /* @__PURE__ */ new Map() + }; + } + return rend + Array.from(rendered.values()).join(""); +} +function createOperate(operateType) { + function operate(opNameOrQueryObject, queryObject) { + if (typeof opNameOrQueryObject === "string") { + if (!queryObject) { + throw new Error("queryObject is not set"); + } + return { + toString: function() { + return "".concat(operateType, " ").concat(opNameOrQueryObject).concat(render(queryObject)); + } + }; + } + return { + toString: function() { + return "".concat(operateType).concat(render(opNameOrQueryObject)); + } + }; + } + return operate; +} +var query = createOperate("query"); +var mutation = createOperate("mutation"); +var subscription = createOperate("subscription"); +function params(params2, input) { + if (typeof params2 !== "object") { + throw new Error("Params have to be an object"); + } + if (typeof input !== "object") { + throw new Error("Cannot apply params to JS ".concat(typeof params2)); + } + input[paramsSymbol] = params2; + return input; +} +function scalarType() { + var _a3; + var scalar = (_a3 = {}, _a3[typeSymbol] = GraphQLType.SCALAR, _a3); + return scalar; +} +var types = ( + /** @class */ + function() { + function types3() { + } + Object.defineProperty(types3, "number", { + get: function() { + return scalarType(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(types3, "string", { + get: function() { + return scalarType(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(types3, "boolean", { + get: function() { + return scalarType(); + }, + enumerable: false, + configurable: true + }); + types3.constant = function(_c2) { + return scalarType(); + }; + types3.oneOf = function(_e) { + return scalarType(); + }; + types3.custom = function() { + return scalarType(); + }; + types3.optional = types3; + return types3; + }() +); + +// ng-dev/utils/git/graphql-queries.js +var findOwnedForksOfRepoQuery = params({ + $owner: "String!", + $name: "String!" +}, { + repository: params({ owner: "$owner", name: "$name" }, { + forks: params({ affiliations: "OWNER", first: 1, orderBy: { field: "NAME", direction: "ASC" } }, { + nodes: [ + { + owner: { + login: types.string + }, + name: types.string + } + ] + }) + }) +}); + +// ng-dev/utils/dry-run.js +function isDryRun() { + return process.env["DRY_RUN"] !== void 0; +} +var DryRunError = class extends Error { + constructor() { + super("Cannot call this function in dryRun mode."); + } +}; + +// ng-dev/utils/git/git-client.js +import { spawnSync } from "child_process"; + +// ng-dev/utils/git/github.js +async function invokeWithRetry(fn, retries = 3, delay = 1e3) { + let attempt = 0; + while (attempt < retries) { + try { + return await fn(); + } catch (e) { + attempt++; + if (attempt >= retries) { + throw e; + } + if (isGithubApiError(e) && e.status < 500) { + throw e; + } + if (e instanceof GraphqlResponseError) { + if (!e.errors) { + throw e; + } + if (e.errors.every((err) => ["NOT_FOUND", "FORBIDDEN", "BAD_USER_INPUT", "UNAUTHENTICATED"].includes(err.type))) { + throw e; + } + } + Log.warn(`GitHub API call failed (attempt ${attempt}/${retries}). Retrying in ${delay}ms...`); + await new Promise((resolve5) => setTimeout(resolve5, delay)); + } + } + throw new Error("Unreachable"); +} +function createRetryProxy(target) { + return new Proxy(target, { + get(targetObj, prop, receiver) { + const value = Reflect.get(targetObj, prop, receiver); + if (typeof value === "function") { + return new Proxy(value, { + apply(targetFn, thisArg, argArray) { + return invokeWithRetry(() => targetFn.apply(targetObj, argArray)); + } + }); + } + if (typeof value === "object" && value !== null) { + return createRetryProxy(value); + } + return value; + }, + apply(targetFn, thisArg, argArray) { + return invokeWithRetry(() => targetFn.apply(thisArg, argArray)); + } + }); +} +var GithubClient = class { + constructor(_octokitOptions) { + this._octokitOptions = _octokitOptions; + this._octokit = new Octokit2({ + log: { + debug: Log.debug, + error: Log.debug, + info: Log.debug, + warn: Log.debug + }, + ...this._octokitOptions + }); + this.pulls = createRetryProxy(this._octokit.pulls); + this.orgs = createRetryProxy(this._octokit.orgs); + this.repos = createRetryProxy(this._octokit.repos); + this.issues = createRetryProxy(this._octokit.issues); + this.git = createRetryProxy(this._octokit.git); + this.rateLimit = createRetryProxy(this._octokit.rateLimit); + this.teams = createRetryProxy(this._octokit.teams); + this.search = createRetryProxy(this._octokit.search); + this.rest = createRetryProxy(this._octokit.rest); + this.paginate = createRetryProxy(this._octokit.paginate); + this.checks = createRetryProxy(this._octokit.checks); + this.users = createRetryProxy(this._octokit.users); + } +}; +var AuthenticatedGithubClient = class extends GithubClient { + constructor(_token) { + super({ auth: _token }); + this._token = _token; + this._graphql = this._octokit.graphql.defaults({ + headers: { authorization: `token ${this._token}` } + }); + } + async graphql(queryObject, params2 = {}) { + return invokeWithRetry(async () => { + return await this._graphql(query(queryObject).toString(), params2); + }); + } +}; +function isGithubApiError(obj) { + return obj instanceof Error && obj.constructor.name === "RequestError" && obj.request !== void 0; +} + +// ng-dev/utils/git/github-urls.js +import { URL as URL2 } from "url"; +var GITHUB_TOKEN_SETTINGS_URL = "https://github.com/settings/tokens"; +var GITHUB_TOKEN_GENERATE_URL = "https://github.com/settings/tokens/new"; +function addTokenToGitHttpsUrl(githubHttpsUrl, token) { + const url = new URL2(githubHttpsUrl); + url.password = token; + url.username = "x-access-token"; + return url.href; +} +function getRepositoryGitUrl(config, githubToken) { + if (config.useSsh) { + return `git@github.com:${config.owner}/${config.name}.git`; + } + const baseHttpUrl = `https://github.com/${config.owner}/${config.name}.git`; + if (githubToken !== void 0) { + return addTokenToGitHttpsUrl(baseHttpUrl, githubToken); + } + return baseHttpUrl; +} +function getFileContentsUrl(client, ref, relativeFilePath) { + const { owner, repo } = client.remoteParams; + return `https://github.com/${owner}/${repo}/blob/${ref}/${relativeFilePath}`; +} + +// ng-dev/utils/git/git-client.js +var GitCommandError = class extends Error { + constructor(client, unsanitizedArgs) { + super(`Command failed: git ${client.sanitizeConsoleOutput(unsanitizedArgs.join(" "))}`); + } +}; +var GitClient = class _GitClient { + constructor(config, baseDir = determineRepoBaseDirFromCwd()) { + this.baseDir = baseDir; + this.github = new GithubClient(); + this.gitBinPath = "git"; + this.config = config; + this.remoteConfig = config.github; + this.remoteParams = { owner: config.github.owner, repo: config.github.name }; + this.mainBranchName = config.github.mainBranchName; + } + run(args, options) { + const result = this.runGraceful(args, options); + if (result.status !== 0) { + throw new GitCommandError(this, args); + } + return result; + } + runGraceful(args, options = {}) { + const gitCommand = args[0]; + if (isDryRun() && gitCommand === "push") { + Log.debug(`"git push" is not able to be run in dryRun mode.`); + throw new DryRunError(); + } + args = ["-c", "credential.helper=", ...args]; + Log.debug("Executing: git", this.sanitizeConsoleOutput(args.join(" "))); + const result = spawnSync(this.gitBinPath, args, { + cwd: this.baseDir, + stdio: "pipe", + ...options, + encoding: "utf8" + }); + Log.debug(`Status: ${result.status}, Error: ${!!result.error}, Signal: ${result.signal}`); + if (result.status !== 0 && result.stderr !== null && result.stderr !== void 0) { + process.stderr.write(this.sanitizeConsoleOutput(result.stderr)); + } + Log.debug("Stdout:", result.stdout ? this.sanitizeConsoleOutput(result.stdout) : result.stdout); + Log.debug("Stderr:", result.stderr ? this.sanitizeConsoleOutput(result.stderr) : result.stderr); + if (result.error !== void 0) { + Log.debug("Process Error:", this.sanitizeConsoleOutput(result.error.message)); + if (result.error.stack) { + Log.debug("Process Error Stack:", this.sanitizeConsoleOutput(result.error.stack)); + } + process.stderr.write(this.sanitizeConsoleOutput(result.error.message)); + } + return result; + } + getRepoGitUrl() { + return getRepositoryGitUrl(this.remoteConfig); + } + hasCommit(branchName, sha) { + assertValidGitRef(branchName); + assertValidGitRef(sha); + return this.run(["branch", branchName, "--contains", sha]).stdout !== ""; + } + isShallowRepo() { + return this.run(["rev-parse", "--is-shallow-repository"]).stdout.trim() === "true"; + } + getCurrentBranchOrRevision() { + const branchName = this.run(["rev-parse", "--abbrev-ref", "HEAD"]).stdout.trim(); + if (branchName === "HEAD") { + return this.run(["rev-parse", "HEAD"]).stdout.trim(); + } + return branchName; + } + hasUncommittedChanges() { + this.runGraceful(["update-index", "-q", "--refresh"]); + return this.runGraceful(["diff-index", "--quiet", "HEAD"]).status !== 0; + } + checkout(branchOrRevision, cleanState) { + assertValidGitRef(branchOrRevision); + if (cleanState) { + this.runGraceful(["am", "--abort"], { stdio: "ignore" }); + this.runGraceful(["cherry-pick", "--abort"], { stdio: "ignore" }); + this.runGraceful(["rebase", "--abort"], { stdio: "ignore" }); + this.runGraceful(["reset", "--hard"], { stdio: "ignore" }); + } + return this.runGraceful(["checkout", branchOrRevision], { stdio: "ignore" }).status === 0; + } + allChangesFilesSince(shaOrRef = "HEAD") { + assertValidGitRef(shaOrRef); + return Array.from(/* @__PURE__ */ new Set([ + ...gitOutputAsArray(this.runGraceful(["diff", "--name-only", "--diff-filter=d", shaOrRef])), + ...gitOutputAsArray(this.runGraceful(["ls-files", "--others", "--exclude-standard"])) + ])); + } + allStagedFiles() { + return gitOutputAsArray(this.runGraceful(["diff", "--name-only", "--diff-filter=ACM", "--staged"])); + } + allFiles() { + return gitOutputAsArray(this.runGraceful(["ls-files"])); + } + sanitizeConsoleOutput(value) { + return value.replace(/(https?:\/\/)([^@:]+)(:[^@]+)?@/g, "$1@"); + } + static async get() { + if (_GitClient._unauthenticatedInstance === null) { + _GitClient._unauthenticatedInstance = (async () => { + return new _GitClient(await getConfig([assertValidGithubConfig])); + })(); + } + return _GitClient._unauthenticatedInstance; + } +}; +GitClient._unauthenticatedInstance = null; +function gitOutputAsArray(gitCommandResult) { + return gitCommandResult.stdout.split("\n").map((x) => x.trim()).filter((x) => !!x); +} +function assertValidGitRef(ref) { + if (ref.startsWith("-")) { + throw new Error(`Invalid Git reference: ${ref}`); + } +} + +// ng-dev/utils/git/authenticated-git-client.js +var AuthenticatedGitClient = class _AuthenticatedGitClient extends GitClient { + constructor(githubToken, userType, config, baseDir) { + super(config, baseDir); + this.githubToken = githubToken; + this.userType = userType; + this._githubTokenRegex = new RegExp(this.githubToken, "g"); + this._cachedOauthScopes = null; + this._cachedForkRepositories = null; + this.github = new AuthenticatedGithubClient(this.githubToken); + } + sanitizeConsoleOutput(value) { + const sanitized = super.sanitizeConsoleOutput(value); + return sanitized.replace(this._githubTokenRegex, ""); + } + getRepoGitUrl() { + return getRepositoryGitUrl(this.remoteConfig, this.githubToken); + } + async hasOauthScopes(testFn) { + if (this.userType === "bot") { + return true; + } + const scopes = await this._fetchAuthScopesForToken(); + const missingScopes = []; + testFn(scopes, missingScopes); + if (missingScopes.length === 0) { + return true; + } + const error2 = `The provided does not have required permissions due to missing scope(s): ${yellow(missingScopes.join(", "))} + +Update the token in use at: + ${GITHUB_TOKEN_SETTINGS_URL} + +Alternatively, a new token can be created at: ${GITHUB_TOKEN_GENERATE_URL} +`; + return { error: error2 }; + } + async getForkOfAuthenticatedUser() { + const forks = await this.getAllForksOfAuthenticatedUser(); + if (forks.length === 0) { + throw Error("Unable to find fork a for currently authenticated user."); + } + return forks[0]; + } + async getAllForksOfAuthenticatedUser() { + if (this._cachedForkRepositories !== null) { + return this._cachedForkRepositories; + } + const { owner, name } = this.remoteConfig; + const result = await this.github.graphql(findOwnedForksOfRepoQuery, { owner, name }); + return this._cachedForkRepositories = result.repository.forks.nodes.map((node) => ({ + owner: node.owner.login, + name: node.name + })); + } + _fetchAuthScopesForToken() { + if (this._cachedOauthScopes !== null) { + return this._cachedOauthScopes; + } + return this._cachedOauthScopes = this.github.rateLimit.get().then((response) => { + const scopes = response.headers["x-oauth-scopes"]; + if (scopes === void 0) { + throw Error("Unable to retrieve OAuth scopes for token provided to Git client."); + } + return scopes.split(",").map((scope) => scope.trim()).filter((scope) => scope !== ""); + }); + } + static async get() { + if (_AuthenticatedGitClient._token === null) { + throw new Error("No instance of `AuthenticatedGitClient` has been configured."); + } + if (_AuthenticatedGitClient._authenticatedInstance === null) { + _AuthenticatedGitClient._authenticatedInstance = (async (token, userType) => { + return new _AuthenticatedGitClient(token, userType, await getConfig([assertValidGithubConfig])); + })(_AuthenticatedGitClient._token, _AuthenticatedGitClient._userType); + } + return _AuthenticatedGitClient._authenticatedInstance; + } + static configure(token, userType = "user") { + if (_AuthenticatedGitClient._token) { + throw Error("Unable to configure `AuthenticatedGitClient` as it has been configured already."); + } + _AuthenticatedGitClient._token = token; + _AuthenticatedGitClient._userType = userType; + } +}; +AuthenticatedGitClient._token = null; +AuthenticatedGitClient._authenticatedInstance = null; + +// ng-dev/release/config/index.js +function assertValidReleaseConfig(config) { + const errors = []; + if (config.release === void 0) { + throw new ConfigValidationError("No configuration provided for `release`"); + } + if (config.release.representativeNpmPackage === void 0) { + errors.push(`No "representativeNpmPackage" configured for releasing.`); + } + if (config.release.npmPackages === void 0) { + errors.push(`No "npmPackages" configured for releasing.`); + } + if (config.release.buildPackages === void 0) { + errors.push(`No "buildPackages" function configured for releasing.`); + } + if (config.release.representativeNpmPackage && config.release.npmPackages) { + const representativePkgEntry = config.release.npmPackages.find((pkg) => pkg.name === config.release?.representativeNpmPackage); + if (representativePkgEntry === void 0) { + errors.push(`Configured "representativeNpmPackage" (${representativePkgEntry}) does not match a package in "npmPackages".`); + } else if (representativePkgEntry.experimental) { + errors.push(`Configured "representativeNpmPackage" (${representativePkgEntry}) corresponds to an experimental package. The representative NPM package is expected to be a long-standing and non-experimental package of the project.`); + } + } + if (errors.length) { + throw new ConfigValidationError("Invalid `release` configuration", errors); + } +} + +// github-actions/release/publish/lib/publish-ci.js +var import_semver6 = __toESM(require_semver2()); +import { join as join6 } from "path"; +import { readdirSync as readdirSync3, readFileSync as readFileSync7, existsSync as existsSync3, writeFileSync as writeFileSync3, rmSync as rmSync2, mkdtempSync as mkdtempSync2 } from "fs"; +import { tmpdir } from "os"; + +// ng-dev/release/publish/actions-error.js +var FatalReleaseActionError = class extends Error { +}; + +// ng-dev/release/publish/directory-hash.js +var import_folder_hash = __toESM(require_folder_hash()); +var DirectoryHash = class { + static async compute(dirPath) { + return (await (0, import_folder_hash.hashElement)(dirPath, {})).hash; + } +}; + +// ng-dev/release/publish/built-package-info.js +async function analyzeAndExtendBuiltPackagesWithInfo(builtPackages, npmPackages) { + const result = []; + for (const pkg of builtPackages) { + const info2 = npmPackages.find((i) => i.name === pkg.name); + if (info2 === void 0) { + Log.debug(`Retrieved package information:`, npmPackages); + Log.error(` \u2718 Could not find package information for built package: "${pkg.name}".`); + throw new FatalReleaseActionError(); + } + result.push({ + hash: await computeHashForPackageContents(pkg), + ...pkg, + ...info2 + }); + } + return result; +} +async function computeHashForPackageContents(pkg) { + return DirectoryHash.compute(pkg.outputPath); +} + +// +import fs2 from "node:fs"; +import path from "node:path"; + +// +var utils = {}; +var regExpChars = /[|\\{}()[\]^$+*?.]/g; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var hasOwn = function(obj, key) { + return hasOwnProperty.apply(obj, [key]); +}; +utils.hasOwn = hasOwn; +utils.escapeRegExpChars = function(string) { + if (!string) { + return ""; + } + return String(string).replace(regExpChars, "\\$&"); +}; +var _ENCODE_HTML_RULES = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" +}; +var _MATCH_HTML = /[&<>'"]/g; +function encode_char(c) { + return _ENCODE_HTML_RULES[c] || c; +} +var escapeFuncStr = `var _ENCODE_HTML_RULES = { + "&": "&" + , "<": "<" + , ">": ">" + , '"': """ + , "'": "'" + } + , _MATCH_HTML = /[&<>'"]/g; +function encode_char(c) { + return _ENCODE_HTML_RULES[c] || c; +}; +`; +utils.escapeXML = function(markup) { + return markup == void 0 ? "" : String(markup).replace(_MATCH_HTML, encode_char); +}; +function escapeXMLToString() { + return Function.prototype.toString.call(this) + ";\n" + escapeFuncStr; +} +try { + if (typeof Object.defineProperty === "function") { + Object.defineProperty(utils.escapeXML, "toString", { value: escapeXMLToString }); + } else { + utils.escapeXML.toString = escapeXMLToString; + } +} catch (err) { + console.warn("Unable to set escapeXML.toString (is the Function prototype frozen?)"); +} +utils.shallowCopy = function(to, from) { + from = from || {}; + if (to !== null && to !== void 0) { + for (var p in from) { + if (!hasOwn(from, p)) { + continue; + } + if (p === "__proto__" || p === "constructor") { + continue; + } + to[p] = from[p]; + } + } + return to; +}; +utils.shallowCopyFromList = function(to, from, list) { + list = list || []; + from = from || {}; + if (to !== null && to !== void 0) { + for (var i = 0; i < list.length; i++) { + var p = list[i]; + if (typeof from[p] != "undefined") { + if (!hasOwn(from, p)) { + continue; + } + if (p === "__proto__" || p === "constructor") { + continue; + } + to[p] = from[p]; + } + } + } + return to; +}; +utils.cache = { + _data: {}, + set: function(key, val) { + this._data[key] = val; + }, + get: function(key) { + return this._data[key]; + }, + remove: function(key) { + delete this._data[key]; + }, + reset: function() { + this._data = {}; + } +}; +utils.hyphenToCamel = function(str) { + return str.replace(/-[a-z]/g, function(match2) { + return match2[1].toUpperCase(); + }); +}; +utils.createNullProtoObjWherePossible = function() { + if (typeof Object.create == "function") { + return function() { + return /* @__PURE__ */ Object.create(null); + }; + } + if (!({ __proto__: null } instanceof Object)) { + return function() { + return { __proto__: null }; + }; + } + return function() { + return {}; + }; +}(); +utils.hasOwnOnlyObject = function(obj) { + var o = utils.createNullProtoObjWherePossible(); + for (var p in obj) { + if (hasOwn(obj, p)) { + o[p] = obj[p]; + } + } + return o; +}; +var utils_default = utils; + +// +var DECLARATION_KEYWORD = "let"; +var ejs = {}; +var _DEFAULT_OPEN_DELIMITER = "<"; +var _DEFAULT_CLOSE_DELIMITER = ">"; +var _DEFAULT_DELIMITER = "%"; +var _DEFAULT_LOCALS_NAME = "locals"; +var _REGEX_STRING = "(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)"; +var _OPTS_PASSABLE_WITH_DATA = [ + "delimiter", + "scope", + "context", + "debug", + "compileDebug", + "_with", + "rmWhitespace", + "strict", + "filename", + "async" +]; +var _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat("cache"); +var _BOM = /^\uFEFF/; +var _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/; +ejs.cache = utils_default.cache; +ejs.fileLoader = fs2.readFileSync; +ejs.localsName = _DEFAULT_LOCALS_NAME; +ejs.promiseImpl = new Function("return this;")().Promise; +ejs.resolveInclude = function(name, filename, isDir) { + let dirname3 = path.dirname; + let extname2 = path.extname; + let resolve5 = path.resolve; + let includePath = resolve5(isDir ? filename : dirname3(filename), name); + let ext2 = extname2(name); + if (!ext2) { + includePath += ".ejs"; + } + return includePath; +}; +function resolvePaths(name, paths) { + let filePath; + if (paths.some(function(v) { + filePath = ejs.resolveInclude(name, v, true); + return fs2.existsSync(filePath); + })) { + return filePath; + } +} +function getIncludePath(path5, options) { + let includePath; + let filePath; + let views = options.views; + let match2 = /^[A-Za-z]+:\\|^\//.exec(path5); + if (match2 && match2.length) { + path5 = path5.replace(/^\/*/, ""); + if (Array.isArray(options.root)) { + includePath = resolvePaths(path5, options.root); + } else { + includePath = ejs.resolveInclude(path5, options.root || "/", true); + } + } else { + if (options.filename) { + filePath = ejs.resolveInclude(path5, options.filename); + if (fs2.existsSync(filePath)) { + includePath = filePath; + } + } + if (!includePath && Array.isArray(views)) { + includePath = resolvePaths(path5, views); + } + if (!includePath && typeof options.includer !== "function") { + throw new Error('Could not find the include file "' + options.escapeFunction(path5) + '"'); + } + } + return includePath; +} +function handleCache(options, template) { + let func; + let filename = options.filename; + let hasTemplate = arguments.length > 1; + if (options.cache) { + if (!filename) { + throw new Error("cache option requires a filename"); + } + func = ejs.cache.get(filename); + if (func) { + return func; + } + if (!hasTemplate) { + template = fileLoader(filename).toString().replace(_BOM, ""); + } + } else if (!hasTemplate) { + if (!filename) { + throw new Error("Internal EJS error: no file name or template provided"); + } + template = fileLoader(filename).toString().replace(_BOM, ""); + } + func = ejs.compile(template, options); + if (options.cache) { + ejs.cache.set(filename, func); + } + return func; +} +function tryHandleCache(options, data, cb) { + let result; + if (!cb) { + if (typeof ejs.promiseImpl == "function") { + return new ejs.promiseImpl(function(resolve5, reject) { + try { + result = handleCache(options)(data); + resolve5(result); + } catch (err) { + reject(err); + } + }); + } else { + throw new Error("Please provide a callback function"); + } + } else { + try { + result = handleCache(options)(data); + } catch (err) { + return cb(err); + } + cb(null, result); + } +} +function fileLoader(filePath) { + return ejs.fileLoader(filePath); +} +function includeFile(path5, options) { + let opts = utils_default.shallowCopy(utils_default.createNullProtoObjWherePossible(), options); + opts.filename = getIncludePath(path5, opts); + if (typeof options.includer === "function") { + let includerResult = options.includer(path5, opts.filename); + if (includerResult) { + if (includerResult.filename) { + opts.filename = includerResult.filename; + } + if (includerResult.template) { + return handleCache(opts, includerResult.template); + } + } + } + return handleCache(opts); +} +function rethrow(err, str, flnm, lineno, esc) { + let lines = str.split("\n"); + let start = Math.max(lineno - 3, 0); + let end = Math.min(lines.length, lineno + 3); + let filename = esc(flnm); + let context3 = lines.slice(start, end).map(function(line, i) { + let curr = i + start + 1; + return (curr == lineno ? " >> " : " ") + curr + "| " + line; + }).join("\n"); + err.path = filename; + err.message = (filename || "ejs") + ":" + lineno + "\n" + context3 + "\n\n" + err.message; + throw err; +} +function stripSemi(str) { + return str.replace(/;(\s*$)/, "$1"); +} +ejs.compile = function compile(template, opts) { + let templ; + if (opts && opts.scope) { + console.warn("`scope` option is deprecated and will be removed in future EJS"); + if (!opts.context) { + opts.context = opts.scope; + } + delete opts.scope; + } + templ = new Template(template, opts); + return templ.compile(); +}; +ejs.render = function(template, d, o) { + let data = d || utils_default.createNullProtoObjWherePossible(); + let opts = o || utils_default.createNullProtoObjWherePossible(); + if (arguments.length == 2) { + utils_default.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA); + } + return handleCache(opts, template)(data); +}; +ejs.renderFile = function() { + let args = Array.prototype.slice.call(arguments); + let filename = args.shift(); + let cb; + let opts = { filename }; + let data; + let viewOpts; + if (typeof arguments[arguments.length - 1] == "function") { + cb = args.pop(); + } + if (args.length) { + data = args.shift(); + if (args.length) { + utils_default.shallowCopy(opts, args.pop()); + } else { + if (utils_default.hasOwn(data, "settings") && data.settings) { + if (data.settings.views) { + opts.views = data.settings.views; + } + if (data.settings["view cache"]) { + opts.cache = true; + } + viewOpts = data.settings["view options"]; + if (viewOpts) { + utils_default.shallowCopy(opts, viewOpts); + } + } + utils_default.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS); + } + opts.filename = filename; + } else { + data = utils_default.createNullProtoObjWherePossible(); + } + return tryHandleCache(opts, data, cb); +}; +ejs.Template = Template; +ejs.clearCache = function() { + ejs.cache.reset(); +}; +function Template(text, optsParam) { + let opts = utils_default.hasOwnOnlyObject(optsParam); + let options = utils_default.createNullProtoObjWherePossible(); + this.templateText = text; + this.mode = null; + this.truncate = false; + this.currentLine = 1; + this.source = ""; + options.escapeFunction = opts.escape || opts.escapeFunction || utils_default.escapeXML; + options.compileDebug = opts.compileDebug !== false; + options.debug = !!opts.debug; + options.filename = opts.filename; + options.openDelimiter = opts.openDelimiter || ejs.openDelimiter || _DEFAULT_OPEN_DELIMITER; + options.closeDelimiter = opts.closeDelimiter || ejs.closeDelimiter || _DEFAULT_CLOSE_DELIMITER; + options.delimiter = opts.delimiter || ejs.delimiter || _DEFAULT_DELIMITER; + options.strict = opts.strict || false; + options.context = opts.context; + options.cache = opts.cache || false; + options.rmWhitespace = opts.rmWhitespace; + options.root = opts.root; + options.includer = opts.includer; + options.outputFunctionName = opts.outputFunctionName; + options.localsName = opts.localsName || ejs.localsName || _DEFAULT_LOCALS_NAME; + options.views = opts.views; + options.async = opts.async; + options.destructuredLocals = opts.destructuredLocals; + options.legacyInclude = typeof opts.legacyInclude != "undefined" ? !!opts.legacyInclude : true; + options.unsafePrototypeLocals = !!opts.unsafePrototypeLocals; + if (options.strict) { + options._with = false; + } else { + options._with = typeof opts._with != "undefined" ? opts._with : true; + } + this.opts = options; + this.regex = this.createRegex(); +} +Template.modes = { + EVAL: "eval", + ESCAPED: "escaped", + RAW: "raw", + COMMENT: "comment", + LITERAL: "literal" +}; +Template.prototype = { + createRegex: function() { + let str = _REGEX_STRING; + let delim = utils_default.escapeRegExpChars(this.opts.delimiter); + let open2 = utils_default.escapeRegExpChars(this.opts.openDelimiter); + let close = utils_default.escapeRegExpChars(this.opts.closeDelimiter); + str = str.replace(/%/g, delim).replace(//g, close); + return new RegExp(str); + }, + compile: function() { + let src; + let fn; + let opts = this.opts; + let prepended = ""; + let appended = ""; + let escapeFn = opts.escapeFunction; + let ctor; + let sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : "undefined"; + if (!this.source) { + this.generateSource(); + prepended += ` ${DECLARATION_KEYWORD} __output = ""; + function __append(s) { if (s !== undefined && s !== null) __output += s } +`; + if (opts.outputFunctionName) { + if (!_JS_IDENTIFIER.test(opts.outputFunctionName)) { + throw new Error("outputFunctionName is not a valid JS identifier."); + } + prepended += ` ${DECLARATION_KEYWORD} ` + opts.outputFunctionName + " = __append;\n"; + } + if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName)) { + throw new Error("localsName is not a valid JS identifier."); + } + if (opts.destructuredLocals && opts.destructuredLocals.length) { + let destructuring = ` ${DECLARATION_KEYWORD} __locals = (` + opts.localsName + " || {}),\n"; + for (let i = 0; i < opts.destructuredLocals.length; i++) { + let name = opts.destructuredLocals[i]; + if (!_JS_IDENTIFIER.test(name)) { + throw new Error("destructuredLocals[" + i + "] is not a valid JS identifier."); + } + if (i > 0) { + destructuring += ",\n "; + } + destructuring += name + " = __locals." + name; + } + prepended += destructuring + ";\n"; + } + if (opts._with !== false) { + prepended += " with (" + opts.localsName + " || {}) {\n"; + appended += " }\n"; + } + appended += " return __output;\n"; + this.source = prepended + this.source + appended; + } + if (opts.compileDebug) { + src = `${DECLARATION_KEYWORD} __line = 1 + , __lines = ` + JSON.stringify(this.templateText) + "\n , __filename = " + sanitizedFilename + ";\ntry {\n" + this.source + "} catch (e) {\n rethrow(e, __lines, __filename, __line, escapeFn);\n}\n"; + } else { + src = this.source; + } + if (opts.strict) { + src = '"use strict";\n' + src; + } + if (opts.debug) { + console.log(src); + } + if (opts.compileDebug && opts.filename) { + src = src + "\n//# sourceURL=" + sanitizedFilename + "\n"; + } + try { + if (opts.async) { + try { + ctor = new Function("return (async function(){}).constructor;")(); + } catch (e) { + if (e instanceof SyntaxError) { + throw new Error("This environment does not support async/await"); + } else { + throw e; + } + } + } else { + ctor = Function; + } + fn = new ctor(opts.localsName + ", escapeFn, include, rethrow", src); + } catch (e) { + if (e instanceof SyntaxError) { + if (opts.filename) { + e.message += " in " + opts.filename; + } + e.message += " while compiling ejs\n\n"; + e.message += "If the above error is not helpful, you may want to try EJS-Lint:\n"; + e.message += "https://github.com/RyanZim/EJS-Lint"; + if (!opts.async) { + e.message += "\n"; + e.message += "Or, if you meant to create an async function, pass `async: true` as an option."; + } + } + throw e; + } + let returnedFn = function anonymous(data) { + let include = function(path5, includeData) { + let d = utils_default.shallowCopy(utils_default.createNullProtoObjWherePossible(), data); + if (includeData) { + d = utils_default.shallowCopy(d, includeData); + } + return includeFile(path5, opts)(d); + }; + let locals; + if (opts.unsafePrototypeLocals) { + locals = data || utils_default.createNullProtoObjWherePossible(); + } else { + locals = utils_default.shallowCopy(utils_default.createNullProtoObjWherePossible(), data); + } + return fn.apply( + opts.context, + [locals, escapeFn, include, rethrow] + ); + }; + if (opts.filename && typeof Object.defineProperty === "function") { + let filename = opts.filename; + let basename2 = path.basename(filename, path.extname(filename)); + try { + Object.defineProperty(returnedFn, "name", { + value: basename2, + writable: false, + enumerable: false, + configurable: true + }); + } catch (e) { + } + } + return returnedFn; + }, + generateSource: function() { + let opts = this.opts; + if (opts.rmWhitespace) { + this.templateText = this.templateText.replace(/[\r\n]+/g, "\n").replace(/^\s+|\s+$/gm, ""); + } + let self = this; + let d = this.opts.delimiter; + let o = this.opts.openDelimiter; + let c = this.opts.closeDelimiter; + let openWhitespaceSlurpTag = utils_default.escapeRegExpChars(o + d + "_"); + let closeWhitespaceSlurpTag = utils_default.escapeRegExpChars("_" + d + c); + let openWhitespaceSlurpReplacement = o + d + "_"; + let closeWhitespaceSlurpReplacement = "_" + d + c; + this.templateText = this.templateText.replace(new RegExp("[ \\t]*" + openWhitespaceSlurpTag, "gm"), openWhitespaceSlurpReplacement).replace(new RegExp(closeWhitespaceSlurpTag + "[ \\t]*", "gm"), closeWhitespaceSlurpReplacement); + let matches = this.parseTemplateText(); + if (matches && matches.length) { + matches.forEach(function(line, index) { + let closing; + if (line.indexOf(o + d) === 0 && line.indexOf(o + d + d) !== 0) { + closing = matches[index + 2]; + if (!(closing == d + c || closing == "-" + d + c || closing == "_" + d + c)) { + throw new Error('Could not find matching close tag for "' + line + '".'); + } + } + self.scanLine(line); + }); + } + }, + parseTemplateText: function() { + let str = this.templateText; + let pat = this.regex; + let result = pat.exec(str); + let arr = []; + let firstPos; + while (result) { + firstPos = result.index; + if (firstPos !== 0) { + arr.push(str.substring(0, firstPos)); + str = str.slice(firstPos); + } + arr.push(result[0]); + str = str.slice(result[0].length); + result = pat.exec(str); + } + if (str) { + arr.push(str); + } + return arr; + }, + _addOutput: function(line) { + if (this.truncate) { + line = line.replace(/^(?:\r\n|\r|\n)/, ""); + this.truncate = false; + } + if (!line) { + return line; + } + line = line.replace(/\\/g, "\\\\"); + line = line.replace(/\n/g, "\\n"); + line = line.replace(/\r/g, "\\r"); + line = line.replace(/"/g, '\\"'); + this.source += ' ; __append("' + line + '")\n'; + }, + scanLine: function(line) { + let self = this; + let d = this.opts.delimiter; + let o = this.opts.openDelimiter; + let c = this.opts.closeDelimiter; + let newLineCount = 0; + newLineCount = line.split("\n").length - 1; + switch (line) { + case o + d: + case o + d + "_": + this.mode = Template.modes.EVAL; + break; + case o + d + "=": + this.mode = Template.modes.ESCAPED; + break; + case o + d + "-": + this.mode = Template.modes.RAW; + break; + case o + d + "#": + this.mode = Template.modes.COMMENT; + break; + case o + d + d: + this.mode = Template.modes.LITERAL; + this.source += ' ; __append("' + line.replace(o + d + d, o + d) + '")\n'; + break; + case d + d + c: + this.mode = Template.modes.LITERAL; + this.source += ' ; __append("' + line.replace(d + d + c, d + c) + '")\n'; + break; + case d + c: + case "-" + d + c: + case "_" + d + c: + if (this.mode == Template.modes.LITERAL) { + this._addOutput(line); + } + this.mode = null; + this.truncate = line.indexOf("-") === 0 || line.indexOf("_") === 0; + break; + default: + if (this.mode) { + switch (this.mode) { + case Template.modes.EVAL: + case Template.modes.ESCAPED: + case Template.modes.RAW: + if (line.lastIndexOf("//") > line.lastIndexOf("\n")) { + line += "\n"; + } + } + switch (this.mode) { + case Template.modes.EVAL: + this.source += " ; " + line + "\n"; + break; + case Template.modes.ESCAPED: + this.source += " ; __append(escapeFn(" + stripSemi(line) + "))\n"; + break; + case Template.modes.RAW: + this.source += " ; __append(" + stripSemi(line) + ")\n"; + break; + case Template.modes.COMMENT: + break; + case Template.modes.LITERAL: + this._addOutput(line); + break; + } + } else { + this._addOutput(line); + } + } + if (self.opts.compileDebug && newLineCount) { + this.currentLine += newLineCount; + this.source += " ; __line = " + this.currentLine + "\n"; + } + } +}; +ejs.escapeXML = utils_default.escapeXML; +ejs.__express = ejs.renderFile; +if (typeof window != "undefined") { + window.ejs = ejs; +} +var ejs_default = ejs; + +// ng-dev/release/notes/release-notes.js +var import_semver2 = __toESM(require_semver2()); + +// +var keybindings = ["emacs", "vim"]; +var keybindingLookup = new Set(keybindings); +function isKeybinding(value) { + return keybindingLookup.has(value); +} +function getDefaultKeybindings() { + const env3 = process.env["INQUIRER_KEYBINDINGS"]; + if (!env3) + return []; + return Array.from(new Set(env3.toLowerCase().split(/[\s,]+/).filter(isKeybinding))); +} +var isUpKey = (key, keybindings2 = []) => ( + // The up key + key.name === "up" || // Vim keybinding: hjkl keys map to left/down/up/right + keybindings2.includes("vim") && key.name === "k" || // Emacs keybinding: Ctrl+P means "previous" in Emacs navigation conventions + keybindings2.includes("emacs") && key.ctrl && key.name === "p" +); +var isDownKey = (key, keybindings2 = []) => ( + // The down key + key.name === "down" || // Vim keybinding: hjkl keys map to left/down/up/right + keybindings2.includes("vim") && key.name === "j" || // Emacs keybinding: Ctrl+N means "next" in Emacs navigation conventions + keybindings2.includes("emacs") && key.ctrl && key.name === "n" +); +var isSpaceKey = (key) => key.name === "space"; +var isBackspaceKey = (key) => key.name === "backspace"; +var isTabKey = (key) => key.name === "tab"; +var isNumberKey = (key) => "1234567890".includes(key.name); +var isEnterKey = (key) => key.name === "enter" || key.name === "return"; + +// +var AbortPromptError = class extends Error { + name = "AbortPromptError"; + message = "Prompt was aborted"; + constructor(options) { + super(); + this.cause = options?.cause; + } +}; +var CancelPromptError = class extends Error { + name = "CancelPromptError"; + message = "Prompt was canceled"; +}; +var ExitPromptError = class extends Error { + name = "ExitPromptError"; +}; +var HookError = class extends Error { + name = "HookError"; +}; +var ValidationError = class extends Error { + name = "ValidationError"; +}; + +// +import { AsyncResource as AsyncResource2 } from "node:async_hooks"; + +// +import { AsyncLocalStorage, AsyncResource } from "node:async_hooks"; +var hookStorage = new AsyncLocalStorage(); +function createStore(rl) { + const store = { + rl, + hooks: [], + hooksCleanup: [], + hooksEffect: [], + index: 0, + handleChange() { + } + }; + return store; +} +function withHooks(rl, cb) { + const store = createStore(rl); + return hookStorage.run(store, () => { + function cycle(render2) { + store.handleChange = () => { + store.index = 0; + render2(); + }; + store.handleChange(); + } + return cb(cycle); + }); +} +function getStore() { + const store = hookStorage.getStore(); + if (!store) { + throw new HookError("[Inquirer] Hook functions can only be called from within a prompt"); + } + return store; +} +function readline() { + return getStore().rl; +} +function withUpdates(fn) { + const wrapped = (...args) => { + const store = getStore(); + let shouldUpdate = false; + const oldHandleChange = store.handleChange; + store.handleChange = () => { + shouldUpdate = true; + }; + const returnValue = fn(...args); + if (shouldUpdate) { + oldHandleChange(); + } + store.handleChange = oldHandleChange; + return returnValue; + }; + return AsyncResource.bind(wrapped); +} +function withPointer(cb) { + const store = getStore(); + const { index } = store; + const pointer = { + get() { + return store.hooks[index]; + }, + set(value) { + store.hooks[index] = value; + }, + initialized: index in store.hooks + }; + const returnValue = cb(pointer); + store.index++; + return returnValue; +} +function handleChange() { + getStore().handleChange(); +} +var effectScheduler = { + queue(cb) { + const store = getStore(); + const { index } = store; + store.hooksEffect.push(() => { + store.hooksCleanup[index]?.(); + const cleanFn = cb(readline()); + if (cleanFn != null && typeof cleanFn !== "function") { + throw new ValidationError("useEffect return value must be a cleanup function or nothing."); + } + store.hooksCleanup[index] = cleanFn; + }); + }, + run() { + const store = getStore(); + withUpdates(() => { + store.hooksEffect.forEach((effect) => { + effect(); + }); + store.hooksEffect.length = 0; + })(); + }, + clearAll() { + const store = getStore(); + store.hooksCleanup.forEach((cleanFn) => { + cleanFn?.(); + }); + store.hooksEffect.length = 0; + store.hooksCleanup.length = 0; + } +}; + +// +function isFactory(value) { + return typeof value === "function"; +} +function useState(defaultValue) { + return withPointer((pointer) => { + const setState = AsyncResource2.bind(function setState2(newValue) { + if (pointer.get() !== newValue) { + pointer.set(newValue); + handleChange(); + } + }); + if (pointer.initialized) { + return [pointer.get(), setState]; + } + const value = isFactory(defaultValue) ? defaultValue() : defaultValue; + pointer.set(value); + return [value, setState]; + }); +} + +// +function useEffect(cb, depArray) { + withPointer((pointer) => { + const oldDeps = pointer.get(); + const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i])); + if (hasChanged) { + effectScheduler.queue(cb); + } + pointer.set(depArray); + }); +} + +// +import { styleText as styleText2 } from "node:util"; + +// +import process3 from "node:process"; +function isUnicodeSupported() { + if (!process3.platform.startsWith("win")) { + return process3.env["TERM"] !== "linux"; + } + return Boolean(process3.env["CI"]) || // CI environments generally support unicode + Boolean(process3.env["WT_SESSION"]) || // Windows Terminal + Boolean(process3.env["TERMINUS_SUBLIME"]) || // Terminus (<0.2.27) + process3.env["ConEmuTask"] === "{cmd::Cmder}" || // ConEmu and cmder + process3.env["TERM_PROGRAM"] === "Terminus-Sublime" || process3.env["TERM_PROGRAM"] === "vscode" || process3.env["TERM"] === "xterm-256color" || process3.env["TERM"] === "alacritty" || process3.env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm"; +} +var common = { + circleQuestionMark: "(?)", + questionMarkPrefix: "(?)", + square: "\u2588", + squareDarkShade: "\u2593", + squareMediumShade: "\u2592", + squareLightShade: "\u2591", + squareTop: "\u2580", + squareBottom: "\u2584", + squareLeft: "\u258C", + squareRight: "\u2590", + squareCenter: "\u25A0", + bullet: "\u25CF", + dot: "\u2024", + ellipsis: "\u2026", + pointerSmall: "\u203A", + triangleUp: "\u25B2", + triangleUpSmall: "\u25B4", + triangleDown: "\u25BC", + triangleDownSmall: "\u25BE", + triangleLeftSmall: "\u25C2", + triangleRightSmall: "\u25B8", + home: "\u2302", + heart: "\u2665", + musicNote: "\u266A", + musicNoteBeamed: "\u266B", + arrowUp: "\u2191", + arrowDown: "\u2193", + arrowLeft: "\u2190", + arrowRight: "\u2192", + arrowLeftRight: "\u2194", + arrowUpDown: "\u2195", + almostEqual: "\u2248", + notEqual: "\u2260", + lessOrEqual: "\u2264", + greaterOrEqual: "\u2265", + identical: "\u2261", + infinity: "\u221E", + subscriptZero: "\u2080", + subscriptOne: "\u2081", + subscriptTwo: "\u2082", + subscriptThree: "\u2083", + subscriptFour: "\u2084", + subscriptFive: "\u2085", + subscriptSix: "\u2086", + subscriptSeven: "\u2087", + subscriptEight: "\u2088", + subscriptNine: "\u2089", + oneHalf: "\xBD", + oneThird: "\u2153", + oneQuarter: "\xBC", + oneFifth: "\u2155", + oneSixth: "\u2159", + oneEighth: "\u215B", + twoThirds: "\u2154", + twoFifths: "\u2156", + threeQuarters: "\xBE", + threeFifths: "\u2157", + threeEighths: "\u215C", + fourFifths: "\u2158", + fiveSixths: "\u215A", + fiveEighths: "\u215D", + sevenEighths: "\u215E", + line: "\u2500", + lineBold: "\u2501", + lineDouble: "\u2550", + lineDashed0: "\u2504", + lineDashed1: "\u2505", + lineDashed2: "\u2508", + lineDashed3: "\u2509", + lineDashed4: "\u254C", + lineDashed5: "\u254D", + lineDashed6: "\u2574", + lineDashed7: "\u2576", + lineDashed8: "\u2578", + lineDashed9: "\u257A", + lineDashed10: "\u257C", + lineDashed11: "\u257E", + lineDashed12: "\u2212", + lineDashed13: "\u2013", + lineDashed14: "\u2010", + lineDashed15: "\u2043", + lineVertical: "\u2502", + lineVerticalBold: "\u2503", + lineVerticalDouble: "\u2551", + lineVerticalDashed0: "\u2506", + lineVerticalDashed1: "\u2507", + lineVerticalDashed2: "\u250A", + lineVerticalDashed3: "\u250B", + lineVerticalDashed4: "\u254E", + lineVerticalDashed5: "\u254F", + lineVerticalDashed6: "\u2575", + lineVerticalDashed7: "\u2577", + lineVerticalDashed8: "\u2579", + lineVerticalDashed9: "\u257B", + lineVerticalDashed10: "\u257D", + lineVerticalDashed11: "\u257F", + lineDownLeft: "\u2510", + lineDownLeftArc: "\u256E", + lineDownBoldLeftBold: "\u2513", + lineDownBoldLeft: "\u2512", + lineDownLeftBold: "\u2511", + lineDownDoubleLeftDouble: "\u2557", + lineDownDoubleLeft: "\u2556", + lineDownLeftDouble: "\u2555", + lineDownRight: "\u250C", + lineDownRightArc: "\u256D", + lineDownBoldRightBold: "\u250F", + lineDownBoldRight: "\u250E", + lineDownRightBold: "\u250D", + lineDownDoubleRightDouble: "\u2554", + lineDownDoubleRight: "\u2553", + lineDownRightDouble: "\u2552", + lineUpLeft: "\u2518", + lineUpLeftArc: "\u256F", + lineUpBoldLeftBold: "\u251B", + lineUpBoldLeft: "\u251A", + lineUpLeftBold: "\u2519", + lineUpDoubleLeftDouble: "\u255D", + lineUpDoubleLeft: "\u255C", + lineUpLeftDouble: "\u255B", + lineUpRight: "\u2514", + lineUpRightArc: "\u2570", + lineUpBoldRightBold: "\u2517", + lineUpBoldRight: "\u2516", + lineUpRightBold: "\u2515", + lineUpDoubleRightDouble: "\u255A", + lineUpDoubleRight: "\u2559", + lineUpRightDouble: "\u2558", + lineUpDownLeft: "\u2524", + lineUpBoldDownBoldLeftBold: "\u252B", + lineUpBoldDownBoldLeft: "\u2528", + lineUpDownLeftBold: "\u2525", + lineUpBoldDownLeftBold: "\u2529", + lineUpDownBoldLeftBold: "\u252A", + lineUpDownBoldLeft: "\u2527", + lineUpBoldDownLeft: "\u2526", + lineUpDoubleDownDoubleLeftDouble: "\u2563", + lineUpDoubleDownDoubleLeft: "\u2562", + lineUpDownLeftDouble: "\u2561", + lineUpDownRight: "\u251C", + lineUpBoldDownBoldRightBold: "\u2523", + lineUpBoldDownBoldRight: "\u2520", + lineUpDownRightBold: "\u251D", + lineUpBoldDownRightBold: "\u2521", + lineUpDownBoldRightBold: "\u2522", + lineUpDownBoldRight: "\u251F", + lineUpBoldDownRight: "\u251E", + lineUpDoubleDownDoubleRightDouble: "\u2560", + lineUpDoubleDownDoubleRight: "\u255F", + lineUpDownRightDouble: "\u255E", + lineDownLeftRight: "\u252C", + lineDownBoldLeftBoldRightBold: "\u2533", + lineDownLeftBoldRightBold: "\u252F", + lineDownBoldLeftRight: "\u2530", + lineDownBoldLeftBoldRight: "\u2531", + lineDownBoldLeftRightBold: "\u2532", + lineDownLeftRightBold: "\u252E", + lineDownLeftBoldRight: "\u252D", + lineDownDoubleLeftDoubleRightDouble: "\u2566", + lineDownDoubleLeftRight: "\u2565", + lineDownLeftDoubleRightDouble: "\u2564", + lineUpLeftRight: "\u2534", + lineUpBoldLeftBoldRightBold: "\u253B", + lineUpLeftBoldRightBold: "\u2537", + lineUpBoldLeftRight: "\u2538", + lineUpBoldLeftBoldRight: "\u2539", + lineUpBoldLeftRightBold: "\u253A", + lineUpLeftRightBold: "\u2536", + lineUpLeftBoldRight: "\u2535", + lineUpDoubleLeftDoubleRightDouble: "\u2569", + lineUpDoubleLeftRight: "\u2568", + lineUpLeftDoubleRightDouble: "\u2567", + lineUpDownLeftRight: "\u253C", + lineUpBoldDownBoldLeftBoldRightBold: "\u254B", + lineUpDownBoldLeftBoldRightBold: "\u2548", + lineUpBoldDownLeftBoldRightBold: "\u2547", + lineUpBoldDownBoldLeftRightBold: "\u254A", + lineUpBoldDownBoldLeftBoldRight: "\u2549", + lineUpBoldDownLeftRight: "\u2540", + lineUpDownBoldLeftRight: "\u2541", + lineUpDownLeftBoldRight: "\u253D", + lineUpDownLeftRightBold: "\u253E", + lineUpBoldDownBoldLeftRight: "\u2542", + lineUpDownLeftBoldRightBold: "\u253F", + lineUpBoldDownLeftBoldRight: "\u2543", + lineUpBoldDownLeftRightBold: "\u2544", + lineUpDownBoldLeftBoldRight: "\u2545", + lineUpDownBoldLeftRightBold: "\u2546", + lineUpDoubleDownDoubleLeftDoubleRightDouble: "\u256C", + lineUpDoubleDownDoubleLeftRight: "\u256B", + lineUpDownLeftDoubleRightDouble: "\u256A", + lineCross: "\u2573", + lineBackslash: "\u2572", + lineSlash: "\u2571" +}; +var specialMainSymbols = { + tick: "\u2714", + info: "\u2139", + warning: "\u26A0", + cross: "\u2718", + squareSmall: "\u25FB", + squareSmallFilled: "\u25FC", + circle: "\u25EF", + circleFilled: "\u25C9", + circleDotted: "\u25CC", + circleDouble: "\u25CE", + circleCircle: "\u24DE", + circleCross: "\u24E7", + circlePipe: "\u24BE", + radioOn: "\u25C9", + radioOff: "\u25EF", + checkboxOn: "\u2612", + checkboxOff: "\u2610", + checkboxCircleOn: "\u24E7", + checkboxCircleOff: "\u24BE", + pointer: "\u276F", + triangleUpOutline: "\u25B3", + triangleLeft: "\u25C0", + triangleRight: "\u25B6", + lozenge: "\u25C6", + lozengeOutline: "\u25C7", + hamburger: "\u2630", + smiley: "\u32E1", + mustache: "\u0DF4", + star: "\u2605", + play: "\u25B6", + nodejs: "\u2B22", + oneSeventh: "\u2150", + oneNinth: "\u2151", + oneTenth: "\u2152" +}; +var specialFallbackSymbols = { + tick: "\u221A", + info: "i", + warning: "\u203C", + cross: "\xD7", + squareSmall: "\u25A1", + squareSmallFilled: "\u25A0", + circle: "( )", + circleFilled: "(*)", + circleDotted: "( )", + circleDouble: "( )", + circleCircle: "(\u25CB)", + circleCross: "(\xD7)", + circlePipe: "(\u2502)", + radioOn: "(*)", + radioOff: "( )", + checkboxOn: "[\xD7]", + checkboxOff: "[ ]", + checkboxCircleOn: "(\xD7)", + checkboxCircleOff: "( )", + pointer: ">", + triangleUpOutline: "\u2206", + triangleLeft: "\u25C4", + triangleRight: "\u25BA", + lozenge: "\u2666", + lozengeOutline: "\u25CA", + hamburger: "\u2261", + smiley: "\u263A", + mustache: "\u250C\u2500\u2510", + star: "\u2736", + play: "\u25BA", + nodejs: "\u2666", + oneSeventh: "1/7", + oneNinth: "1/9", + oneTenth: "1/10" +}; +var mainSymbols = { + ...common, + ...specialMainSymbols +}; +var fallbackSymbols = { + ...common, + ...specialFallbackSymbols +}; +var shouldUseMain = isUnicodeSupported(); +var figures = shouldUseMain ? mainSymbols : fallbackSymbols; +var dist_default = figures; +var replacements = Object.entries(specialMainSymbols); + +// +var defaultTheme = { + prefix: { + idle: styleText2("blue", "?"), + done: styleText2("green", dist_default.tick) + }, + spinner: { + interval: 80, + frames: ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"].map((frame) => styleText2("yellow", frame)) + }, + keybindings: [], + style: { + answer: (text) => styleText2("cyan", text), + message: (text) => styleText2("bold", text), + error: (text) => styleText2("red", `> ${text}`), + defaultAnswer: (text) => styleText2("dim", `(${text})`), + help: (text) => styleText2("dim", text), + highlight: (text) => styleText2("cyan", text), + key: (text) => styleText2("cyan", styleText2("bold", `<${text}>`)) + } +}; +function getDefaultTheme() { + return { + ...defaultTheme, + keybindings: getDefaultKeybindings() + }; +} + +// +function isPlainObject3(value) { + if (typeof value !== "object" || value === null) + return false; + let proto = value; + while (Object.getPrototypeOf(proto) !== null) { + proto = Object.getPrototypeOf(proto); + } + return Object.getPrototypeOf(value) === proto; +} +function deepMerge(...objects) { + const output = {}; + for (const obj of objects) { + for (const [key, value] of Object.entries(obj)) { + const prevValue = output[key]; + output[key] = isPlainObject3(prevValue) && isPlainObject3(value) ? deepMerge(prevValue, value) : value; + } + } + return output; +} +function makeTheme(...themes) { + const themesToMerge = [ + getDefaultTheme(), + ...themes.filter((theme) => theme != null) + ]; + return deepMerge(...themesToMerge); +} + +// +function usePrefix({ status = "idle", theme }) { + const [showLoader, setShowLoader] = useState(false); + const [tick, setTick] = useState(0); + const { prefix, spinner } = makeTheme(theme); + useEffect(() => { + if (status === "loading") { + let tickInterval; + let inc = -1; + const delayTimeout = setTimeout(() => { + setShowLoader(true); + tickInterval = setInterval(() => { + inc = inc + 1; + setTick(inc % spinner.frames.length); + }, spinner.interval); + }, 300); + return () => { + clearTimeout(delayTimeout); + clearInterval(tickInterval); + }; + } else { + setShowLoader(false); + } + }, [status]); + if (showLoader) { + return spinner.frames[tick]; + } + const iconName = status === "loading" ? "idle" : status; + return typeof prefix === "string" ? prefix : prefix[iconName] ?? prefix["idle"]; +} + +// +function useMemo(fn, dependencies) { + return withPointer((pointer) => { + const prev = pointer.get(); + if (!prev || prev.dependencies.length !== dependencies.length || prev.dependencies.some((dep, i) => dep !== dependencies[i])) { + const value = fn(); + pointer.set({ value, dependencies }); + return value; + } + return prev.value; + }); +} + +// +function useRef(val) { + return useState({ current: val })[0]; +} + +// +function useKeypress(userHandler) { + const signal = useRef(userHandler); + signal.current = userHandler; + useEffect((rl) => { + let ignore = false; + const handler2 = withUpdates((_input, event) => { + if (ignore) + return; + void signal.current(event, rl); + }); + rl.input.on("keypress", handler2); + return () => { + ignore = true; + rl.input.removeListener("keypress", handler2); + }; + }, []); +} + +// +var import_cli_width = __toESM(require_cli_width()); + +// +var getCodePointsLength = /* @__PURE__ */ (() => { + const SURROGATE_PAIR_RE = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + return (input) => { + let surrogatePairsNr = 0; + SURROGATE_PAIR_RE.lastIndex = 0; + while (SURROGATE_PAIR_RE.test(input)) { + surrogatePairsNr += 1; + } + return input.length - surrogatePairsNr; + }; +})(); +var isFullWidth2 = (x) => { + return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510; +}; +var isWideNotCJKTNotEmoji = (x) => { + return x === 8987 || x === 9001 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12771 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 19903 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141; +}; + +// +var ANSI_RE = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y; +var CONTROL_RE = /[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y; +var CJKT_WIDE_RE = /(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu; +var TAB_RE = /\t{1,1000}/y; +var EMOJI_RE = new RegExp("[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*", "yu"); +var LATIN_RE = /(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y; +var MODIFIER_RE = new RegExp("\\p{M}+", "gu"); +var NO_TRUNCATION = { limit: Infinity, ellipsis: "" }; +var getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => { + const LIMIT = truncationOptions.limit ?? Infinity; + const ELLIPSIS = truncationOptions.ellipsis ?? ""; + const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0); + const ANSI_WIDTH = 0; + const CONTROL_WIDTH = widthOptions.controlWidth ?? 0; + const TAB_WIDTH = widthOptions.tabWidth ?? 8; + const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2; + const FULL_WIDTH_WIDTH = 2; + const REGULAR_WIDTH = widthOptions.regularWidth ?? 1; + const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH; + const PARSE_BLOCKS = [ + [LATIN_RE, REGULAR_WIDTH], + [ANSI_RE, ANSI_WIDTH], + [CONTROL_RE, CONTROL_WIDTH], + [TAB_RE, TAB_WIDTH], + [EMOJI_RE, EMOJI_WIDTH], + [CJKT_WIDE_RE, WIDE_WIDTH] + ]; + let indexPrev = 0; + let index = 0; + let length = input.length; + let lengthExtra = 0; + let truncationEnabled = false; + let truncationIndex = length; + let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH); + let unmatchedStart = 0; + let unmatchedEnd = 0; + let width = 0; + let widthExtra = 0; + outer: + while (true) { + if (unmatchedEnd > unmatchedStart || index >= length && index > indexPrev) { + const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index); + lengthExtra = 0; + for (const char of unmatched.replaceAll(MODIFIER_RE, "")) { + const codePoint = char.codePointAt(0) || 0; + if (isFullWidth2(codePoint)) { + widthExtra = FULL_WIDTH_WIDTH; + } else if (isWideNotCJKTNotEmoji(codePoint)) { + widthExtra = WIDE_WIDTH; + } else { + widthExtra = REGULAR_WIDTH; + } + if (width + widthExtra > truncationLimit) { + truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra); + } + if (width + widthExtra > LIMIT) { + truncationEnabled = true; + break outer; + } + lengthExtra += char.length; + width += widthExtra; + } + unmatchedStart = unmatchedEnd = 0; + } + if (index >= length) { + break outer; + } + for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) { + const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i]; + BLOCK_RE.lastIndex = index; + if (BLOCK_RE.test(input)) { + lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index; + widthExtra = lengthExtra * BLOCK_WIDTH; + if (width + widthExtra > truncationLimit) { + truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH)); + } + if (width + widthExtra > LIMIT) { + truncationEnabled = true; + break outer; + } + width += widthExtra; + unmatchedStart = indexPrev; + unmatchedEnd = index; + index = indexPrev = BLOCK_RE.lastIndex; + continue outer; + } + } + index += 1; + } + return { + width: truncationEnabled ? truncationLimit : width, + index: truncationEnabled ? truncationIndex : length, + truncated: truncationEnabled, + ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH + }; +}; +var dist_default2 = getStringTruncatedWidth; + +// +var NO_TRUNCATION2 = { + limit: Infinity, + ellipsis: "", + ellipsisWidth: 0 +}; +var fastStringWidth = (input, options = {}) => { + return dist_default2(input, NO_TRUNCATION2, options).width; +}; +var dist_default3 = fastStringWidth; + +// +var ESC = "\x1B"; +var CSI = "\x9B"; +var END_CODE2 = 39; +var ANSI_ESCAPE_BELL2 = "\x07"; +var ANSI_CSI2 = "["; +var ANSI_OSC2 = "]"; +var ANSI_SGR_TERMINATOR2 = "m"; +var ANSI_ESCAPE_LINK2 = `${ANSI_OSC2}8;;`; +var GROUP_REGEX = new RegExp(`(?:\\${ANSI_CSI2}(?\\d+)m|\\${ANSI_ESCAPE_LINK2}(?.*)${ANSI_ESCAPE_BELL2})`, "y"); +var getClosingCode = (openingCode) => { + if (openingCode >= 30 && openingCode <= 37) + return 39; + if (openingCode >= 90 && openingCode <= 97) + return 39; + if (openingCode >= 40 && openingCode <= 47) + return 49; + if (openingCode >= 100 && openingCode <= 107) + return 49; + if (openingCode === 1 || openingCode === 2) + return 22; + if (openingCode === 3) + return 23; + if (openingCode === 4) + return 24; + if (openingCode === 7) + return 27; + if (openingCode === 8) + return 28; + if (openingCode === 9) + return 29; + if (openingCode === 0) + return 0; + return void 0; +}; +var wrapAnsiCode2 = (code) => `${ESC}${ANSI_CSI2}${code}${ANSI_SGR_TERMINATOR2}`; +var wrapAnsiHyperlink2 = (url) => `${ESC}${ANSI_ESCAPE_LINK2}${url}${ANSI_ESCAPE_BELL2}`; +var wrapWord2 = (rows, word, columns) => { + const characters = word[Symbol.iterator](); + let isInsideEscape = false; + let isInsideLinkEscape = false; + let lastRow = rows.at(-1); + let visible = lastRow === void 0 ? 0 : dist_default3(lastRow); + let currentCharacter = characters.next(); + let nextCharacter = characters.next(); + let rawCharacterIndex = 0; + while (!currentCharacter.done) { + const character = currentCharacter.value; + const characterLength = dist_default3(character); + if (visible + characterLength <= columns) { + rows[rows.length - 1] += character; + } else { + rows.push(character); + visible = 0; + } + if (character === ESC || character === CSI) { + isInsideEscape = true; + isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK2, rawCharacterIndex + 1); + } + if (isInsideEscape) { + if (isInsideLinkEscape) { + if (character === ANSI_ESCAPE_BELL2) { + isInsideEscape = false; + isInsideLinkEscape = false; + } + } else if (character === ANSI_SGR_TERMINATOR2) { + isInsideEscape = false; + } + } else { + visible += characterLength; + if (visible === columns && !nextCharacter.done) { + rows.push(""); + visible = 0; + } + } + currentCharacter = nextCharacter; + nextCharacter = characters.next(); + rawCharacterIndex += character.length; + } + lastRow = rows.at(-1); + if (!visible && lastRow !== void 0 && lastRow.length && rows.length > 1) { + rows[rows.length - 2] += rows.pop(); + } +}; +var stringVisibleTrimSpacesRight2 = (string) => { + const words = string.split(" "); + let last = words.length; + while (last) { + if (dist_default3(words[last - 1])) { + break; + } + last--; + } + if (last === words.length) { + return string; + } + return words.slice(0, last).join(" ") + words.slice(last).join(""); +}; +var exec2 = (string, columns, options = {}) => { + if (options.trim !== false && string.trim() === "") { + return ""; + } + let returnValue = ""; + let escapeCode; + let escapeUrl; + const words = string.split(" "); + let rows = [""]; + let rowLength = 0; + for (let index = 0; index < words.length; index++) { + const word = words[index]; + if (options.trim !== false) { + const row = rows.at(-1) ?? ""; + const trimmed = row.trimStart(); + if (row.length !== trimmed.length) { + rows[rows.length - 1] = trimmed; + rowLength = dist_default3(trimmed); + } + } + if (index !== 0) { + if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) { + rows.push(""); + rowLength = 0; + } + if (rowLength || options.trim === false) { + rows[rows.length - 1] += " "; + rowLength++; + } + } + const wordLength = dist_default3(word); + if (options.hard && wordLength > columns) { + const remainingColumns = columns - rowLength; + const breaksStartingThisLine = 1 + Math.floor((wordLength - remainingColumns - 1) / columns); + const breaksStartingNextLine = Math.floor((wordLength - 1) / columns); + if (breaksStartingNextLine < breaksStartingThisLine) { + rows.push(""); + } + wrapWord2(rows, word, columns); + rowLength = dist_default3(rows.at(-1) ?? ""); + continue; + } + if (rowLength + wordLength > columns && rowLength && wordLength) { + if (options.wordWrap === false && rowLength < columns) { + wrapWord2(rows, word, columns); + rowLength = dist_default3(rows.at(-1) ?? ""); + continue; + } + rows.push(""); + rowLength = 0; + } + if (rowLength + wordLength > columns && options.wordWrap === false) { + wrapWord2(rows, word, columns); + rowLength = dist_default3(rows.at(-1) ?? ""); + continue; + } + rows[rows.length - 1] += word; + rowLength += wordLength; + } + if (options.trim !== false) { + rows = rows.map((row) => stringVisibleTrimSpacesRight2(row)); + } + const preString = rows.join("\n"); + let inSurrogate = false; + for (let i = 0; i < preString.length; i++) { + const character = preString[i]; + returnValue += character; + if (!inSurrogate) { + inSurrogate = character >= "\uD800" && character <= "\uDBFF"; + if (inSurrogate) { + continue; + } + } else { + inSurrogate = false; + } + if (character === ESC || character === CSI) { + GROUP_REGEX.lastIndex = i + 1; + const groupsResult = GROUP_REGEX.exec(preString); + const groups = groupsResult?.groups; + if (groups?.code !== void 0) { + const code = Number.parseFloat(groups.code); + escapeCode = code === END_CODE2 ? void 0 : code; + } else if (groups?.uri !== void 0) { + escapeUrl = groups.uri.length === 0 ? void 0 : groups.uri; + } + } + if (preString[i + 1] === "\n") { + if (escapeUrl) { + returnValue += wrapAnsiHyperlink2(""); + } + const closingCode = escapeCode ? getClosingCode(escapeCode) : void 0; + if (escapeCode && closingCode) { + returnValue += wrapAnsiCode2(closingCode); + } + } else if (character === "\n") { + if (escapeCode && getClosingCode(escapeCode)) { + returnValue += wrapAnsiCode2(escapeCode); + } + if (escapeUrl) { + returnValue += wrapAnsiHyperlink2(escapeUrl); + } + } + } + return returnValue; +}; +var CRLF_OR_LF = /\r?\n/; +function wrapAnsi2(string, columns, options) { + return String(string).normalize().split(CRLF_OR_LF).map((line) => exec2(line, columns, options)).join("\n"); +} + +// +function breakLines(content, width) { + return content.split("\n").flatMap((line) => wrapAnsi2(line, width, { trim: false, wordWrap: false }).split("\n").map((str) => str.trimEnd())).join("\n"); +} +function readlineWidth() { + return (0, import_cli_width.default)({ defaultWidth: 80, output: readline().output }); +} + +// +function usePointerPosition({ active, renderedItems, pageSize, loop }) { + const state = useRef({ + lastPointer: active, + lastActive: void 0 + }); + const { lastPointer, lastActive } = state.current; + const middle = Math.floor(pageSize / 2); + const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0); + const defaultPointerPosition = renderedItems.slice(0, active).reduce((acc, item) => acc + item.length, 0); + let pointer = defaultPointerPosition; + if (renderedLength > pageSize) { + if (loop) { + pointer = lastPointer; + if ( + // First render, skip this logic. + lastActive != null && // Only move the pointer down when the user moves down. + lastActive < active && // Check user didn't move up across page boundary. + active - lastActive < pageSize + ) { + pointer = Math.min( + // Furthest allowed position for the pointer is the middle of the list + middle, + Math.abs(active - lastActive) === 1 ? Math.min( + // Move the pointer at most the height of the last active item. + lastPointer + (renderedItems[lastActive]?.length ?? 0), + // If the user moved by one item, move the pointer to the natural position of the active item as + // long as it doesn't move the cursor up. + Math.max(defaultPointerPosition, lastPointer) + ) : ( + // Otherwise, move the pointer down by the difference between the active and last active item. + lastPointer + active - lastActive + ) + ); + } + } else { + const spaceUnderActive = renderedItems.slice(active).reduce((acc, item) => acc + item.length, 0); + pointer = spaceUnderActive < pageSize - middle ? ( + // If the active item is near the end of the list, progressively move the cursor towards the end. + pageSize - spaceUnderActive + ) : ( + // Otherwise, progressively move the pointer to the middle of the list. + Math.min(defaultPointerPosition, middle) + ); + } + } + state.current.lastPointer = pointer; + state.current.lastActive = active; + return pointer; +} +function usePagination({ items, active, renderItem, pageSize, loop = true }) { + const width = readlineWidth(); + const bound = (num) => (num % items.length + items.length) % items.length; + const renderedItems = items.map((item, index) => { + if (item == null) + return []; + return breakLines(renderItem({ item, index, isActive: index === active }), width).split("\n"); + }); + const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0); + const renderItemAtIndex = (index) => renderedItems[index] ?? []; + const pointer = usePointerPosition({ active, renderedItems, pageSize, loop }); + const activeItem = renderItemAtIndex(active).slice(0, pageSize); + const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length; + const pageBuffer = Array.from({ length: pageSize }); + pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem); + const itemVisited = /* @__PURE__ */ new Set([active]); + let bufferPointer = activeItemPosition + activeItem.length; + let itemPointer = bound(active + 1); + while (bufferPointer < pageSize && !itemVisited.has(itemPointer) && (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) { + const lines = renderItemAtIndex(itemPointer); + const linesToAdd = lines.slice(0, pageSize - bufferPointer); + pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd); + itemVisited.add(itemPointer); + bufferPointer += linesToAdd.length; + itemPointer = bound(itemPointer + 1); + } + bufferPointer = activeItemPosition - 1; + itemPointer = bound(active - 1); + while (bufferPointer >= 0 && !itemVisited.has(itemPointer) && (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) { + const lines = renderItemAtIndex(itemPointer); + const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1)); + pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd); + itemVisited.add(itemPointer); + bufferPointer -= linesToAdd.length; + itemPointer = bound(itemPointer - 1); + } + return pageBuffer.filter((line) => typeof line === "string").join("\n"); +} + +// +var import_mute_stream = __toESM(require_lib2()); +import * as readline2 from "node:readline"; +import { AsyncResource as AsyncResource3 } from "node:async_hooks"; + +// +var signals = []; +signals.push("SIGHUP", "SIGINT", "SIGTERM"); +if (process.platform !== "win32") { + signals.push( + "SIGALRM", + "SIGABRT", + "SIGVTALRM", + "SIGXCPU", + "SIGXFSZ", + "SIGUSR2", + "SIGTRAP", + "SIGSYS", + "SIGQUIT", + "SIGIOT" + // should detect profiler and enable/disable accordingly. + // see #21 + // 'SIGPROF' + ); +} +if (process.platform === "linux") { + signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT"); +} + +// +var processOk = (process5) => !!process5 && typeof process5 === "object" && typeof process5.removeListener === "function" && typeof process5.emit === "function" && typeof process5.reallyExit === "function" && typeof process5.listeners === "function" && typeof process5.kill === "function" && typeof process5.pid === "number" && typeof process5.on === "function"; +var kExitEmitter = Symbol.for("signal-exit emitter"); +var global2 = globalThis; +var ObjectDefineProperty = Object.defineProperty.bind(Object); +var Emitter = class { + emitted = { + afterExit: false, + exit: false + }; + listeners = { + afterExit: [], + exit: [] + }; + count = 0; + id = Math.random(); + constructor() { + if (global2[kExitEmitter]) { + return global2[kExitEmitter]; + } + ObjectDefineProperty(global2, kExitEmitter, { + value: this, + writable: false, + enumerable: false, + configurable: false + }); + } + on(ev, fn) { + this.listeners[ev].push(fn); + } + removeListener(ev, fn) { + const list = this.listeners[ev]; + const i = list.indexOf(fn); + if (i === -1) { + return; + } + if (i === 0 && list.length === 1) { + list.length = 0; + } else { + list.splice(i, 1); + } + } + emit(ev, code, signal) { + if (this.emitted[ev]) { + return false; + } + this.emitted[ev] = true; + let ret = false; + for (const fn of this.listeners[ev]) { + ret = fn(code, signal) === true || ret; + } + if (ev === "exit") { + ret = this.emit("afterExit", code, signal) || ret; + } + return ret; + } +}; +var SignalExitBase = class { +}; +var signalExitWrap = (handler2) => { + return { + onExit(cb, opts) { + return handler2.onExit(cb, opts); + }, + load() { + return handler2.load(); + }, + unload() { + return handler2.unload(); + } + }; +}; +var SignalExitFallback = class extends SignalExitBase { + onExit() { + return () => { + }; + } + load() { + } + unload() { + } +}; +var SignalExit = class extends SignalExitBase { + // "SIGHUP" throws an `ENOSYS` error on Windows, + // so use a supported signal instead + /* c8 ignore start */ + #hupSig = process4.platform === "win32" ? "SIGINT" : "SIGHUP"; + /* c8 ignore stop */ + #emitter = new Emitter(); + #process; + #originalProcessEmit; + #originalProcessReallyExit; + #sigListeners = {}; + #loaded = false; + constructor(process5) { + super(); + this.#process = process5; + this.#sigListeners = {}; + for (const sig of signals) { + this.#sigListeners[sig] = () => { + const listeners = this.#process.listeners(sig); + let { count } = this.#emitter; + const p = process5; + if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") { + count += p.__signal_exit_emitter__.count; + } + if (listeners.length === count) { + this.unload(); + const ret = this.#emitter.emit("exit", null, sig); + const s = sig === "SIGHUP" ? this.#hupSig : sig; + if (!ret) + process5.kill(process5.pid, s); + } + }; + } + this.#originalProcessReallyExit = process5.reallyExit; + this.#originalProcessEmit = process5.emit; + } + onExit(cb, opts) { + if (!processOk(this.#process)) { + return () => { + }; + } + if (this.#loaded === false) { + this.load(); + } + const ev = opts?.alwaysLast ? "afterExit" : "exit"; + this.#emitter.on(ev, cb); + return () => { + this.#emitter.removeListener(ev, cb); + if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) { + this.unload(); + } + }; + } + load() { + if (this.#loaded) { + return; + } + this.#loaded = true; + this.#emitter.count += 1; + for (const sig of signals) { + try { + const fn = this.#sigListeners[sig]; + if (fn) + this.#process.on(sig, fn); + } catch (_) { + } + } + this.#process.emit = (ev, ...a) => { + return this.#processEmit(ev, ...a); + }; + this.#process.reallyExit = (code) => { + return this.#processReallyExit(code); + }; + } + unload() { + if (!this.#loaded) { + return; + } + this.#loaded = false; + signals.forEach((sig) => { + const listener = this.#sigListeners[sig]; + if (!listener) { + throw new Error("Listener not defined for signal: " + sig); + } + try { + this.#process.removeListener(sig, listener); + } catch (_) { + } + }); + this.#process.emit = this.#originalProcessEmit; + this.#process.reallyExit = this.#originalProcessReallyExit; + this.#emitter.count -= 1; + } + #processReallyExit(code) { + if (!processOk(this.#process)) { + return 0; + } + this.#process.exitCode = code || 0; + this.#emitter.emit("exit", this.#process.exitCode, null); + return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode); + } + #processEmit(ev, ...args) { + const og = this.#originalProcessEmit; + if (ev === "exit" && processOk(this.#process)) { + if (typeof args[0] === "number") { + this.#process.exitCode = args[0]; + } + const ret = og.call(this.#process, ev, ...args); + this.#emitter.emit("exit", this.#process.exitCode, null); + return ret; + } else { + return og.call(this.#process, ev, ...args); + } + } +}; +var process4 = globalThis.process; +var { + /** + * Called when the process is exiting, whether via signal, explicit + * exit, or running out of stuff to do. + * + * If the global process object is not suitable for instrumentation, + * then this will be a no-op. + * + * Returns a function that may be used to unload signal-exit. + */ + onExit, + /** + * Load the listeners. Likely you never need to call this, unless + * doing a rather deep integration with signal-exit functionality. + * Mostly exposed for the benefit of testing. + * + * @internal + */ + load, + /** + * Unload the listeners. Likely you never need to call this, unless + * doing a rather deep integration with signal-exit functionality. + * Mostly exposed for the benefit of testing. + * + * @internal + */ + unload +} = signalExitWrap(processOk(process4) ? new SignalExit(process4) : new SignalExitFallback()); + +// +import { stripVTControlCharacters as stripVTControlCharacters2 } from "node:util"; + +// +var ESC2 = "\x1B["; +var cursorLeft = ESC2 + "G"; +var cursorHide = ESC2 + "?25l"; +var cursorShow = ESC2 + "?25h"; +var cursorUp = (rows = 1) => rows > 0 ? `${ESC2}${rows}A` : ""; +var cursorDown = (rows = 1) => rows > 0 ? `${ESC2}${rows}B` : ""; +var cursorTo = (x, y) => { + if (typeof y === "number" && !Number.isNaN(y)) { + return `${ESC2}${y + 1};${x + 1}H`; + } + return `${ESC2}${x + 1}G`; +}; +var eraseLine = ESC2 + "2K"; +var eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : ""; + +// +var height = (content) => content.split("\n").length; +var lastLine = (content) => content.split("\n").pop() ?? ""; +var ScreenManager = class { + // These variables are keeping information to allow correct prompt re-rendering + height = 0; + extraLinesUnderPrompt = 0; + cursorPos; + rl; + constructor(rl) { + this.rl = rl; + this.cursorPos = rl.getCursorPos(); + } + write(content) { + this.rl.output.unmute(); + this.rl.output.write(content); + this.rl.output.mute(); + } + render(content, bottomContent = "") { + const promptLine = lastLine(content); + const rawPromptLine = stripVTControlCharacters2(promptLine); + let prompt = rawPromptLine; + if (this.rl.line.length > 0) { + prompt = prompt.slice(0, -this.rl.line.length); + } + this.rl.setPrompt(prompt); + this.cursorPos = this.rl.getCursorPos(); + const width = readlineWidth(); + content = breakLines(content, width); + bottomContent = breakLines(bottomContent, width); + if (rawPromptLine.length % width === 0) { + content += "\n"; + } + let output = content + (bottomContent ? "\n" + bottomContent : ""); + const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows; + const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0); + if (bottomContentHeight > 0) + output += cursorUp(bottomContentHeight); + output += cursorTo(this.cursorPos.cols); + this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output); + this.extraLinesUnderPrompt = bottomContentHeight; + this.height = height(output); + } + checkCursorPos() { + const cursorPos = this.rl.getCursorPos(); + if (cursorPos.cols !== this.cursorPos.cols) { + this.write(cursorTo(cursorPos.cols)); + this.cursorPos = cursorPos; + } + } + done({ clearContent }) { + this.rl.setPrompt(""); + let output = cursorDown(this.extraLinesUnderPrompt); + output += clearContent ? eraseLines(this.height) : "\n"; + output += cursorLeft; + output += cursorShow; + this.write(output); + this.rl.close(); + } +}; + +// +var PromisePolyfill = class extends Promise { + // Available starting from Node 22 + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers + static withResolver() { + let resolve5; + let reject; + const promise = new Promise((res, rej) => { + resolve5 = res; + reject = rej; + }); + return { promise, resolve: resolve5, reject }; + } +}; + +// +import path2 from "node:path"; +var nativeSetImmediate = globalThis.setImmediate; +function getCallSites() { + const savedPrepareStackTrace = Error.prepareStackTrace; + let result = []; + try { + Error.prepareStackTrace = (_, callSites) => { + const callSitesWithoutCurrent = callSites.slice(1); + result = callSitesWithoutCurrent; + return callSitesWithoutCurrent; + }; + new Error().stack; + } catch { + return result; + } + Error.prepareStackTrace = savedPrepareStackTrace; + return result; +} +function createPrompt(view) { + const callSites = getCallSites(); + const prompt = (config, context3 = {}) => { + const { input = process.stdin, signal } = context3; + const cleanups = /* @__PURE__ */ new Set(); + const output = new import_mute_stream.default(); + output.pipe(context3.output ?? process.stdout); + const rl = readline2.createInterface({ + terminal: true, + input, + output + }); + output.mute(); + const screen = new ScreenManager(rl); + const { promise, resolve: resolve5, reject } = PromisePolyfill.withResolver(); + const cancel = () => reject(new CancelPromptError()); + if (signal) { + const abort = () => reject(new AbortPromptError({ cause: signal.reason })); + if (signal.aborted) { + abort(); + return Object.assign(promise, { cancel }); + } + signal.addEventListener("abort", abort); + cleanups.add(() => signal.removeEventListener("abort", abort)); + } + cleanups.add(onExit((code, signal2) => { + reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal2}`)); + })); + const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`)); + rl.on("SIGINT", sigint); + cleanups.add(() => rl.removeListener("SIGINT", sigint)); + return withHooks(rl, (cycle) => { + const hooksCleanup = AsyncResource3.bind(() => effectScheduler.clearAll()); + rl.on("close", hooksCleanup); + cleanups.add(() => rl.removeListener("close", hooksCleanup)); + const startCycle = () => { + const checkCursorPos = () => screen.checkCursorPos(); + rl.input.on("keypress", checkCursorPos); + cleanups.add(() => rl.input.removeListener("keypress", checkCursorPos)); + let pendingDone = null; + cycle(() => { + let effectsSettled = false; + try { + const nextView = view(config, (value) => { + if (effectsSettled) { + resolve5(value); + } else { + pendingDone = { value }; + } + }); + if (nextView === void 0) { + let callerFilename = callSites[1]?.getFileName(); + if (callerFilename && !callerFilename.startsWith("file://")) { + callerFilename = path2.resolve(callerFilename); + } + throw new Error(`Prompt functions must return a string. + at ${callerFilename}`); + } + const [content, bottomContent] = typeof nextView === "string" ? [nextView] : nextView; + screen.render(content, bottomContent); + effectScheduler.run(); + } catch (error2) { + reject(error2); + } + effectsSettled = true; + if (pendingDone !== null) { + const { value } = pendingDone; + pendingDone = null; + resolve5(value); + } + }); + }; + if ("readableFlowing" in input) { + nativeSetImmediate(startCycle); + } else { + startCycle(); + } + return Object.assign(promise.then((answer) => { + effectScheduler.clearAll(); + return answer; + }, (error2) => { + effectScheduler.clearAll(); + throw error2; + }).finally(() => { + cleanups.forEach((cleanup) => cleanup()); + screen.done({ clearContent: Boolean(context3.clearPromptOnDone) }); + output.end(); + }).then(() => promise), { cancel }); + }); + }; + return prompt; +} + +// +import { styleText as styleText3 } from "node:util"; +var Separator = class { + separator = styleText3("dim", Array.from({ length: 15 }).join(dist_default.line)); + type = "separator"; + constructor(separator) { + if (separator) { + this.separator = separator; + } + } + static isSeparator(choice) { + return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator"); + } +}; + +// +import { styleText as styleText4 } from "node:util"; +var checkboxTheme = { + icon: { + checked: styleText4("green", dist_default.circleFilled), + unchecked: dist_default.circle, + cursor: dist_default.pointer, + disabledChecked: styleText4("green", dist_default.circleDouble), + disabledUnchecked: "-" + }, + style: { + disabled: (text) => styleText4("dim", text), + renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(", "), + description: (text) => styleText4("cyan", text), + keysHelpTip: (keys) => keys.map(([key, action]) => `${styleText4("bold", key)} ${styleText4("dim", action)}`).join(styleText4("dim", " \u2022 ")) + }, + i18n: { disabledError: "This option is disabled and cannot be toggled." } +}; +function isSelectable(item) { + return !Separator.isSeparator(item) && !item.disabled; +} +function isNavigable(item) { + return !Separator.isSeparator(item); +} +function isChecked(item) { + return !Separator.isSeparator(item) && item.checked; +} +function toggle(item) { + return isSelectable(item) ? { ...item, checked: !item.checked } : item; +} +function check(checked) { + return function(item) { + return isSelectable(item) ? { ...item, checked } : item; + }; +} +function normalizeChoices(choices) { + return choices.map((choice) => { + if (Separator.isSeparator(choice)) + return choice; + if (typeof choice !== "object" || choice === null || !("value" in choice)) { + const name2 = String(choice); + return { + value: choice, + name: name2, + short: name2, + checkedName: name2, + disabled: false, + checked: false + }; + } + const name = choice.name ?? String(choice.value); + const normalizedChoice = { + value: choice.value, + name, + short: choice.short ?? name, + checkedName: choice.checkedName ?? name, + disabled: choice.disabled ?? false, + checked: choice.checked ?? false + }; + if (choice.description) { + normalizedChoice.description = choice.description; + } + return normalizedChoice; + }); +} +var dist_default4 = createPrompt((config, done) => { + const { pageSize = 7, loop = true, required, validate: validate2 = () => true } = config; + const shortcuts = { all: "a", invert: "i", ...config.shortcuts }; + const theme = makeTheme(checkboxTheme, config.theme); + const { keybindings: keybindings2 } = theme; + const [status, setStatus] = useState("idle"); + const prefix = usePrefix({ status, theme }); + const [items, setItems] = useState(normalizeChoices(config.choices)); + const bounds = useMemo(() => { + const first = items.findIndex(isNavigable); + const last = items.findLastIndex(isNavigable); + if (first === -1) { + throw new ValidationError("[checkbox prompt] No selectable choices. All choices are disabled."); + } + return { first, last }; + }, [items]); + const [active, setActive] = useState(bounds.first); + const [errorMsg, setError] = useState(); + useKeypress(async (key) => { + if (isEnterKey(key)) { + const selection = items.filter(isChecked); + const isValid = await validate2([...selection]); + if (required && !selection.length) { + setError("At least one choice must be selected"); + } else if (isValid === true) { + setStatus("done"); + done(selection.map((choice) => choice.value)); + } else { + setError(isValid || "You must select a valid value"); + } + } else if (isUpKey(key, keybindings2) || isDownKey(key, keybindings2)) { + if (errorMsg) { + setError(void 0); + } + if (loop || isUpKey(key, keybindings2) && active !== bounds.first || isDownKey(key, keybindings2) && active !== bounds.last) { + const offset = isUpKey(key, keybindings2) ? -1 : 1; + let next = active; + do { + next = (next + offset + items.length) % items.length; + } while (!isNavigable(items[next])); + setActive(next); + } + } else if (isSpaceKey(key)) { + const activeItem = items[active]; + if (activeItem && !Separator.isSeparator(activeItem)) { + if (activeItem.disabled) { + setError(theme.i18n.disabledError); + } else { + setError(void 0); + setItems(items.map((choice, i) => i === active ? toggle(choice) : choice)); + } + } + } else if (key.name === shortcuts.all) { + const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked); + setItems(items.map(check(selectAll))); + } else if (key.name === shortcuts.invert) { + setItems(items.map(toggle)); + } else if (isNumberKey(key)) { + const selectedIndex = Number(key.name) - 1; + let selectableIndex = -1; + const position = items.findIndex((item) => { + if (Separator.isSeparator(item)) + return false; + selectableIndex++; + return selectableIndex === selectedIndex; + }); + const selectedItem = items[position]; + if (selectedItem && isSelectable(selectedItem)) { + setActive(position); + setItems(items.map((choice, i) => i === position ? toggle(choice) : choice)); + } + } + }); + const message = theme.style.message(config.message, status); + let description; + const page = usePagination({ + items, + active, + renderItem({ item, isActive }) { + if (Separator.isSeparator(item)) { + return ` ${item.separator}`; + } + const cursor = isActive ? theme.icon.cursor : " "; + if (item.disabled) { + const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)"; + const checkbox2 = item.checked ? theme.icon.disabledChecked : theme.icon.disabledUnchecked; + return theme.style.disabled(`${cursor}${checkbox2} ${item.name} ${disabledLabel}`); + } + if (isActive) { + description = item.description; + } + const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked; + const name = item.checked ? item.checkedName : item.name; + const color = isActive ? theme.style.highlight : (x) => x; + return color(`${cursor}${checkbox} ${name}`); + }, + pageSize, + loop + }); + if (status === "done") { + const selection = items.filter(isChecked); + const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items)); + return [prefix, message, answer].filter(Boolean).join(" "); + } + const keys = [ + ["\u2191\u2193", "navigate"], + ["space", "select"] + ]; + if (shortcuts.all) + keys.push([shortcuts.all, "all"]); + if (shortcuts.invert) + keys.push([shortcuts.invert, "invert"]); + keys.push(["\u23CE", "submit"]); + const helpLine = theme.style.keysHelpTip(keys); + const lines = [ + [prefix, message].filter(Boolean).join(" "), + page, + " ", + description ? theme.style.description(description) : "", + errorMsg ? theme.style.error(errorMsg) : "", + helpLine + ].filter(Boolean).join("\n").trimEnd(); + return `${lines}${cursorHide}`; +}); + +// +var import_chardet = __toESM(require_lib3()); +var import_iconv_lite = __toESM(require_lib4()); +import { spawn, spawnSync as spawnSync2 } from "node:child_process"; +import { mkdtempSync, readFileSync as readFileSync5, rmSync, writeFileSync } from "node:fs"; +import path3 from "node:path"; +import os5 from "node:os"; +import { randomUUID } from "node:crypto"; + +// +var CreateFileError = class extends Error { + name = "CreateFileError"; + originalError; + constructor(originalError) { + super(`Failed to create temporary file.${originalError instanceof Error ? ` ${originalError.message}` : ""}`, { cause: originalError }); + this.originalError = originalError; + } +}; +var LaunchEditorError = class extends Error { + name = "LaunchEditorError"; + originalError; + constructor(originalError) { + super(`Failed to launch editor.${originalError instanceof Error ? ` ${originalError.message}` : ""}`, { cause: originalError }); + this.originalError = originalError; + } +}; +var ReadFileError = class extends Error { + name = "ReadFileError"; + originalError; + constructor(originalError) { + super(`Failed to read temporary file.${originalError instanceof Error ? ` ${originalError.message}` : ""}`, { cause: originalError }); + this.originalError = originalError; + } +}; +var RemoveFileError = class extends Error { + name = "RemoveFileError"; + originalError; + constructor(originalError) { + super(`Failed to remove temporary file.${originalError instanceof Error ? ` ${originalError.message}` : ""}`, { cause: originalError }); + this.originalError = originalError; + } +}; + +// +function parseEditorCommand(editor) { + let bin; + let rest; + if (editor.startsWith('"')) { + const closeQuote = editor.indexOf('"', 1); + if (closeQuote === -1) { + bin = editor.slice(1); + rest = ""; + } else { + bin = editor.substring(1, closeQuote); + rest = editor.substring(closeQuote + 1).trim(); + } + } else { + const firstSpace = editor.indexOf(" "); + if (firstSpace === -1) { + bin = editor; + rest = ""; + } else { + bin = editor.substring(0, firstSpace); + rest = editor.substring(firstSpace + 1).trim(); + } + } + return { bin, args: rest ? rest.split(/\s+/) : [] }; +} + +// +var editAsync = (text, callbackOrOptions, fileOptions) => { + const callback = typeof callbackOrOptions === "function" ? callbackOrOptions : void 0; + const options = typeof callbackOrOptions === "function" ? fileOptions : callbackOrOptions; + return new ExternalEditor(text, options).runAsync(callback); +}; +function sanitizeAffix(affix) { + if (!affix) + return ""; + return affix.replace(/[^a-zA-Z0-9_.-]/g, "_"); +} +var ExternalEditor = class { + editor; + lastExitStatus = 0; + text = ""; + tempFile = ""; + tempDir = ""; + fileOptions = {}; + constructor(text = "", fileOptions = {}) { + this.text = text; + this.fileOptions = fileOptions; + this.editor = parseEditorCommand(process.env["VISUAL"] ?? process.env["EDITOR"] ?? (process.platform.startsWith("win") ? "notepad" : "vim")); + } + run() { + this.createTempFile(); + try { + try { + const editorProcess = spawnSync2(this.editor.bin, this.editorArgs(), { + shell: false, + stdio: "inherit" + }); + if (editorProcess.error) { + throw editorProcess.error; + } + this.lastExitStatus = editorProcess.status ?? 0; + } catch (launchError) { + throw new LaunchEditorError(launchError); + } + this.readTemporaryFile(); + return this.text; + } finally { + this.cleanup(); + } + } + runAsync(callback) { + this.createTempFile(); + const promise = new Promise((resolve5, reject) => { + try { + const editorProcess = spawn(this.editor.bin, this.editorArgs(), { + shell: false, + stdio: "inherit" + }); + editorProcess.once("error", (launchError) => { + reject(new LaunchEditorError(launchError)); + }); + editorProcess.once("exit", (code) => { + this.lastExitStatus = code ?? 0; + resolve5(); + }); + } catch (launchError) { + reject(new LaunchEditorError(launchError)); + } + }).then(() => { + this.readTemporaryFile(); + return this.text; + }).finally(() => { + this.cleanup(); + }); + if (callback) { + promise.then((text) => callback(void 0, text), (err) => callback(err instanceof Error ? err : new Error(String(err)), void 0)); + } + return promise; + } + cleanup() { + if (!this.tempDir) + return; + try { + rmSync(this.tempDir, { force: true, recursive: true }); + this.tempFile = ""; + this.tempDir = ""; + } catch (removeFileError) { + throw new RemoveFileError(removeFileError); + } + } + createTempFile() { + try { + const baseDir = path3.resolve(this.fileOptions.dir ?? os5.tmpdir()); + this.tempDir = mkdtempSync(path3.join(baseDir, "inquirer-editor-")); + const id = randomUUID(); + const prefix = sanitizeAffix(this.fileOptions.prefix); + const postfix = sanitizeAffix(this.fileOptions.postfix); + const filename = `${prefix}${id}${postfix}`; + this.tempFile = path3.join(this.tempDir, filename); + const opt = { encoding: "utf8", flag: "wx" }; + if (Object.prototype.hasOwnProperty.call(this.fileOptions, "mode")) { + opt.mode = this.fileOptions.mode; + } + writeFileSync(this.tempFile, this.text, opt); + } catch (createFileError) { + throw new CreateFileError(createFileError); + } + } + editorArgs() { + return [...this.editor.args, this.tempFile]; + } + readTemporaryFile() { + try { + const tempFileBuffer = readFileSync5(this.tempFile); + if (tempFileBuffer.length === 0) { + this.text = ""; + } else { + let encoding = (0, import_chardet.detect)(tempFileBuffer) ?? "utf8"; + if (!import_iconv_lite.default.encodingExists(encoding)) { + encoding = "utf8"; + } + this.text = import_iconv_lite.default.decode(tempFileBuffer, encoding); + } + } catch (readFileError) { + throw new ReadFileError(readFileError); + } + } +}; + +// +var editorTheme = { + validationFailureMode: "keep", + style: { + loadingMessage: () => "Validating...", + waitingMessage: (enterKey) => `Press ${enterKey} to launch your preferred editor.` + } +}; +var dist_default5 = createPrompt((config, done) => { + const { waitForUserInput = true, file: { postfix = config.postfix ?? ".txt", ...fileProps } = {}, validate: validate2 = () => true } = config; + const theme = makeTheme(editorTheme, config.theme); + const [status, setStatus] = useState("idle"); + const [value = "", setValue] = useState(config.default); + const [errorMsg, setError] = useState(); + const prefix = usePrefix({ status, theme }); + async function startEditor(rl) { + rl.pause(); + try { + const answer = await editAsync(value, { postfix, ...fileProps }); + rl.resume(); + setStatus("loading"); + const isValid = await validate2(answer); + if (isValid === true) { + setError(void 0); + setStatus("done"); + done(answer); + } else { + if (theme.validationFailureMode === "clear") { + setValue(config.default); + } else { + setValue(answer); + } + setError(isValid || "You must provide a valid value"); + setStatus("idle"); + } + } catch (error3) { + rl.resume(); + setError(String(error3)); + } + } + useEffect((rl) => { + if (!waitForUserInput) { + void startEditor(rl); + } + }, []); + useKeypress((key, rl) => { + if (status !== "idle") { + return; + } + if (isEnterKey(key)) { + void startEditor(rl); + } + }); + const message = theme.style.message(config.message, status); + let helpTip = ""; + if (status === "loading") { + helpTip = theme.style.help(theme.style.loadingMessage()); + } else if (status === "idle") { + const enterKey = theme.style.key("enter"); + helpTip = theme.style.help(theme.style.waitingMessage(enterKey)); + } + let error2 = ""; + if (errorMsg) { + error2 = theme.style.error(errorMsg); + } + return [[prefix, message, helpTip].filter(Boolean).join(" "), error2]; +}); + +// +function getBooleanValue(value, defaultValue) { + let answer = defaultValue !== false; + if (/^(y|yes)/i.test(value)) + answer = true; + else if (/^(n|no)/i.test(value)) + answer = false; + return answer; +} +function boolToString(value) { + return value ? "Yes" : "No"; +} +var dist_default6 = createPrompt((config, done) => { + const { transformer = boolToString } = config; + const [status, setStatus] = useState("idle"); + const [value, setValue] = useState(""); + const theme = makeTheme(config.theme); + const prefix = usePrefix({ status, theme }); + useKeypress((key, rl) => { + if (status !== "idle") + return; + if (isEnterKey(key)) { + const answer = getBooleanValue(value, config.default); + setValue(transformer(answer)); + setStatus("done"); + done(answer); + } else if (isTabKey(key)) { + const answer = boolToString(!getBooleanValue(value, config.default)); + rl.clearLine(0); + rl.write(answer); + setValue(answer); + } else { + setValue(rl.line); + } + }); + let formattedValue = value; + let defaultValue = ""; + if (status === "done") { + formattedValue = theme.style.answer(value); + } else { + defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? "y/N" : "Y/n")}`; + } + const message = theme.style.message(config.message, status); + return `${prefix} ${message}${defaultValue} ${formattedValue}`; +}); + +// +var inputTheme = { + validationFailureMode: "keep" +}; +var dist_default7 = createPrompt((config, done) => { + const { prefill = "tab" } = config; + const theme = makeTheme(inputTheme, config.theme); + const [status, setStatus] = useState("idle"); + const [defaultValue, setDefaultValue] = useState(String(config.default ?? "")); + const [errorMsg, setError] = useState(); + const [value, setValue] = useState(""); + const prefix = usePrefix({ status, theme }); + async function validate2(value2) { + const { required, pattern, patternError = "Invalid input" } = config; + if (required && !value2) { + return "You must provide a value"; + } + if (pattern && !pattern.test(value2)) { + return patternError; + } + if (typeof config.validate === "function") { + return await config.validate(value2) || "You must provide a valid value"; + } + return true; + } + useKeypress(async (key, rl) => { + if (status !== "idle") { + return; + } + if (isEnterKey(key)) { + const answer = value || defaultValue; + setStatus("loading"); + const isValid = await validate2(answer); + if (isValid === true) { + setValue(answer); + setStatus("done"); + done(answer); + } else { + if (theme.validationFailureMode === "clear") { + setValue(""); + } else { + rl.write(value); + } + setError(isValid); + setStatus("idle"); + } + } else if (isBackspaceKey(key) && !value) { + setDefaultValue(""); + } else if (isTabKey(key) && !value) { + setDefaultValue(""); + rl.clearLine(0); + rl.write(defaultValue); + setValue(defaultValue); + } else { + setValue(rl.line); + setError(void 0); + } + }); + useEffect((rl) => { + if (prefill === "editable" && defaultValue) { + rl.write(defaultValue); + setValue(defaultValue); + } + }, []); + const message = theme.style.message(config.message, status); + let formattedValue = value; + if (typeof config.transformer === "function") { + formattedValue = config.transformer(value, { isFinal: status === "done" }); + } else if (status === "done") { + formattedValue = theme.style.answer(value); + } + let defaultStr; + if (defaultValue && status !== "done" && !value) { + defaultStr = theme.style.defaultAnswer(defaultValue); + } + let error2 = ""; + if (errorMsg) { + error2 = theme.style.error(errorMsg); + } + return [ + [prefix, message, defaultStr, formattedValue].filter((v) => v !== void 0).join(" "), + error2 + ]; +}); + +// +function isStepOf(value, step, min) { + const valuePow = value * Math.pow(10, 6); + const stepPow = step * Math.pow(10, 6); + const minPow = min * Math.pow(10, 6); + return (valuePow - (Number.isFinite(min) ? minPow : 0)) % stepPow === 0; +} +function validateNumber(value, { min, max, step }) { + if (value == null || Number.isNaN(value)) { + return false; + } else if (value < min || value > max) { + return `Value must be between ${min} and ${max}`; + } else if (step !== "any" && !isStepOf(value, step, min)) { + return `Value must be a multiple of ${step}${Number.isFinite(min) ? ` starting from ${min}` : ""}`; + } + return true; +} +var dist_default8 = createPrompt((config, done) => { + const { validate: validate2 = () => true, min = -Infinity, max = Infinity, step = 1, required = false } = config; + const theme = makeTheme(config.theme); + const [status, setStatus] = useState("idle"); + const [value, setValue] = useState(""); + const validDefault = validateNumber(config.default, { min, max, step }) === true ? config.default?.toString() : void 0; + const [defaultValue = "", setDefaultValue] = useState(validDefault); + const [errorMsg, setError] = useState(); + const prefix = usePrefix({ status, theme }); + useKeypress(async (key, rl) => { + if (status !== "idle") { + return; + } + if (isEnterKey(key)) { + const input = value || defaultValue; + const answer = input === "" ? void 0 : Number(input); + setStatus("loading"); + let isValid = true; + if (required || answer != null) { + isValid = validateNumber(answer, { min, max, step }); + } + if (isValid === true && answer != null) { + isValid = await validate2(answer); + } + if (isValid === true) { + setValue(String(answer ?? "")); + setStatus("done"); + done(answer); + } else { + rl.write(value); + setError(isValid || "You must provide a valid numeric value"); + setStatus("idle"); + } + } else if (isBackspaceKey(key) && !value) { + setDefaultValue(void 0); + } else if (isTabKey(key) && !value) { + setDefaultValue(void 0); + rl.clearLine(0); + rl.write(defaultValue); + setValue(defaultValue); + } else { + setValue(rl.line); + setError(void 0); + } + }); + const message = theme.style.message(config.message, status); + let formattedValue = value; + if (status === "done") { + formattedValue = theme.style.answer(value); + } + let defaultStr; + if (defaultValue && status !== "done" && !value) { + defaultStr = theme.style.defaultAnswer(defaultValue); + } + let error2 = ""; + if (errorMsg) { + error2 = theme.style.error(errorMsg); + } + return [ + [prefix, message, defaultStr, formattedValue].filter((v) => v !== void 0).join(" "), + error2 + ]; +}); + +// +import { styleText as styleText5 } from "node:util"; +function normalizeChoices2(choices) { + return choices.map((choice) => { + if (Separator.isSeparator(choice)) { + return choice; + } + const name = "name" in choice ? choice.name : String(choice.value); + const value = "value" in choice ? choice.value : name; + return { + // oxlint-disable-next-line typescript/no-unsafe-type-assertion + value, + name, + key: choice.key + }; + }); +} +var helpChoice = { + key: "h", + name: "Help, list all options", + value: void 0 +}; +var expand2 = createPrompt((config, done) => { + const { default: defaultKey = "h" } = config; + const choices = useMemo(() => normalizeChoices2(config.choices), [config.choices]); + const [status, setStatus] = useState("idle"); + const [value, setValue] = useState(""); + const [expanded, setExpanded] = useState(config.expanded ?? false); + const [errorMsg, setError] = useState(); + const theme = makeTheme(config.theme); + const prefix = usePrefix({ theme, status }); + useKeypress((event, rl) => { + if (isEnterKey(event)) { + const answer = (value || defaultKey).toLowerCase(); + if (answer === "h" && !expanded) { + setExpanded(true); + } else { + const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === answer); + if (selectedChoice) { + setStatus("done"); + setValue(answer); + done(selectedChoice.value); + } else if (value === "") { + setError("Please input a value"); + } else { + setError(`"${styleText5("red", value)}" isn't an available option`); + } + } + } else { + setValue(rl.line); + setError(void 0); + } + }); + const message = theme.style.message(config.message, status); + if (status === "done") { + const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase()); + return `${prefix} ${message} ${theme.style.answer(selectedChoice.name)}`; + } + const allChoices = expanded ? choices : [...choices, helpChoice]; + let longChoices = ""; + let shortChoices = allChoices.map((choice) => { + if (Separator.isSeparator(choice)) + return ""; + if (choice.key === defaultKey) { + return choice.key.toUpperCase(); + } + return choice.key; + }).join(""); + shortChoices = ` ${theme.style.defaultAnswer(shortChoices)}`; + if (expanded) { + shortChoices = ""; + longChoices = allChoices.map((choice) => { + if (Separator.isSeparator(choice)) { + return ` ${choice.separator}`; + } + const line = ` ${choice.key}) ${choice.name}`; + if (choice.key === value.toLowerCase()) { + return theme.style.highlight(line); + } + return line; + }).join("\n"); + } + let helpTip = ""; + const currentOption = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase()); + if (currentOption) { + helpTip = `${styleText5("cyan", ">>")} ${currentOption.name}`; + } + let error2 = ""; + if (errorMsg) { + error2 = theme.style.error(errorMsg); + } + return [ + `${prefix} ${message}${shortChoices} ${value}`, + [longChoices, helpTip, error2].filter(Boolean).join("\n") + ]; +}); + +// +import { styleText as styleText6 } from "node:util"; +var numberRegex = /\d+/; +var rawlistTheme = { + style: { + description: (text) => styleText6("cyan", text) + } +}; +function isSelectableChoice(choice) { + return choice != null && !Separator.isSeparator(choice); +} +function normalizeChoices3(choices) { + let index = 0; + return choices.map((choice) => { + if (Separator.isSeparator(choice)) + return choice; + index += 1; + if (typeof choice !== "object" || choice === null || !("value" in choice)) { + const name2 = String(choice); + return { + value: choice, + name: name2, + short: name2, + key: String(index) + }; + } + const name = choice.name ?? String(choice.value); + return { + value: choice.value, + name, + short: choice.short ?? name, + key: choice.key ?? String(index), + description: choice.description + }; + }); +} +function getSelectedChoice(input, choices) { + let selectedChoice; + const selectableChoices = choices.filter(isSelectableChoice); + selectedChoice = selectableChoices.find((choice) => choice.key === input); + if (!selectedChoice && numberRegex.test(input)) { + const answer = Number.parseInt(input, 10) - 1; + selectedChoice = selectableChoices[answer]; + } + return selectedChoice ? [selectedChoice, choices.indexOf(selectedChoice)] : [void 0, void 0]; +} +var dist_default9 = createPrompt((config, done) => { + const { loop = true } = config; + const choices = useMemo(() => normalizeChoices3(config.choices), [config.choices]); + const [status, setStatus] = useState("idle"); + const [value, setValue] = useState(() => { + const defaultChoice = config.default == null ? void 0 : choices.find((choice) => isSelectableChoice(choice) && choice.value === config.default); + return defaultChoice?.key ?? ""; + }); + const [errorMsg, setError] = useState(); + const theme = makeTheme(rawlistTheme, config.theme); + const { keybindings: keybindings2 } = theme; + const prefix = usePrefix({ status, theme }); + const bounds = useMemo(() => { + const first = choices.findIndex(isSelectableChoice); + const last = choices.findLastIndex(isSelectableChoice); + if (first === -1) { + throw new ValidationError("[select prompt] No selectable choices. All choices are disabled."); + } + return { first, last }; + }, [choices]); + useKeypress((key, rl) => { + if (isEnterKey(key)) { + const [selectedChoice2] = getSelectedChoice(value, choices); + if (isSelectableChoice(selectedChoice2)) { + setValue(selectedChoice2.short); + setStatus("done"); + done(selectedChoice2.value); + } else if (value === "") { + setError("Please input a value"); + } else { + setError(`"${styleText6("red", value)}" isn't an available option`); + } + } else if (isUpKey(key, keybindings2) || isDownKey(key, keybindings2)) { + rl.clearLine(0); + const [selectedChoice2, active] = getSelectedChoice(value, choices); + if (!selectedChoice2) { + const firstChoice = isDownKey(key, keybindings2) ? choices.find(isSelectableChoice) : choices.findLast(isSelectableChoice); + setValue(firstChoice.key); + } else if (loop || isUpKey(key, keybindings2) && active !== bounds.first || isDownKey(key, keybindings2) && active !== bounds.last) { + const offset = isUpKey(key, keybindings2) ? -1 : 1; + let next = active; + let nextChoice; + do { + next = (next + offset + choices.length) % choices.length; + nextChoice = choices[next]; + } while (!isSelectableChoice(nextChoice)); + setValue(nextChoice.key); + } + } else { + setValue(rl.line); + setError(void 0); + } + }); + const message = theme.style.message(config.message, status); + if (status === "done") { + return `${prefix} ${message} ${theme.style.answer(value)}`; + } + const choicesStr = choices.map((choice) => { + if (Separator.isSeparator(choice)) { + return ` ${choice.separator}`; + } + const line = ` ${choice.key}) ${choice.name}`; + if (choice.key === value) { + return theme.style.highlight(line); + } + return line; + }).join("\n"); + let error2 = ""; + if (errorMsg) { + error2 = theme.style.error(errorMsg); + } + const [selectedChoice] = getSelectedChoice(value, choices); + let description = ""; + if (!errorMsg && selectedChoice?.description) { + description = theme.style.description(selectedChoice.description); + } + return [ + `${prefix} ${message} ${value}`, + [choicesStr, error2, description].filter(Boolean).join("\n") + ]; +}); + +// +var passwordTheme = { + style: { + maskedText: "[input is masked]" + } +}; +var dist_default10 = createPrompt((config, done) => { + const { validate: validate2 = () => true } = config; + const theme = makeTheme(passwordTheme, config.theme); + const [status, setStatus] = useState("idle"); + const [errorMsg, setError] = useState(); + const [value, setValue] = useState(""); + const prefix = usePrefix({ status, theme }); + useKeypress(async (key, rl) => { + if (status !== "idle") { + return; + } + if (isEnterKey(key)) { + const answer = value; + setStatus("loading"); + const isValid = await validate2(answer); + if (isValid === true) { + setValue(answer); + setStatus("done"); + done(answer); + } else { + rl.write(value); + setError(isValid || "You must provide a valid value"); + setStatus("idle"); + } + } else { + setValue(rl.line); + setError(void 0); + } + }); + const message = theme.style.message(config.message, status); + let formattedValue = ""; + let helpTip; + if (config.mask) { + const maskChar = typeof config.mask === "string" ? config.mask : "*"; + formattedValue = maskChar.repeat(value.length); + } else if (status !== "done") { + helpTip = `${theme.style.help(theme.style.maskedText)}${cursorHide}`; + } + if (status === "done") { + formattedValue = theme.style.answer(formattedValue); + } + let error2 = ""; + if (errorMsg) { + error2 = theme.style.error(errorMsg); + } + return [[prefix, message, config.mask ? formattedValue : helpTip].join(" "), error2]; +}); + +// +import { styleText as styleText7 } from "node:util"; +var searchTheme = { + icon: { cursor: dist_default.pointer }, + style: { + disabled: (text) => styleText7("dim", `- ${text}`), + searchTerm: (text) => styleText7("cyan", text), + description: (text) => styleText7("cyan", text), + keysHelpTip: (keys) => keys.map(([key, action]) => `${styleText7("bold", key)} ${styleText7("dim", action)}`).join(styleText7("dim", " \u2022 ")) + } +}; +function isSelectable2(item) { + return !Separator.isSeparator(item) && !item.disabled; +} +function normalizeChoices4(choices) { + return choices.map((choice) => { + if (Separator.isSeparator(choice)) + return choice; + if (typeof choice !== "object" || choice === null || !("value" in choice)) { + const name2 = String(choice); + return { + value: choice, + name: name2, + short: name2, + disabled: false + }; + } + const name = choice.name ?? String(choice.value); + const normalizedChoice = { + value: choice.value, + name, + short: choice.short ?? name, + disabled: choice.disabled ?? false + }; + if (choice.description) { + normalizedChoice.description = choice.description; + } + return normalizedChoice; + }); +} +var dist_default11 = createPrompt((config, done) => { + const { pageSize = 7, validate: validate2 = () => true } = config; + const theme = makeTheme(searchTheme, config.theme); + const [status, setStatus] = useState("loading"); + const [searchTerm, setSearchTerm] = useState(""); + const [searchResults, setSearchResults] = useState([]); + const [searchError, setSearchError] = useState(); + const defaultApplied = useRef(false); + const prefix = usePrefix({ status, theme }); + const bounds = useMemo(() => { + const first = searchResults.findIndex(isSelectable2); + const last = searchResults.findLastIndex(isSelectable2); + return { first, last }; + }, [searchResults]); + const [active = bounds.first, setActive] = useState(); + useEffect(() => { + const controller = new AbortController(); + setStatus("loading"); + setSearchError(void 0); + const fetchResults = async () => { + try { + const results = await config.source(searchTerm || void 0, { + signal: controller.signal + }); + if (!controller.signal.aborted) { + const normalized = normalizeChoices4(results); + let initialActive; + if (!defaultApplied.current && "default" in config) { + const defaultIndex = normalized.findIndex((item) => isSelectable2(item) && item.value === config.default); + initialActive = defaultIndex === -1 ? void 0 : defaultIndex; + defaultApplied.current = true; + } + setActive(initialActive); + setSearchError(void 0); + setSearchResults(normalized); + setStatus("idle"); + } + } catch (error3) { + if (!controller.signal.aborted && error3 instanceof Error) { + setSearchError(error3.message); + } + } + }; + void fetchResults(); + return () => { + controller.abort(); + }; + }, [searchTerm]); + const selectedChoice = searchResults[active]; + useKeypress(async (key, rl) => { + if (isEnterKey(key)) { + if (selectedChoice) { + setStatus("loading"); + const isValid = await validate2(selectedChoice.value); + setStatus("idle"); + if (isValid === true) { + setStatus("done"); + done(selectedChoice.value); + } else if (selectedChoice.name === searchTerm) { + setSearchError(isValid || "You must provide a valid value"); + } else { + rl.write(selectedChoice.name); + setSearchTerm(selectedChoice.name); + } + } else { + rl.write(searchTerm); + } + } else if (isTabKey(key) && selectedChoice) { + rl.clearLine(0); + rl.write(selectedChoice.name); + setSearchTerm(selectedChoice.name); + } else if (status !== "loading" && (isUpKey(key) || isDownKey(key))) { + rl.clearLine(0); + if (isUpKey(key) && active !== bounds.first || isDownKey(key) && active !== bounds.last) { + const offset = isUpKey(key) ? -1 : 1; + let next = active; + do { + next = (next + offset + searchResults.length) % searchResults.length; + } while (!isSelectable2(searchResults[next])); + setActive(next); + } + } else { + setSearchTerm(rl.line); + } + }); + const message = theme.style.message(config.message, status); + const helpLine = theme.style.keysHelpTip([ + ["\u2191\u2193", "navigate"], + ["\u23CE", "select"] + ]); + const page = usePagination({ + items: searchResults, + active, + renderItem({ item, isActive }) { + if (Separator.isSeparator(item)) { + return ` ${item.separator}`; + } + if (item.disabled) { + const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)"; + return theme.style.disabled(`${item.name} ${disabledLabel}`); + } + const color = isActive ? theme.style.highlight : (x) => x; + const cursor = isActive ? theme.icon.cursor : ` `; + return color(`${cursor} ${item.name}`); + }, + pageSize, + loop: false + }); + let error2; + if (searchError) { + error2 = theme.style.error(searchError); + } else if (searchResults.length === 0 && searchTerm !== "" && status === "idle") { + error2 = theme.style.error("No results found"); + } + let searchStr; + if (status === "done" && selectedChoice) { + return [prefix, message, theme.style.answer(selectedChoice.short)].filter(Boolean).join(" ").trimEnd(); + } else { + searchStr = theme.style.searchTerm(searchTerm); + } + const description = selectedChoice?.description; + const header = [prefix, message, searchStr].filter(Boolean).join(" ").trimEnd(); + const body = [ + error2 ?? page, + " ", + description ? theme.style.description(description) : "", + helpLine + ].filter(Boolean).join("\n").trimEnd(); + return [header, body]; +}); + +// +import { styleText as styleText8 } from "node:util"; +var selectTheme = { + icon: { cursor: dist_default.pointer }, + style: { + disabled: (text) => styleText8("dim", text), + description: (text) => styleText8("cyan", text), + keysHelpTip: (keys) => keys.map(([key, action]) => `${styleText8("bold", key)} ${styleText8("dim", action)}`).join(styleText8("dim", " \u2022 ")) + }, + i18n: { disabledError: "This option is disabled and cannot be selected." }, + indexMode: "hidden" +}; +function isSelectable3(item) { + return !Separator.isSeparator(item) && !item.disabled; +} +function isNavigable2(item) { + return !Separator.isSeparator(item); +} +function normalizeChoices5(choices) { + return choices.map((choice) => { + if (Separator.isSeparator(choice)) + return choice; + if (typeof choice !== "object" || choice === null || !("value" in choice)) { + const name2 = String(choice); + return { + value: choice, + name: name2, + short: name2, + disabled: false + }; + } + const name = choice.name ?? String(choice.value); + const normalizedChoice = { + value: choice.value, + name, + short: choice.short ?? name, + disabled: choice.disabled ?? false + }; + if (choice.description) { + normalizedChoice.description = choice.description; + } + return normalizedChoice; + }); +} +var dist_default12 = createPrompt((config, done) => { + const { loop = true, pageSize = 7 } = config; + const theme = makeTheme(selectTheme, config.theme); + const { keybindings: keybindings2 } = theme; + const [status, setStatus] = useState("idle"); + const prefix = usePrefix({ status, theme }); + const searchTimeoutRef = useRef(); + const searchEnabled = !keybindings2.includes("vim"); + const items = useMemo(() => normalizeChoices5(config.choices), [config.choices]); + const bounds = useMemo(() => { + const first = items.findIndex(isNavigable2); + const last = items.findLastIndex(isNavigable2); + if (first === -1) { + throw new ValidationError("[select prompt] No selectable choices. All choices are disabled."); + } + return { first, last }; + }, [items]); + const defaultItemIndex = useMemo(() => { + if (!("default" in config)) + return -1; + return items.findIndex((item) => isSelectable3(item) && item.value === config.default); + }, [config.default, items]); + const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex); + const selectedChoice = items[active]; + if (selectedChoice == null || Separator.isSeparator(selectedChoice)) { + throw new Error("Active index does not point to a choice"); + } + const [errorMsg, setError] = useState(); + useKeypress((key, rl) => { + clearTimeout(searchTimeoutRef.current); + if (errorMsg) { + setError(void 0); + } + if (isEnterKey(key)) { + if (selectedChoice.disabled) { + setError(theme.i18n.disabledError); + } else { + setStatus("done"); + done(selectedChoice.value); + } + } else if (isUpKey(key, keybindings2) || isDownKey(key, keybindings2)) { + rl.clearLine(0); + if (loop || isUpKey(key, keybindings2) && active !== bounds.first || isDownKey(key, keybindings2) && active !== bounds.last) { + const offset = isUpKey(key, keybindings2) ? -1 : 1; + let next = active; + do { + next = (next + offset + items.length) % items.length; + } while (!isNavigable2(items[next])); + setActive(next); + } + } else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) { + const selectedIndex = Number(rl.line) - 1; + let selectableIndex = -1; + const position = items.findIndex((item2) => { + if (Separator.isSeparator(item2)) + return false; + selectableIndex++; + return selectableIndex === selectedIndex; + }); + const item = items[position]; + if (item != null && isSelectable3(item)) { + setActive(position); + } + searchTimeoutRef.current = setTimeout(() => { + rl.clearLine(0); + }, 700); + } else if (isBackspaceKey(key)) { + rl.clearLine(0); + } else if (searchEnabled) { + const searchTerm = rl.line.toLowerCase(); + const matchIndex = items.findIndex((item) => { + if (Separator.isSeparator(item) || !isSelectable3(item)) + return false; + return item.name.toLowerCase().startsWith(searchTerm); + }); + if (matchIndex !== -1) { + setActive(matchIndex); + } + searchTimeoutRef.current = setTimeout(() => { + rl.clearLine(0); + }, 700); + } + }); + useEffect(() => () => { + clearTimeout(searchTimeoutRef.current); + }, []); + const message = theme.style.message(config.message, status); + const helpLine = theme.style.keysHelpTip([ + ["\u2191\u2193", "navigate"], + ["\u23CE", "select"] + ]); + let separatorCount = 0; + const page = usePagination({ + items, + active, + renderItem({ item, isActive, index }) { + if (Separator.isSeparator(item)) { + separatorCount++; + return ` ${item.separator}`; + } + const cursor = isActive ? theme.icon.cursor : " "; + const indexLabel = theme.indexMode === "number" ? `${index + 1 - separatorCount}. ` : ""; + if (item.disabled) { + const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)"; + const disabledCursor = isActive ? theme.icon.cursor : "-"; + return theme.style.disabled(`${disabledCursor} ${indexLabel}${item.name} ${disabledLabel}`); + } + const color = isActive ? theme.style.highlight : (x) => x; + return color(`${cursor} ${indexLabel}${item.name}`); + }, + pageSize, + loop + }); + if (status === "done") { + return [prefix, message, theme.style.answer(selectedChoice.short)].filter(Boolean).join(" "); + } + const { description } = selectedChoice; + const lines = [ + [prefix, message].filter(Boolean).join(" "), + page, + " ", + description ? theme.style.description(description) : "", + errorMsg ? theme.style.error(errorMsg) : "", + helpLine + ].filter(Boolean).join("\n").trimEnd(); + return `${lines}${cursorHide}`; +}); + +// ng-dev/utils/prompt.js +var Prompt = class { +}; +Prompt.confirm = (_config, _context) => { + const config = { + default: false, + ..._config + }; + return dist_default6(config, _context); +}; +Prompt.input = dist_default7; +Prompt.checkbox = dist_default4; +Prompt.select = dist_default12; +Prompt.editor = dist_default5; + +// ng-dev/format/run-commands-parallel.js +var import_cli_progress = __toESM(require_cli_progress()); + +// +var balanced = (a, b, str) => { + const ma = a instanceof RegExp ? maybeMatch(a, str) : a; + const mb = b instanceof RegExp ? maybeMatch(b, str) : b; + const r = ma !== null && mb != null && range(ma, mb, str); + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + ma.length, r[1]), + post: str.slice(r[1] + mb.length) + }; +}; +var maybeMatch = (reg, str) => { + const m = str.match(reg); + return m ? m[0] : null; +}; +var range = (a, b, str) => { + let begs, beg, left2, right2 = void 0, result; + let ai = str.indexOf(a); + let bi = str.indexOf(b, ai + 1); + let i = ai; + if (ai >= 0 && bi > 0) { + if (a === b) { + return [ai, bi]; + } + begs = []; + left2 = str.length; + while (i >= 0 && !result) { + if (i === ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length === 1) { + const r = begs.pop(); + if (r !== void 0) + result = [r, bi]; + } else { + beg = begs.pop(); + if (beg !== void 0 && beg < left2) { + left2 = beg; + right2 = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length && right2 !== void 0) { + result = [left2, right2]; + } + } + return result; +}; + +// +var escSlash = "\0SLASH" + Math.random() + "\0"; +var escOpen = "\0OPEN" + Math.random() + "\0"; +var escClose = "\0CLOSE" + Math.random() + "\0"; +var escComma = "\0COMMA" + Math.random() + "\0"; +var escPeriod = "\0PERIOD" + Math.random() + "\0"; +var escSlashPattern = new RegExp(escSlash, "g"); +var escOpenPattern = new RegExp(escOpen, "g"); +var escClosePattern = new RegExp(escClose, "g"); +var escCommaPattern = new RegExp(escComma, "g"); +var escPeriodPattern = new RegExp(escPeriod, "g"); +var slashPattern = /\\\\/g; +var openPattern = /\\{/g; +var closePattern = /\\}/g; +var commaPattern = /\\,/g; +var periodPattern = /\\\./g; +var EXPANSION_MAX = 1e5; +function numeric(str) { + return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0); +} +function escapeBraces(str) { + return str.replace(slashPattern, escSlash).replace(openPattern, escOpen).replace(closePattern, escClose).replace(commaPattern, escComma).replace(periodPattern, escPeriod); +} +function unescapeBraces(str) { + return str.replace(escSlashPattern, "\\").replace(escOpenPattern, "{").replace(escClosePattern, "}").replace(escCommaPattern, ",").replace(escPeriodPattern, "."); +} +function parseCommaParts(str) { + if (!str) { + return [""]; + } + const parts = []; + const m = balanced("{", "}", str); + if (!m) { + return str.split(","); + } + const { pre, body, post } = m; + const p = pre.split(","); + p[p.length - 1] += "{" + body + "}"; + const postParts = parseCommaParts(post); + if (post.length) { + ; + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; +} +function expand3(str, options = {}) { + if (!str) { + return []; + } + const { max = EXPANSION_MAX } = options; + if (str.slice(0, 2) === "{}") { + str = "\\{\\}" + str.slice(2); + } + return expand_(escapeBraces(str), max, true).map(unescapeBraces); +} +function embrace(str) { + return "{" + str + "}"; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} +function expand_(str, max, isTop) { + const expansions = []; + const m = balanced("{", "}", str); + if (!m) + return [str]; + const pre = m.pre; + const post = m.post.length ? expand_(m.post, max, false) : [""]; + if (/\$$/.test(m.pre)) { + for (let k = 0; k < post.length && k < max; k++) { + const expansion = pre + "{" + m.body + "}" + post[k]; + expansions.push(expansion); + } + } else { + const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + const isSequence = isNumericSequence || isAlphaSequence; + const isOptions = m.body.indexOf(",") >= 0; + if (!isSequence && !isOptions) { + if (m.post.match(/,(?!,).*\}/)) { + str = m.pre + "{" + m.body + escClose + m.post; + return expand_(str, max, true); + } + return [str]; + } + let n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1 && n[0] !== void 0) { + n = expand_(n[0], max, false).map(embrace); + if (n.length === 1) { + return post.map((p) => m.pre + n[0] + p); + } + } + } + let N; + if (isSequence && n[0] !== void 0 && n[1] !== void 0) { + const x = numeric(n[0]); + const y = numeric(n[1]); + const width = Math.max(n[0].length, n[1].length); + let incr = n.length === 3 && n[2] !== void 0 ? Math.max(Math.abs(numeric(n[2])), 1) : 1; + let test = lte; + const reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + const pad = n.some(isPadded); + N = []; + for (let i = x; test(i, y) && N.length < max; i += incr) { + let c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === "\\") { + c = ""; + } + } else { + c = String(i); + if (pad) { + const need = width - c.length; + if (need > 0) { + const z = new Array(need + 1).join("0"); + if (i < 0) { + c = "-" + z + c.slice(1); + } else { + c = z + c; + } + } + } + } + N.push(c); + } + } else { + N = []; + for (let j = 0; j < n.length; j++) { + N.push.apply(N, expand_(n[j], max, false)); + } + } + for (let j = 0; j < N.length; j++) { + for (let k = 0; k < post.length && expansions.length < max; k++) { + const expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) { + expansions.push(expansion); + } + } + } + } + return expansions; +} + +// +var MAX_PATTERN_LENGTH = 1024 * 64; +var assertValidPattern = (pattern) => { + if (typeof pattern !== "string") { + throw new TypeError("invalid pattern"); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError("pattern is too long"); + } +}; + +// +var posixClasses = { + "[:alnum:]": ["\\p{L}\\p{Nl}\\p{Nd}", true], + "[:alpha:]": ["\\p{L}\\p{Nl}", true], + "[:ascii:]": ["\\x00-\\x7f", false], + "[:blank:]": ["\\p{Zs}\\t", true], + "[:cntrl:]": ["\\p{Cc}", true], + "[:digit:]": ["\\p{Nd}", true], + "[:graph:]": ["\\p{Z}\\p{C}", true, true], + "[:lower:]": ["\\p{Ll}", true], + "[:print:]": ["\\p{C}", true], + "[:punct:]": ["\\p{P}", true], + "[:space:]": ["\\p{Z}\\t\\r\\n\\v\\f", true], + "[:upper:]": ["\\p{Lu}", true], + "[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true], + "[:xdigit:]": ["A-Fa-f0-9", false] +}; +var braceEscape = (s) => s.replace(/[[\]\\-]/g, "\\$&"); +var regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +var rangesToString = (ranges) => ranges.join(""); +var parseClass = (glob, position) => { + const pos = position; + if (glob.charAt(pos) !== "[") { + throw new Error("not in a brace expression"); + } + const ranges = []; + const negs = []; + let i = pos + 1; + let sawStart = false; + let uflag = false; + let escaping = false; + let negate = false; + let endPos = pos; + let rangeStart = ""; + WHILE: + while (i < glob.length) { + const c = glob.charAt(i); + if ((c === "!" || c === "^") && i === pos + 1) { + negate = true; + i++; + continue; + } + if (c === "]" && sawStart && !escaping) { + endPos = i + 1; + break; + } + sawStart = true; + if (c === "\\") { + if (!escaping) { + escaping = true; + i++; + continue; + } + } + if (c === "[" && !escaping) { + for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { + if (glob.startsWith(cls, i)) { + if (rangeStart) { + return ["$.", false, glob.length - pos, true]; + } + i += cls.length; + if (neg) + negs.push(unip); + else + ranges.push(unip); + uflag = uflag || u; + continue WHILE; + } + } + } + escaping = false; + if (rangeStart) { + if (c > rangeStart) { + ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c)); + } else if (c === rangeStart) { + ranges.push(braceEscape(c)); + } + rangeStart = ""; + i++; + continue; + } + if (glob.startsWith("-]", i + 1)) { + ranges.push(braceEscape(c + "-")); + i += 2; + continue; + } + if (glob.startsWith("-", i + 1)) { + rangeStart = c; + i += 2; + continue; + } + ranges.push(braceEscape(c)); + i++; + } + if (endPos < i) { + return ["", false, 0, false]; + } + if (!ranges.length && !negs.length) { + return ["$.", false, glob.length - pos, true]; + } + if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) { + const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; + return [regexpEscape(r), false, endPos - pos, false]; + } + const sranges = "[" + (negate ? "^" : "") + rangesToString(ranges) + "]"; + const snegs = "[" + (negate ? "" : "^") + rangesToString(negs) + "]"; + const comb = ranges.length && negs.length ? "(" + sranges + "|" + snegs + ")" : ranges.length ? sranges : snegs; + return [comb, uflag, endPos - pos, true]; +}; + +// +var unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true } = {}) => { + if (magicalBraces) { + return windowsPathsNoEscape ? s.replace(/\[([^/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\])\]/g, "$1$2").replace(/\\([^/])/g, "$1"); + } + return windowsPathsNoEscape ? s.replace(/\[([^/\\{}])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^/\\{}])\]/g, "$1$2").replace(/\\([^/{}])/g, "$1"); +}; + +// +var _a2; +var types2 = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]); +var isExtglobType = (c) => types2.has(c); +var isExtglobAST = (c) => isExtglobType(c.type); +var adoptionMap = /* @__PURE__ */ new Map([ + ["!", ["@"]], + ["?", ["?", "@"]], + ["@", ["@"]], + ["*", ["*", "+", "?", "@"]], + ["+", ["+", "@"]] +]); +var adoptionWithSpaceMap = /* @__PURE__ */ new Map([ + ["!", ["?"]], + ["@", ["?"]], + ["+", ["?", "*"]] +]); +var adoptionAnyMap = /* @__PURE__ */ new Map([ + ["!", ["?", "@"]], + ["?", ["?", "@"]], + ["@", ["?", "@"]], + ["*", ["*", "+", "?", "@"]], + ["+", ["+", "@", "?", "*"]] +]); +var usurpMap = /* @__PURE__ */ new Map([ + ["!", /* @__PURE__ */ new Map([["!", "@"]])], + [ + "?", + /* @__PURE__ */ new Map([ + ["*", "*"], + ["+", "*"] + ]) + ], + [ + "@", + /* @__PURE__ */ new Map([ + ["!", "!"], + ["?", "?"], + ["@", "@"], + ["*", "*"], + ["+", "+"] + ]) + ], + [ + "+", + /* @__PURE__ */ new Map([ + ["?", "*"], + ["*", "*"] + ]) + ] +]); +var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))"; +var startNoDot = "(?!\\.)"; +var addPatternStart = /* @__PURE__ */ new Set(["[", "."]); +var justDots = /* @__PURE__ */ new Set(["..", "."]); +var reSpecials = new Set("().*{}+?[]^$\\!"); +var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +var qmark = "[^/]"; +var star = qmark + "*?"; +var starNoEmpty = qmark + "+?"; +var ID = 0; +var AST = class { + type; + #root; + #hasMagic; + #uflag = false; + #parts = []; + #parent; + #parentIndex; + #negs; + #filledNegs = false; + #options; + #toString; + // set to true if it's an extglob with no children + // (which really means one child of '') + #emptyExt = false; + id = ++ID; + get depth() { + return (this.#parent?.depth ?? -1) + 1; + } + [Symbol.for("nodejs.util.inspect.custom")]() { + return { + "@@type": "AST", + id: this.id, + type: this.type, + root: this.#root.id, + parent: this.#parent?.id, + depth: this.depth, + partsLength: this.#parts.length, + parts: this.#parts + }; + } + constructor(type, parent, options = {}) { + this.type = type; + if (type) + this.#hasMagic = true; + this.#parent = parent; + this.#root = this.#parent ? this.#parent.#root : this; + this.#options = this.#root === this ? options : this.#root.#options; + this.#negs = this.#root === this ? [] : this.#root.#negs; + if (type === "!" && !this.#root.#filledNegs) + this.#negs.push(this); + this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0; + } + get hasMagic() { + if (this.#hasMagic !== void 0) + return this.#hasMagic; + for (const p of this.#parts) { + if (typeof p === "string") + continue; + if (p.type || p.hasMagic) + return this.#hasMagic = true; + } + return this.#hasMagic; + } + // reconstructs the pattern + toString() { + return this.#toString !== void 0 ? this.#toString : !this.type ? this.#toString = this.#parts.map((p) => String(p)).join("") : this.#toString = this.type + "(" + this.#parts.map((p) => String(p)).join("|") + ")"; + } + #fillNegs() { + if (this !== this.#root) + throw new Error("should only call on root"); + if (this.#filledNegs) + return this; + this.toString(); + this.#filledNegs = true; + let n; + while (n = this.#negs.pop()) { + if (n.type !== "!") + continue; + let p = n; + let pp = p.#parent; + while (pp) { + for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) { + for (const part of n.#parts) { + if (typeof part === "string") { + throw new Error("string part in extglob AST??"); + } + part.copyIn(pp.#parts[i]); + } + } + p = pp; + pp = p.#parent; + } + } + return this; + } + push(...parts) { + for (const p of parts) { + if (p === "") + continue; + if (typeof p !== "string" && !(p instanceof _a2 && p.#parent === this)) { + throw new Error("invalid part: " + p); + } + this.#parts.push(p); + } + } + toJSON() { + const ret = this.type === null ? this.#parts.slice().map((p) => typeof p === "string" ? p : p.toJSON()) : [this.type, ...this.#parts.map((p) => p.toJSON())]; + if (this.isStart() && !this.type) + ret.unshift([]); + if (this.isEnd() && (this === this.#root || this.#root.#filledNegs && this.#parent?.type === "!")) { + ret.push({}); + } + return ret; + } + isStart() { + if (this.#root === this) + return true; + if (!this.#parent?.isStart()) + return false; + if (this.#parentIndex === 0) + return true; + const p = this.#parent; + for (let i = 0; i < this.#parentIndex; i++) { + const pp = p.#parts[i]; + if (!(pp instanceof _a2 && pp.type === "!")) { + return false; + } + } + return true; + } + isEnd() { + if (this.#root === this) + return true; + if (this.#parent?.type === "!") + return true; + if (!this.#parent?.isEnd()) + return false; + if (!this.type) + return this.#parent?.isEnd(); + const pl = this.#parent ? this.#parent.#parts.length : 0; + return this.#parentIndex === pl - 1; + } + copyIn(part) { + if (typeof part === "string") + this.push(part); + else + this.push(part.clone(this)); + } + clone(parent) { + const c = new _a2(this.type, parent); + for (const p of this.#parts) { + c.copyIn(p); + } + return c; + } + static #parseAST(str, ast, pos, opt, extDepth) { + const maxDepth = opt.maxExtglobRecursion ?? 2; + let escaping = false; + let inBrace = false; + let braceStart = -1; + let braceNeg = false; + if (ast.type === null) { + let i2 = pos; + let acc2 = ""; + while (i2 < str.length) { + const c = str.charAt(i2++); + if (escaping || c === "\\") { + escaping = !escaping; + acc2 += c; + continue; + } + if (inBrace) { + if (i2 === braceStart + 1) { + if (c === "^" || c === "!") { + braceNeg = true; + } + } else if (c === "]" && !(i2 === braceStart + 2 && braceNeg)) { + inBrace = false; + } + acc2 += c; + continue; + } else if (c === "[") { + inBrace = true; + braceStart = i2; + braceNeg = false; + acc2 += c; + continue; + } + const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i2) === "(" && extDepth <= maxDepth; + if (doRecurse) { + ast.push(acc2); + acc2 = ""; + const ext2 = new _a2(c, ast); + i2 = _a2.#parseAST(str, ext2, i2, opt, extDepth + 1); + ast.push(ext2); + continue; + } + acc2 += c; + } + ast.push(acc2); + return i2; + } + let i = pos + 1; + let part = new _a2(null, ast); + const parts = []; + let acc = ""; + while (i < str.length) { + const c = str.charAt(i++); + if (escaping || c === "\\") { + escaping = !escaping; + acc += c; + continue; + } + if (inBrace) { + if (i === braceStart + 1) { + if (c === "^" || c === "!") { + braceNeg = true; + } + } else if (c === "]" && !(i === braceStart + 2 && braceNeg)) { + inBrace = false; + } + acc += c; + continue; + } else if (c === "[") { + inBrace = true; + braceStart = i; + braceNeg = false; + acc += c; + continue; + } + const doRecurse = !opt.noext && isExtglobType(c) && str.charAt(i) === "(" && /* c8 ignore start - the maxDepth is sufficient here */ + (extDepth <= maxDepth || ast && ast.#canAdoptType(c)); + if (doRecurse) { + const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1; + part.push(acc); + acc = ""; + const ext2 = new _a2(c, part); + part.push(ext2); + i = _a2.#parseAST(str, ext2, i, opt, extDepth + depthAdd); + continue; + } + if (c === "|") { + part.push(acc); + acc = ""; + parts.push(part); + part = new _a2(null, ast); + continue; + } + if (c === ")") { + if (acc === "" && ast.#parts.length === 0) { + ast.#emptyExt = true; + } + part.push(acc); + acc = ""; + ast.push(...parts, part); + return i; + } + acc += c; + } + ast.type = null; + ast.#hasMagic = void 0; + ast.#parts = [str.substring(pos - 1)]; + return i; + } + #canAdoptWithSpace(child) { + return this.#canAdopt(child, adoptionWithSpaceMap); + } + #canAdopt(child, map = adoptionMap) { + if (!child || typeof child !== "object" || child.type !== null || child.#parts.length !== 1 || this.type === null) { + return false; + } + const gc = child.#parts[0]; + if (!gc || typeof gc !== "object" || gc.type === null) { + return false; + } + return this.#canAdoptType(gc.type, map); + } + #canAdoptType(c, map = adoptionAnyMap) { + return !!map.get(this.type)?.includes(c); + } + #adoptWithSpace(child, index) { + const gc = child.#parts[0]; + const blank = new _a2(null, gc, this.options); + blank.#parts.push(""); + gc.push(blank); + this.#adopt(child, index); + } + #adopt(child, index) { + const gc = child.#parts[0]; + this.#parts.splice(index, 1, ...gc.#parts); + for (const p of gc.#parts) { + if (typeof p === "object") + p.#parent = this; + } + this.#toString = void 0; + } + #canUsurpType(c) { + const m = usurpMap.get(this.type); + return !!m?.has(c); + } + #canUsurp(child) { + if (!child || typeof child !== "object" || child.type !== null || child.#parts.length !== 1 || this.type === null || this.#parts.length !== 1) { + return false; + } + const gc = child.#parts[0]; + if (!gc || typeof gc !== "object" || gc.type === null) { + return false; + } + return this.#canUsurpType(gc.type); + } + #usurp(child) { + const m = usurpMap.get(this.type); + const gc = child.#parts[0]; + const nt = m?.get(gc.type); + if (!nt) + return false; + this.#parts = gc.#parts; + for (const p of this.#parts) { + if (typeof p === "object") { + p.#parent = this; + } + } + this.type = nt; + this.#toString = void 0; + this.#emptyExt = false; + } + static fromGlob(pattern, options = {}) { + const ast = new _a2(null, void 0, options); + _a2.#parseAST(pattern, ast, 0, options, 0); + return ast; + } + // returns the regular expression if there's magic, or the unescaped + // string if not. + toMMPattern() { + if (this !== this.#root) + return this.#root.toMMPattern(); + const glob = this.toString(); + const [re, body, hasMagic, uflag] = this.toRegExpSource(); + const anyMagic = hasMagic || this.#hasMagic || this.#options.nocase && !this.#options.nocaseMagicOnly && glob.toUpperCase() !== glob.toLowerCase(); + if (!anyMagic) { + return body; + } + const flags = (this.#options.nocase ? "i" : "") + (uflag ? "u" : ""); + return Object.assign(new RegExp(`^${re}$`, flags), { + _src: re, + _glob: glob + }); + } + get options() { + return this.#options; + } + // returns the string match, the regexp source, whether there's magic + // in the regexp (so a regular expression is required) and whether or + // not the uflag is needed for the regular expression (for posix classes) + // TODO: instead of injecting the start/end at this point, just return + // the BODY of the regexp, along with the start/end portions suitable + // for binding the start/end in either a joined full-path makeRe context + // (where we bind to (^|/), or a standalone matchPart context (where + // we bind to ^, and not /). Otherwise slashes get duped! + // + // In part-matching mode, the start is: + // - if not isStart: nothing + // - if traversal possible, but not allowed: ^(?!\.\.?$) + // - if dots allowed or not possible: ^ + // - if dots possible and not allowed: ^(?!\.) + // end is: + // - if not isEnd(): nothing + // - else: $ + // + // In full-path matching mode, we put the slash at the START of the + // pattern, so start is: + // - if first pattern: same as part-matching mode + // - if not isStart(): nothing + // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/)) + // - if dots allowed or not possible: / + // - if dots possible and not allowed: /(?!\.) + // end is: + // - if last pattern, same as part-matching mode + // - else nothing + // + // Always put the (?:$|/) on negated tails, though, because that has to be + // there to bind the end of the negated pattern portion, and it's easier to + // just stick it in now rather than try to inject it later in the middle of + // the pattern. + // + // We can just always return the same end, and leave it up to the caller + // to know whether it's going to be used joined or in parts. + // And, if the start is adjusted slightly, can do the same there: + // - if not isStart: nothing + // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$) + // - if dots allowed or not possible: (?:/|^) + // - if dots possible and not allowed: (?:/|^)(?!\.) + // + // But it's better to have a simpler binding without a conditional, for + // performance, so probably better to return both start options. + // + // Then the caller just ignores the end if it's not the first pattern, + // and the start always gets applied. + // + // But that's always going to be $ if it's the ending pattern, or nothing, + // so the caller can just attach $ at the end of the pattern when building. + // + // So the todo is: + // - better detect what kind of start is needed + // - return both flavors of starting pattern + // - attach $ at the end of the pattern when creating the actual RegExp + // + // Ah, but wait, no, that all only applies to the root when the first pattern + // is not an extglob. If the first pattern IS an extglob, then we need all + // that dot prevention biz to live in the extglob portions, because eg + // +(*|.x*) can match .xy but not .yx. + // + // So, return the two flavors if it's #root and the first child is not an + // AST, otherwise leave it to the child AST to handle it, and there, + // use the (?:^|/) style of start binding. + // + // Even simplified further: + // - Since the start for a join is eg /(?!\.) and the start for a part + // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root + // or start or whatever) and prepend ^ or / at the Regexp construction. + toRegExpSource(allowDot) { + const dot = allowDot ?? !!this.#options.dot; + if (this.#root === this) { + this.#flatten(); + this.#fillNegs(); + } + if (!isExtglobAST(this)) { + const noEmpty = this.isStart() && this.isEnd() && !this.#parts.some((s) => typeof s !== "string"); + const src = this.#parts.map((p) => { + const [re, _, hasMagic, uflag] = typeof p === "string" ? _a2.#parseGlob(p, this.#hasMagic, noEmpty) : p.toRegExpSource(allowDot); + this.#hasMagic = this.#hasMagic || hasMagic; + this.#uflag = this.#uflag || uflag; + return re; + }).join(""); + let start2 = ""; + if (this.isStart()) { + if (typeof this.#parts[0] === "string") { + const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]); + if (!dotTravAllowed) { + const aps = addPatternStart; + const needNoTrav = ( + // dots are allowed, and the pattern starts with [ or . + dot && aps.has(src.charAt(0)) || // the pattern starts with \., and then [ or . + src.startsWith("\\.") && aps.has(src.charAt(2)) || // the pattern starts with \.\., and then [ or . + src.startsWith("\\.\\.") && aps.has(src.charAt(4)) + ); + const needNoDot = !dot && !allowDot && aps.has(src.charAt(0)); + start2 = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ""; + } + } + } + let end = ""; + if (this.isEnd() && this.#root.#filledNegs && this.#parent?.type === "!") { + end = "(?:$|\\/)"; + } + const final2 = start2 + src + end; + return [ + final2, + unescape(src), + this.#hasMagic = !!this.#hasMagic, + this.#uflag + ]; + } + const repeated = this.type === "*" || this.type === "+"; + const start = this.type === "!" ? "(?:(?!(?:" : "(?:"; + let body = this.#partsToRegExp(dot); + if (this.isStart() && this.isEnd() && !body && this.type !== "!") { + const s = this.toString(); + const me = this; + me.#parts = [s]; + me.type = null; + me.#hasMagic = void 0; + return [s, unescape(this.toString()), false, false]; + } + let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : this.#partsToRegExp(true); + if (bodyDotAllowed === body) { + bodyDotAllowed = ""; + } + if (bodyDotAllowed) { + body = `(?:${body})(?:${bodyDotAllowed})*?`; + } + let final = ""; + if (this.type === "!" && this.#emptyExt) { + final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty; + } else { + const close = this.type === "!" ? ( + // !() must match something,but !(x) can match '' + "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + star + ")" + ) : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`; + final = start + body + close; + } + return [ + final, + unescape(body), + this.#hasMagic = !!this.#hasMagic, + this.#uflag + ]; + } + #flatten() { + if (!isExtglobAST(this)) { + for (const p of this.#parts) { + if (typeof p === "object") { + p.#flatten(); + } + } + } else { + let iterations = 0; + let done = false; + do { + done = true; + for (let i = 0; i < this.#parts.length; i++) { + const c = this.#parts[i]; + if (typeof c === "object") { + c.#flatten(); + if (this.#canAdopt(c)) { + done = false; + this.#adopt(c, i); + } else if (this.#canAdoptWithSpace(c)) { + done = false; + this.#adoptWithSpace(c, i); + } else if (this.#canUsurp(c)) { + done = false; + this.#usurp(c); + } + } + } + } while (!done && ++iterations < 10); + } + this.#toString = void 0; + } + #partsToRegExp(dot) { + return this.#parts.map((p) => { + if (typeof p === "string") { + throw new Error("string type in extglob ast??"); + } + const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot); + this.#uflag = this.#uflag || uflag; + return re; + }).filter((p) => !(this.isStart() && this.isEnd()) || !!p).join("|"); + } + static #parseGlob(glob, hasMagic, noEmpty = false) { + let escaping = false; + let re = ""; + let uflag = false; + let inStar = false; + for (let i = 0; i < glob.length; i++) { + const c = glob.charAt(i); + if (escaping) { + escaping = false; + re += (reSpecials.has(c) ? "\\" : "") + c; + continue; + } + if (c === "*") { + if (inStar) + continue; + inStar = true; + re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star; + hasMagic = true; + continue; + } else { + inStar = false; + } + if (c === "\\") { + if (i === glob.length - 1) { + re += "\\\\"; + } else { + escaping = true; + } + continue; + } + if (c === "[") { + const [src, needUflag, consumed, magic] = parseClass(glob, i); + if (consumed) { + re += src; + uflag = uflag || needUflag; + i += consumed - 1; + hasMagic = hasMagic || magic; + continue; + } + } + if (c === "?") { + re += qmark; + hasMagic = true; + continue; + } + re += regExpEscape(c); + } + return [re, unescape(glob), !!hasMagic, uflag]; + } +}; +_a2 = AST; + +// +var escape = (s, { windowsPathsNoEscape = false, magicalBraces = false } = {}) => { + if (magicalBraces) { + return windowsPathsNoEscape ? s.replace(/[?*()[\]{}]/g, "[$&]") : s.replace(/[?*()[\]\\{}]/g, "\\$&"); + } + return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&"); +}; + +// +var minimatch = (p, pattern, options = {}) => { + assertValidPattern(pattern); + if (!options.nocomment && pattern.charAt(0) === "#") { + return false; + } + return new Minimatch(pattern, options).match(p); +}; +var starDotExtRE = /^\*+([^+@!?*[(]*)$/; +var starDotExtTest = (ext2) => (f) => !f.startsWith(".") && f.endsWith(ext2); +var starDotExtTestDot = (ext2) => (f) => f.endsWith(ext2); +var starDotExtTestNocase = (ext2) => { + ext2 = ext2.toLowerCase(); + return (f) => !f.startsWith(".") && f.toLowerCase().endsWith(ext2); +}; +var starDotExtTestNocaseDot = (ext2) => { + ext2 = ext2.toLowerCase(); + return (f) => f.toLowerCase().endsWith(ext2); +}; +var starDotStarRE = /^\*+\.\*+$/; +var starDotStarTest = (f) => !f.startsWith(".") && f.includes("."); +var starDotStarTestDot = (f) => f !== "." && f !== ".." && f.includes("."); +var dotStarRE = /^\.\*+$/; +var dotStarTest = (f) => f !== "." && f !== ".." && f.startsWith("."); +var starRE = /^\*+$/; +var starTest = (f) => f.length !== 0 && !f.startsWith("."); +var starTestDot = (f) => f.length !== 0 && f !== "." && f !== ".."; +var qmarksRE = /^\?+([^+@!?*[(]*)?$/; +var qmarksTestNocase = ([$0, ext2 = ""]) => { + const noext = qmarksTestNoExt([$0]); + if (!ext2) + return noext; + ext2 = ext2.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext2); +}; +var qmarksTestNocaseDot = ([$0, ext2 = ""]) => { + const noext = qmarksTestNoExtDot([$0]); + if (!ext2) + return noext; + ext2 = ext2.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext2); +}; +var qmarksTestDot = ([$0, ext2 = ""]) => { + const noext = qmarksTestNoExtDot([$0]); + return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2); +}; +var qmarksTest = ([$0, ext2 = ""]) => { + const noext = qmarksTestNoExt([$0]); + return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2); +}; +var qmarksTestNoExt = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && !f.startsWith("."); +}; +var qmarksTestNoExtDot = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && f !== "." && f !== ".."; +}; +var defaultPlatform = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix"; +var path4 = { + win32: { sep: "\\" }, + posix: { sep: "/" } +}; +var sep2 = defaultPlatform === "win32" ? path4.win32.sep : path4.posix.sep; +minimatch.sep = sep2; +var GLOBSTAR = Symbol("globstar **"); +minimatch.GLOBSTAR = GLOBSTAR; +var qmark2 = "[^/]"; +var star2 = qmark2 + "*?"; +var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; +var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; +var filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options); +minimatch.filter = filter; +var ext = (a, b = {}) => Object.assign({}, a, b); +var defaults2 = (def) => { + if (!def || typeof def !== "object" || !Object.keys(def).length) { + return minimatch; + } + const orig = minimatch; + const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options)); + return Object.assign(m, { + Minimatch: class Minimatch extends orig.Minimatch { + constructor(pattern, options = {}) { + super(pattern, ext(def, options)); + } + static defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; + } + }, + AST: class AST extends orig.AST { + /* c8 ignore start */ + constructor(type, parent, options = {}) { + super(type, parent, ext(def, options)); + } + /* c8 ignore stop */ + static fromGlob(pattern, options = {}) { + return orig.AST.fromGlob(pattern, ext(def, options)); + } + }, + unescape: (s, options = {}) => orig.unescape(s, ext(def, options)), + escape: (s, options = {}) => orig.escape(s, ext(def, options)), + filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)), + defaults: (options) => orig.defaults(ext(def, options)), + makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)), + braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)), + match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)), + sep: orig.sep, + GLOBSTAR + }); +}; +minimatch.defaults = defaults2; +var braceExpand = (pattern, options = {}) => { + assertValidPattern(pattern); + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + return [pattern]; + } + return expand3(pattern, { max: options.braceExpandMax }); +}; +minimatch.braceExpand = braceExpand; +var makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe(); +minimatch.makeRe = makeRe; +var match = (list, pattern, options = {}) => { + const mm = new Minimatch(pattern, options); + list = list.filter((f) => mm.match(f)); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; +}; +minimatch.match = match; +var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; +var regExpEscape2 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +var Minimatch = class { + options; + set; + pattern; + windowsPathsNoEscape; + nonegate; + negate; + comment; + empty; + preserveMultipleSlashes; + partial; + globSet; + globParts; + nocase; + isWindows; + platform; + windowsNoMagicRoot; + maxGlobstarRecursion; + regexp; + constructor(pattern, options = {}) { + assertValidPattern(pattern); + options = options || {}; + this.options = options; + this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200; + this.pattern = pattern; + this.platform = options.platform || defaultPlatform; + this.isWindows = this.platform === "win32"; + const awe = "allowWindowsEscape"; + this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options[awe] === false; + if (this.windowsPathsNoEscape) { + this.pattern = this.pattern.replace(/\\/g, "/"); + } + this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; + this.regexp = null; + this.negate = false; + this.nonegate = !!options.nonegate; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.nocase = !!this.options.nocase; + this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase); + this.globSet = []; + this.globParts = []; + this.set = []; + this.make(); + } + hasMagic() { + if (this.options.magicalBraces && this.set.length > 1) { + return true; + } + for (const pattern of this.set) { + for (const part of pattern) { + if (typeof part !== "string") + return true; + } + } + return false; + } + debug(..._) { + } + make() { + const pattern = this.pattern; + const options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + this.parseNegate(); + this.globSet = [...new Set(this.braceExpand())]; + if (options.debug) { + this.debug = (...args) => console.error(...args); + } + this.debug(this.pattern, this.globSet); + const rawGlobParts = this.globSet.map((s) => this.slashSplit(s)); + this.globParts = this.preprocess(rawGlobParts); + this.debug(this.pattern, this.globParts); + let set2 = this.globParts.map((s, _, __) => { + if (this.isWindows && this.windowsNoMagicRoot) { + const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]); + const isDrive = /^[a-z]:/i.test(s[0]); + if (isUNC) { + return [ + ...s.slice(0, 4), + ...s.slice(4).map((ss) => this.parse(ss)) + ]; + } else if (isDrive) { + return [s[0], ...s.slice(1).map((ss) => this.parse(ss))]; + } + } + return s.map((ss) => this.parse(ss)); + }); + this.debug(this.pattern, set2); + this.set = set2.filter((s) => s.indexOf(false) === -1); + if (this.isWindows) { + for (let i = 0; i < this.set.length; i++) { + const p = this.set[i]; + if (p[0] === "" && p[1] === "" && this.globParts[i][2] === "?" && typeof p[3] === "string" && /^[a-z]:$/i.test(p[3])) { + p[2] = "?"; + } + } + } + this.debug(this.pattern, this.set); + } + // various transforms to equivalent pattern sets that are + // faster to process in a filesystem walk. The goal is to + // eliminate what we can, and push all ** patterns as far + // to the right as possible, even if it increases the number + // of patterns that we have to process. + preprocess(globParts) { + if (this.options.noglobstar) { + for (const partset of globParts) { + for (let j = 0; j < partset.length; j++) { + if (partset[j] === "**") { + partset[j] = "*"; + } + } + } + } + const { optimizationLevel = 1 } = this.options; + if (optimizationLevel >= 2) { + globParts = this.firstPhasePreProcess(globParts); + globParts = this.secondPhasePreProcess(globParts); + } else if (optimizationLevel >= 1) { + globParts = this.levelOneOptimize(globParts); + } else { + globParts = this.adjascentGlobstarOptimize(globParts); + } + return globParts; + } + // just get rid of adjascent ** portions + adjascentGlobstarOptimize(globParts) { + return globParts.map((parts) => { + let gs = -1; + while (-1 !== (gs = parts.indexOf("**", gs + 1))) { + let i = gs; + while (parts[i + 1] === "**") { + i++; + } + if (i !== gs) { + parts.splice(gs, i - gs); + } + } + return parts; + }); + } + // get rid of adjascent ** and resolve .. portions + levelOneOptimize(globParts) { + return globParts.map((parts) => { + parts = parts.reduce((set2, part) => { + const prev = set2[set2.length - 1]; + if (part === "**" && prev === "**") { + return set2; + } + if (part === "..") { + if (prev && prev !== ".." && prev !== "." && prev !== "**") { + set2.pop(); + return set2; + } + } + set2.push(part); + return set2; + }, []); + return parts.length === 0 ? [""] : parts; + }); + } + levelTwoFileOptimize(parts) { + if (!Array.isArray(parts)) { + parts = this.slashSplit(parts); + } + let didSomething = false; + do { + didSomething = false; + if (!this.preserveMultipleSlashes) { + for (let i = 1; i < parts.length - 1; i++) { + const p = parts[i]; + if (i === 1 && p === "" && parts[0] === "") + continue; + if (p === "." || p === "") { + didSomething = true; + parts.splice(i, 1); + i--; + } + } + if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) { + didSomething = true; + parts.pop(); + } + } + let dd = 0; + while (-1 !== (dd = parts.indexOf("..", dd + 1))) { + const p = parts[dd - 1]; + if (p && p !== "." && p !== ".." && p !== "**" && !(this.isWindows && /^[a-z]:$/i.test(p))) { + didSomething = true; + parts.splice(dd - 1, 2); + dd -= 2; + } + } + } while (didSomething); + return parts.length === 0 ? [""] : parts; + } + // First phase: single-pattern processing + //
 is 1 or more portions
+  //  is 1 or more portions
+  // 

is any portion other than ., .., '', or ** + // is . or '' + // + // **/.. is *brutal* for filesystem walking performance, because + // it effectively resets the recursive walk each time it occurs, + // and ** cannot be reduced out by a .. pattern part like a regexp + // or most strings (other than .., ., and '') can be. + // + //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/} + //

// -> 
/
+  // 
/

/../ ->

/
+  // **/**/ -> **/
+  //
+  // **/*/ -> */**/ <== not valid because ** doesn't follow
+  // this WOULD be allowed if ** did follow symlinks, or * didn't
+  firstPhasePreProcess(globParts) {
+    let didSomething = false;
+    do {
+      didSomething = false;
+      for (let parts of globParts) {
+        let gs = -1;
+        while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
+          let gss = gs;
+          while (parts[gss + 1] === "**") {
+            gss++;
+          }
+          if (gss > gs) {
+            parts.splice(gs + 1, gss - gs);
+          }
+          let next = parts[gs + 1];
+          const p = parts[gs + 2];
+          const p2 = parts[gs + 3];
+          if (next !== "..")
+            continue;
+          if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") {
+            continue;
+          }
+          didSomething = true;
+          parts.splice(gs, 1);
+          const other = parts.slice(0);
+          other[gs] = "**";
+          globParts.push(other);
+          gs--;
+        }
+        if (!this.preserveMultipleSlashes) {
+          for (let i = 1; i < parts.length - 1; i++) {
+            const p = parts[i];
+            if (i === 1 && p === "" && parts[0] === "")
+              continue;
+            if (p === "." || p === "") {
+              didSomething = true;
+              parts.splice(i, 1);
+              i--;
+            }
+          }
+          if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
+            didSomething = true;
+            parts.pop();
+          }
+        }
+        let dd = 0;
+        while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
+          const p = parts[dd - 1];
+          if (p && p !== "." && p !== ".." && p !== "**") {
+            didSomething = true;
+            const needDot = dd === 1 && parts[dd + 1] === "**";
+            const splin = needDot ? ["."] : [];
+            parts.splice(dd - 1, 2, ...splin);
+            if (parts.length === 0)
+              parts.push("");
+            dd -= 2;
+          }
+        }
+      }
+    } while (didSomething);
+    return globParts;
+  }
+  // second phase: multi-pattern dedupes
+  // {
/*/,
/

/} ->

/*/
+  // {
/,
/} -> 
/
+  // {
/**/,
/} -> 
/**/
+  //
+  // {
/**/,
/**/

/} ->

/**/
+  // ^-- not valid because ** doens't follow symlinks
+  secondPhasePreProcess(globParts) {
+    for (let i = 0; i < globParts.length - 1; i++) {
+      for (let j = i + 1; j < globParts.length; j++) {
+        const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
+        if (matched) {
+          globParts[i] = [];
+          globParts[j] = matched;
+          break;
+        }
+      }
+    }
+    return globParts.filter((gs) => gs.length);
+  }
+  partsMatch(a, b, emptyGSMatch = false) {
+    let ai = 0;
+    let bi = 0;
+    let result = [];
+    let which2 = "";
+    while (ai < a.length && bi < b.length) {
+      if (a[ai] === b[bi]) {
+        result.push(which2 === "b" ? b[bi] : a[ai]);
+        ai++;
+        bi++;
+      } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) {
+        result.push(a[ai]);
+        ai++;
+      } else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) {
+        result.push(b[bi]);
+        bi++;
+      } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
+        if (which2 === "b")
+          return false;
+        which2 = "a";
+        result.push(a[ai]);
+        ai++;
+        bi++;
+      } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") {
+        if (which2 === "a")
+          return false;
+        which2 = "b";
+        result.push(b[bi]);
+        ai++;
+        bi++;
+      } else {
+        return false;
+      }
+    }
+    return a.length === b.length && result;
+  }
+  parseNegate() {
+    if (this.nonegate)
+      return;
+    const pattern = this.pattern;
+    let negate = false;
+    let negateOffset = 0;
+    for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) {
+      negate = !negate;
+      negateOffset++;
+    }
+    if (negateOffset)
+      this.pattern = pattern.slice(negateOffset);
+    this.negate = negate;
+  }
+  // set partial to true to test if, for example,
+  // "/a/b" matches the start of "/*/b/*/d"
+  // Partial means, if you run out of file before you run
+  // out of pattern, then that's fine, as long as all
+  // the parts match.
+  matchOne(file, pattern, partial = false) {
+    let fileStartIndex = 0;
+    let patternStartIndex = 0;
+    if (this.isWindows) {
+      const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
+      const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
+      const patternDrive = typeof pattern[0] === "string" && /^[a-z]:$/i.test(pattern[0]);
+      const patternUNC = !patternDrive && pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]);
+      const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0;
+      const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0;
+      if (typeof fdi === "number" && typeof pdi === "number") {
+        const [fd, pd] = [
+          file[fdi],
+          pattern[pdi]
+        ];
+        if (fd.toLowerCase() === pd.toLowerCase()) {
+          pattern[pdi] = fd;
+          patternStartIndex = pdi;
+          fileStartIndex = fdi;
+        }
+      }
+    }
+    const { optimizationLevel = 1 } = this.options;
+    if (optimizationLevel >= 2) {
+      file = this.levelTwoFileOptimize(file);
+    }
+    if (pattern.includes(GLOBSTAR)) {
+      return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);
+    }
+    return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);
+  }
+  #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {
+    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);
+    const lastgs = pattern.lastIndexOf(GLOBSTAR);
+    const [head, body, tail] = partial ? [
+      pattern.slice(patternIndex, firstgs),
+      pattern.slice(firstgs + 1),
+      []
+    ] : [
+      pattern.slice(patternIndex, firstgs),
+      pattern.slice(firstgs + 1, lastgs),
+      pattern.slice(lastgs + 1)
+    ];
+    if (head.length) {
+      const fileHead = file.slice(fileIndex, fileIndex + head.length);
+      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {
+        return false;
+      }
+      fileIndex += head.length;
+      patternIndex += head.length;
+    }
+    let fileTailMatch = 0;
+    if (tail.length) {
+      if (tail.length + fileIndex > file.length)
+        return false;
+      let tailStart = file.length - tail.length;
+      if (this.#matchOne(file, tail, partial, tailStart, 0)) {
+        fileTailMatch = tail.length;
+      } else {
+        if (file[file.length - 1] !== "" || fileIndex + tail.length === file.length) {
+          return false;
+        }
+        tailStart--;
+        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {
+          return false;
+        }
+        fileTailMatch = tail.length + 1;
+      }
+    }
+    if (!body.length) {
+      let sawSome = !!fileTailMatch;
+      for (let i2 = fileIndex; i2 < file.length - fileTailMatch; i2++) {
+        const f = String(file[i2]);
+        sawSome = true;
+        if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+          return false;
+        }
+      }
+      return partial || sawSome;
+    }
+    const bodySegments = [[[], 0]];
+    let currentBody = bodySegments[0];
+    let nonGsParts = 0;
+    const nonGsPartsSums = [0];
+    for (const b of body) {
+      if (b === GLOBSTAR) {
+        nonGsPartsSums.push(nonGsParts);
+        currentBody = [[], 0];
+        bodySegments.push(currentBody);
+      } else {
+        currentBody[0].push(b);
+        nonGsParts++;
+      }
+    }
+    let i = bodySegments.length - 1;
+    const fileLength = file.length - fileTailMatch;
+    for (const b of bodySegments) {
+      b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);
+    }
+    return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);
+  }
+  // return false for "nope, not matching"
+  // return null for "not matching, cannot keep trying"
+  #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {
+    const bs = bodySegments[bodyIndex];
+    if (!bs) {
+      for (let i = fileIndex; i < file.length; i++) {
+        sawTail = true;
+        const f = file[i];
+        if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+          return false;
+        }
+      }
+      return sawTail;
+    }
+    const [body, after] = bs;
+    while (fileIndex <= after) {
+      const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);
+      if (m && globStarDepth < this.maxGlobstarRecursion) {
+        const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);
+        if (sub !== false) {
+          return sub;
+        }
+      }
+      const f = file[fileIndex];
+      if (f === "." || f === ".." || !this.options.dot && f.startsWith(".")) {
+        return false;
+      }
+      fileIndex++;
+    }
+    return partial || null;
+  }
+  #matchOne(file, pattern, partial, fileIndex, patternIndex) {
+    let fi;
+    let pi;
+    let pl;
+    let fl;
+    for (fi = fileIndex, pi = patternIndex, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+      this.debug("matchOne loop");
+      let p = pattern[pi];
+      let f = file[fi];
+      this.debug(pattern, p, f);
+      if (p === false || p === GLOBSTAR) {
+        return false;
+      }
+      let hit;
+      if (typeof p === "string") {
+        hit = f === p;
+        this.debug("string match", p, f, hit);
+      } else {
+        hit = p.test(f);
+        this.debug("pattern match", p, f, hit);
+      }
+      if (!hit)
+        return false;
+    }
+    if (fi === fl && pi === pl) {
+      return true;
+    } else if (fi === fl) {
+      return partial;
+    } else if (pi === pl) {
+      return fi === fl - 1 && file[fi] === "";
+    } else {
+      throw new Error("wtf?");
+    }
+  }
+  braceExpand() {
+    return braceExpand(this.pattern, this.options);
+  }
+  parse(pattern) {
+    assertValidPattern(pattern);
+    const options = this.options;
+    if (pattern === "**")
+      return GLOBSTAR;
+    if (pattern === "")
+      return "";
+    let m;
+    let fastTest = null;
+    if (m = pattern.match(starRE)) {
+      fastTest = options.dot ? starTestDot : starTest;
+    } else if (m = pattern.match(starDotExtRE)) {
+      fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m[1]);
+    } else if (m = pattern.match(qmarksRE)) {
+      fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m);
+    } else if (m = pattern.match(starDotStarRE)) {
+      fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
+    } else if (m = pattern.match(dotStarRE)) {
+      fastTest = dotStarTest;
+    }
+    const re = AST.fromGlob(pattern, this.options).toMMPattern();
+    if (fastTest && typeof re === "object") {
+      Reflect.defineProperty(re, "test", { value: fastTest });
+    }
+    return re;
+  }
+  makeRe() {
+    if (this.regexp || this.regexp === false)
+      return this.regexp;
+    const set2 = this.set;
+    if (!set2.length) {
+      this.regexp = false;
+      return this.regexp;
+    }
+    const options = this.options;
+    const twoStar = options.noglobstar ? star2 : options.dot ? twoStarDot : twoStarNoDot;
+    const flags = new Set(options.nocase ? ["i"] : []);
+    let re = set2.map((pattern) => {
+      const pp = pattern.map((p) => {
+        if (p instanceof RegExp) {
+          for (const f of p.flags.split(""))
+            flags.add(f);
+        }
+        return typeof p === "string" ? regExpEscape2(p) : p === GLOBSTAR ? GLOBSTAR : p._src;
+      });
+      pp.forEach((p, i) => {
+        const next = pp[i + 1];
+        const prev = pp[i - 1];
+        if (p !== GLOBSTAR || prev === GLOBSTAR) {
+          return;
+        }
+        if (prev === void 0) {
+          if (next !== void 0 && next !== GLOBSTAR) {
+            pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
+          } else {
+            pp[i] = twoStar;
+          }
+        } else if (next === void 0) {
+          pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + ")?";
+        } else if (next !== GLOBSTAR) {
+          pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
+          pp[i + 1] = GLOBSTAR;
+        }
+      });
+      const filtered = pp.filter((p) => p !== GLOBSTAR);
+      if (this.partial && filtered.length >= 1) {
+        const prefixes = [];
+        for (let i = 1; i <= filtered.length; i++) {
+          prefixes.push(filtered.slice(0, i).join("/"));
+        }
+        return "(?:" + prefixes.join("|") + ")";
+      }
+      return filtered.join("/");
+    }).join("|");
+    const [open2, close] = set2.length > 1 ? ["(?:", ")"] : ["", ""];
+    re = "^" + open2 + re + close + "$";
+    if (this.partial) {
+      re = "^(?:\\/|" + open2 + re.slice(1, -1) + close + ")$";
+    }
+    if (this.negate)
+      re = "^(?!" + re + ").+$";
+    try {
+      this.regexp = new RegExp(re, [...flags].join(""));
+    } catch {
+      this.regexp = false;
+    }
+    return this.regexp;
+  }
+  slashSplit(p) {
+    if (this.preserveMultipleSlashes) {
+      return p.split("/");
+    } else if (this.isWindows && /^\/\/[^/]+/.test(p)) {
+      return ["", ...p.split(/\/+/)];
+    } else {
+      return p.split(/\/+/);
+    }
+  }
+  match(f, partial = this.partial) {
+    this.debug("match", f, this.pattern);
+    if (this.comment) {
+      return false;
+    }
+    if (this.empty) {
+      return f === "";
+    }
+    if (f === "/" && partial) {
+      return true;
+    }
+    const options = this.options;
+    if (this.isWindows) {
+      f = f.split("\\").join("/");
+    }
+    const ff = this.slashSplit(f);
+    this.debug(this.pattern, "split", ff);
+    const set2 = this.set;
+    this.debug(this.pattern, "set", set2);
+    let filename = ff[ff.length - 1];
+    if (!filename) {
+      for (let i = ff.length - 2; !filename && i >= 0; i--) {
+        filename = ff[i];
+      }
+    }
+    for (const pattern of set2) {
+      let file = ff;
+      if (options.matchBase && pattern.length === 1) {
+        file = [filename];
+      }
+      const hit = this.matchOne(file, pattern, partial);
+      if (hit) {
+        if (options.flipNegate) {
+          return true;
+        }
+        return !this.negate;
+      }
+    }
+    if (options.flipNegate) {
+      return false;
+    }
+    return this.negate;
+  }
+  static defaults(def) {
+    return minimatch.defaults(def).Minimatch;
+  }
+};
+minimatch.AST = AST;
+minimatch.Minimatch = Minimatch;
+minimatch.escape = escape;
+minimatch.unescape = unescape;
+
+// 
+var arrayUnion = (...arguments_) => [...new Set(arguments_.flat())];
+var array_union_default = arrayUnion;
+
+// 
+function arrayDiffer(array, ...values) {
+  const rest = new Set([...values].flat());
+  return array.filter((element) => !rest.has(element));
+}
+
+// 
+function multimatch(list, patterns, options = {}) {
+  list = [list].flat();
+  patterns = [patterns].flat();
+  if (list.length === 0 || patterns.length === 0) {
+    return [];
+  }
+  let result = [];
+  for (const item of list) {
+    for (let pattern of patterns) {
+      let process5 = array_union_default;
+      if (pattern[0] === "!") {
+        pattern = pattern.slice(1);
+        process5 = arrayDiffer;
+      }
+      result = process5(result, minimatch.match([item], pattern, options));
+    }
+  }
+  return result;
+}
+
+// ng-dev/format/run-commands-parallel.js
+import { cpus } from "os";
+import { lstatSync } from "fs";
+
+// ng-dev/format/config.js
+function assertValidFormatConfig(config) {
+  const errors = [];
+  if (config.format === void 0) {
+    throw new ConfigValidationError(`No configuration defined for "format"`);
+  }
+  for (const [key, value] of Object.entries(config.format)) {
+    if (typeof value !== "boolean") {
+      errors.push(`"format.${key}" is not a boolean`);
+    }
+  }
+  if (errors.length) {
+    throw new ConfigValidationError('Invalid "format" configuration', errors);
+  }
+}
+
+// ng-dev/format/formatters/buildifier.js
+import { join as join3 } from "path";
+
+// ng-dev/format/formatters/base-formatter.js
+var Formatter = class {
+  constructor(git, config) {
+    this.git = git;
+    this.config = config;
+  }
+  commandFor(action) {
+    switch (action) {
+      case "check":
+        return [this.binaryFilePath, ...this.actions.check.commandFlags];
+      case "format":
+        return [this.binaryFilePath, ...this.actions.format.commandFlags];
+      default:
+        throw Error("Unknown action type");
+    }
+  }
+  callbackFor(action) {
+    switch (action) {
+      case "check":
+        return this.actions.check.callback;
+      case "format":
+        return this.actions.format.callback;
+      default:
+        throw Error("Unknown action type");
+    }
+  }
+  isEnabled() {
+    return !!this.config[this.name];
+  }
+  getFileMatcher() {
+    return this.config[this.name] ? this.matchers : [];
+  }
+};
+
+// ng-dev/format/formatters/buildifier.js
+var Buildifier = class extends Formatter {
+  constructor() {
+    super(...arguments);
+    this.name = "buildifier";
+    this.binaryFilePath = join3(this.git.baseDir, "");
+    this.matchers = ["**/*.bzl", "**/*.bazel", "**/WORKSPACE", "**/BUILD"];
+    this.actions = {
+      check: {
+        commandFlags: [BAZEL_WARNING_FLAG, "--lint=warn", "--mode=check", "--format=json"],
+        callback: (_, code, stdout) => {
+          stdout = stdout || "{}";
+          return code !== 0 || !JSON.parse(stdout).success;
+        }
+      },
+      format: {
+        commandFlags: [BAZEL_WARNING_FLAG, "--lint=fix", "--mode=fix"],
+        callback: (file, code, _, stderr) => {
+          if (code !== 0) {
+            Log.error(`Error running buildifier on: ${file}`);
+            Log.error(stderr);
+            Log.error();
+            return true;
+          }
+          return false;
+        }
+      }
+    };
+  }
+};
+var BAZEL_WARNING_FLAG = `--warnings=attr-cfg,attr-license,attr-non-empty,attr-output-default,attr-single-file,ctx-args,depset-iteration,depset-union,dict-concatenation,duplicated-name,filetype,git-repository,http-archive,integer-division,load,native-build,native-package,output-group,package-name,package-on-top,positional-args,redefined-variable,repository-name,string-iteration,unused-variable`;
+
+// ng-dev/format/formatters/prettier.js
+import { join as join4 } from "path";
+var Prettier = class extends Formatter {
+  constructor() {
+    super(...arguments);
+    this.name = "prettier";
+    this.binaryFilePath = join4(this.git.baseDir, "");
+    this.matchers = [
+      "**/*.{js,cjs,mjs}",
+      "**/*.{ts,cts,mts}",
+      "**/*.{jsx,tsx}",
+      "**/*.{css,scss}",
+      "**/*.{json,json5}",
+      "**/*.{yml,yaml}",
+      "**/*.md",
+      "**/*.html"
+    ];
+    this.configPath = this.config["prettier"] ? ChildProcess.spawnSync(this.binaryFilePath, [
+      "--find-config-path",
+      join4(process.cwd(), "dummy.js")
+    ]).stdout.trim() : "";
+    this.actions = {
+      check: {
+        commandFlags: this.configPath ? ["--config", this.configPath, "--check"] : ["--check"],
+        callback: (_, code, stdout) => {
+          return code !== 0;
+        }
+      },
+      format: {
+        commandFlags: this.configPath ? ["--config", this.configPath, "--write"] : ["--write"],
+        callback: (file, code, _, stderr) => {
+          if (code !== 0) {
+            Log.error(`Error running prettier on: ${file}`);
+            Log.error(stderr);
+            Log.error();
+            return true;
+          }
+          return false;
+        }
+      }
+    };
+  }
+};
+
+// ng-dev/format/formatters/index.js
+async function getActiveFormatters() {
+  const config = await getConfig();
+  assertValidFormatConfig(config);
+  const gitClient = await GitClient.get();
+  return [new Prettier(gitClient, config.format), new Buildifier(gitClient, config.format)].filter((formatter) => formatter.isEnabled());
+}
+
+// ng-dev/format/run-commands-parallel.js
+var AVAILABLE_THREADS = Math.max(Math.min(cpus().length, 8) - 1, 1);
+function runFormatterInParallel(allFiles, action) {
+  return new Promise(async (resolve5) => {
+    const formatters = await getActiveFormatters();
+    const failures = [];
+    const pendingCommands = [];
+    for (const formatter of formatters) {
+      pendingCommands.push(...multimatch.call(void 0, allFiles, formatter.getFileMatcher(), { dot: true }).map((file) => ({ formatter, file })));
+    }
+    if (pendingCommands.length === 0) {
+      return resolve5(false);
+    }
+    switch (action) {
+      case "format":
+        Log.info(`Formatting ${pendingCommands.length} file(s)`);
+        break;
+      case "check":
+        Log.info(`Checking format of ${pendingCommands.length} file(s)`);
+        break;
+      default:
+        throw Error(`Invalid format action "${action}": allowed actions are "format" and "check"`);
+    }
+    const progressBar = new import_cli_progress.Bar({
+      format: `[{bar}] ETA: {eta}s | {value}/{total} files`,
+      clearOnComplete: true
+    });
+    const threads = new Array(AVAILABLE_THREADS).fill(false);
+    function runCommandInThread(thread) {
+      const nextCommand = pendingCommands.pop();
+      if (nextCommand === void 0) {
+        threads[thread] = false;
+        return;
+      }
+      const { file, formatter } = nextCommand;
+      if (lstatSync(file).isSymbolicLink()) {
+        throw new Error(`Security violation: symlink detected for file ${file}`);
+      }
+      const [spawnCmd, ...spawnArgs] = [...formatter.commandFor(action), "--", file];
+      ChildProcess.spawn(spawnCmd, spawnArgs, {
+        suppressErrorOnFailingExitCode: true,
+        mode: "silent"
+      }).then(({ stdout, stderr, status }) => {
+        const failed = formatter.callbackFor(action)(file, status, stdout, stderr);
+        if (failed) {
+          failures.push({ filePath: file, message: stderr });
+        }
+        progressBar.increment(1);
+        if (pendingCommands.length) {
+          return runCommandInThread(thread);
+        }
+        threads[thread] = false;
+        if (threads.every((active) => !active)) {
+          progressBar.stop();
+          resolve5(failures);
+        }
+      });
+      threads[thread] = true;
+    }
+    progressBar.start(pendingCommands.length, 0);
+    threads.forEach((_, idx) => runCommandInThread(idx));
+  });
+}
+
+// ng-dev/format/format.js
+async function formatFiles(files) {
+  let failures = await runFormatterInParallel(files, "format");
+  if (failures === false) {
+    Log.info("No files matched for formatting.");
+    return 0;
+  }
+  if (failures.length !== 0) {
+    Log.error(`The following files could not be formatted:`);
+    failures.forEach(({ filePath, message }) => {
+      Log.info(`  \u2022 ${filePath}: ${message}`);
+    });
+    Log.error(`Formatting failed, see errors above for more information.`);
+    return 1;
+  }
+  Log.info(green(`\u2714  Formatting complete.`));
+  return 0;
+}
+
+// ng-dev/commit-message/config.js
+var ScopeRequirement;
+(function(ScopeRequirement2) {
+  ScopeRequirement2[ScopeRequirement2["Required"] = 0] = "Required";
+  ScopeRequirement2[ScopeRequirement2["Optional"] = 1] = "Optional";
+  ScopeRequirement2[ScopeRequirement2["Forbidden"] = 2] = "Forbidden";
+})(ScopeRequirement || (ScopeRequirement = {}));
+var ReleaseNotesLevel;
+(function(ReleaseNotesLevel2) {
+  ReleaseNotesLevel2[ReleaseNotesLevel2["Hidden"] = 0] = "Hidden";
+  ReleaseNotesLevel2[ReleaseNotesLevel2["Visible"] = 1] = "Visible";
+})(ReleaseNotesLevel || (ReleaseNotesLevel = {}));
+var COMMIT_TYPES = {
+  build: {
+    name: "build",
+    description: "Changes to local repository build system and tooling",
+    scope: ScopeRequirement.Optional,
+    releaseNotesLevel: ReleaseNotesLevel.Hidden
+  },
+  ci: {
+    name: "ci",
+    description: "Changes to CI configuration and CI specific tooling",
+    scope: ScopeRequirement.Forbidden,
+    releaseNotesLevel: ReleaseNotesLevel.Hidden
+  },
+  docs: {
+    name: "docs",
+    description: "Changes which exclusively affects documentation.",
+    scope: ScopeRequirement.Optional,
+    releaseNotesLevel: ReleaseNotesLevel.Hidden
+  },
+  feat: {
+    name: "feat",
+    description: "Creates a new feature",
+    scope: ScopeRequirement.Required,
+    releaseNotesLevel: ReleaseNotesLevel.Visible
+  },
+  fix: {
+    name: "fix",
+    description: "Fixes a previously discovered failure/bug",
+    scope: ScopeRequirement.Required,
+    releaseNotesLevel: ReleaseNotesLevel.Visible
+  },
+  perf: {
+    name: "perf",
+    description: "Improves performance without any change in functionality or API",
+    scope: ScopeRequirement.Required,
+    releaseNotesLevel: ReleaseNotesLevel.Visible
+  },
+  refactor: {
+    name: "refactor",
+    description: "Refactor without any change in functionality or API (includes style changes)",
+    scope: ScopeRequirement.Optional,
+    releaseNotesLevel: ReleaseNotesLevel.Hidden
+  },
+  release: {
+    name: "release",
+    description: "A release point in the repository",
+    scope: ScopeRequirement.Forbidden,
+    releaseNotesLevel: ReleaseNotesLevel.Hidden
+  },
+  test: {
+    name: "test",
+    description: "Improvements or corrections made to the project's test suite",
+    scope: ScopeRequirement.Optional,
+    releaseNotesLevel: ReleaseNotesLevel.Hidden
+  }
+};
+
+// ng-dev/utils/locale.js
+var defaultLocale = "en-US";
+function compareString(a, b) {
+  return a.localeCompare(b, defaultLocale);
+}
+
+// ng-dev/release/notes/context.js
+function escapeHtml(str) {
+  return str.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'");
+}
+var typesToIncludeInReleaseNotes = Object.values(COMMIT_TYPES).filter((type) => type.releaseNotesLevel === ReleaseNotesLevel.Visible).map((type) => type.name);
+var RenderContext = class {
+  constructor(data) {
+    this.data = data;
+    this.groupOrder = this.data.groupOrder || [];
+    this.hiddenScopes = this.data.hiddenScopes || [];
+    this.title = this.data.title;
+    this.version = this.data.version;
+    this.dateStamp = buildDateStamp(this.data.date);
+    this.urlFragmentForRelease = this.data.version;
+    this.commits = this._categorizeCommits(this.data.commits);
+    this._commitsWithinGroupComparator = (a, b) => {
+      const typeCompareOrder = compareString(a.type, b.type);
+      if (typeCompareOrder === 0) {
+        return compareString(a.description, b.description);
+      }
+      return typeCompareOrder;
+    };
+    this.asCommitGroups = (commits) => {
+      const groups = /* @__PURE__ */ new Map();
+      commits.forEach((commit) => {
+        const key = commit.groupName;
+        const groupCommits = groups.get(key) || [];
+        groups.set(key, groupCommits);
+        groupCommits.push(commit);
+      });
+      const commitGroups = Array.from(groups.entries()).map(([title, groupCommits]) => ({
+        title,
+        commits: groupCommits.sort(this._commitsWithinGroupComparator)
+      })).sort((a, b) => compareString(a.title, b.title));
+      if (this.groupOrder.length) {
+        for (const groupTitle of this.groupOrder.reverse()) {
+          const currentIdx = commitGroups.findIndex((k) => k.title === groupTitle);
+          if (currentIdx !== -1) {
+            const removedGroups = commitGroups.splice(currentIdx, 1);
+            commitGroups.splice(0, 0, ...removedGroups);
+          }
+        }
+      }
+      return commitGroups;
+    };
+    this.hasBreakingChanges = (commit) => {
+      return commit.breakingChanges.length !== 0;
+    };
+    this.hasDeprecations = (commit) => {
+      return commit.deprecations.length !== 0;
+    };
+    this.includeInReleaseNotes = () => {
+      return (commit) => {
+        if (this.hiddenScopes.includes(commit.scope)) {
+          return false;
+        }
+        if (this.hasBreakingChanges(commit) || this.hasDeprecations(commit)) {
+          return true;
+        }
+        return typesToIncludeInReleaseNotes.includes(commit.type);
+      };
+    };
+    this.unique = (field) => {
+      const set2 = /* @__PURE__ */ new Set();
+      return (commit) => {
+        const include = !set2.has(commit[field]);
+        set2.add(commit[field]);
+        return include;
+      };
+    };
+    this.commitToLink = (commit) => {
+      const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/commit/${commit.hash}`;
+      return `[${commit.shortHash}](${url})`;
+    };
+    this.pullRequestToLink = (prNumber) => {
+      const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/pull/${prNumber}`;
+      return `[#${prNumber}](${url})`;
+    };
+    this.convertPullRequestReferencesToLinks = (content) => {
+      return content.replace(/#(\d+)/g, (_, g) => this.pullRequestToLink(Number(g)));
+    };
+    this.bulletizeText = (text) => {
+      return "- " + text.replace(/\n/g, "\n  ");
+    };
+    this.commitToBadge = (commit) => {
+      let color = "yellow";
+      switch (commit.type) {
+        case "fix":
+          color = "green";
+          break;
+        case "feat":
+          color = "blue";
+          break;
+        case "perf":
+          color = "orange";
+          break;
+      }
+      const url = `https://github.com/${this.data.github.owner}/${this.data.github.name}/commit/${commit.hash}`;
+      const imgSrc = `https://img.shields.io/badge/${commit.shortHash}-${commit.type}-${color}`;
+      return `[![${commit.type} - ${commit.shortHash}](${imgSrc})](${url})`;
+    };
+  }
+  _categorizeCommits(commits) {
+    return commits.map((commit) => {
+      const { description, groupName } = this.data.categorizeCommit?.(commit) ?? {};
+      const escapedBreakingChanges = commit.breakingChanges.map((bc) => ({
+        ...bc,
+        text: escapeHtml(bc.text)
+      }));
+      const escapedDeprecations = commit.deprecations.map((dep) => ({
+        ...dep,
+        text: escapeHtml(dep.text)
+      }));
+      return {
+        ...commit,
+        type: escapeHtml(commit.type),
+        groupName: escapeHtml(groupName ?? commit.scope),
+        description: escapeHtml(description ?? commit.subject),
+        breakingChanges: escapedBreakingChanges,
+        deprecations: escapedDeprecations
+      };
+    });
+  }
+};
+function buildDateStamp(date = /* @__PURE__ */ new Date()) {
+  const year = `${date.getFullYear()}`;
+  const month = `${date.getMonth() + 1}`.padStart(2, "0");
+  const day = `${date.getDate()}`.padStart(2, "0");
+  return [year, month, day].join("-");
+}
+
+// ng-dev/release/notes/templates/changelog.js
+var changelog_default = `
+
+# <%- version %><% if (title) { %> "<%- title %>"<% } %> (<%- dateStamp %>)
+
+<%_
+const commitsInChangelog = commits.filter(includeInReleaseNotes());
+if (commitsInChangelog.length === 0) {
+_%>
+
+No user facing changes in this release
+<%_
+}
+const breakingChanges = commits.filter(hasBreakingChanges);
+if (breakingChanges.length) {
+_%>
+## Breaking Changes
+
+<%_
+  for (const group of asCommitGroups(breakingChanges)) {
+_%>
+### <%- group.title %>
+<%_
+    for (const commit of group.commits) {
+      for (const breakingChange of commit.breakingChanges) {
+_%>
+<%- bulletizeText(breakingChange.text) %>
+<%_
+      }
+    }
+  }
+}
+_%>
+
+<%_
+const deprecations = commits.filter(hasDeprecations);
+if (deprecations.length) {
+_%>
+## Deprecations
+<%_
+  for (const group of asCommitGroups(deprecations)) {
+_%>
+### <%- group.title %>
+<%_
+    for (const commit of group.commits) {
+      for (const deprecation of commit.deprecations) {
+_%>
+<%- bulletizeText(deprecation.text) %>
+<%_
+      }
+    }
+  }
+}
+_%>
+
+<%_
+for (const group of asCommitGroups(commitsInChangelog)) {
+_%>
+
+### <%- group.title %>
+| Commit | Type | Description |
+| -- | -- | -- |
+<%_
+  for (const commit of group.commits) {
+    const descriptionWithMarkdownLinks = convertPullRequestReferencesToLinks(
+      commit.description);
+_%>
+| <%- commitToLink(commit) %> | <%- commit.type %> | <%- descriptionWithMarkdownLinks %> |
+<%_
+  }
+}
+_%>
+
+`;
+
+// ng-dev/release/notes/templates/github-release.js
+var github_release_default = `
+<%_
+const commitsInChangelog = commits.filter(includeInReleaseNotes());
+if (commitsInChangelog.length === 0) {
+_%>
+No user facing changes in this release
+<%_ 
+}
+for (const group of asCommitGroups(commitsInChangelog)) {
+_%>
+
+### <%- group.title %>
+| Commit | Description |
+| -- | -- |
+<%_
+  for (const commit of group.commits) {
+_%>
+| <%- commitToBadge(commit) %> | <%- commit.description %> |
+<%_
+  }
+}
+_%>
+
+<%_
+const breakingChanges = commits.filter(hasBreakingChanges);
+if (breakingChanges.length) {
+_%>
+## Breaking Changes
+
+<%_
+  for (const group of asCommitGroups(breakingChanges)) {
+_%>
+### <%- group.title %>
+<%_
+    for (const commit of group.commits) {
+      for (const breakingChange of commit.breakingChanges) {
+_%>
+<%- bulletizeText(breakingChange.text) %>
+<%_
+      }
+    }
+  }
+}
+_%>
+
+<%_
+const deprecations = commits.filter(hasDeprecations);
+if (deprecations.length) {
+_%>
+## Deprecations
+<%_
+  for (const group of asCommitGroups(deprecations)) {
+_%>
+### <%- group.title %>
+<%_
+    for (const commit of group.commits) {
+      for (const deprecation of commit.deprecations) {
+_%>
+<%- bulletizeText(deprecation.text) %>
+<%_
+      }
+    }
+  }
+}
+_%>
+`;
+
+// 
+var nomatchRegex = /(?!.*)/;
+function escape2(string) {
+  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
+}
+function joinOr(parts) {
+  return parts.map((val) => typeof val === "string" ? escape2(val.trim()) : val.source).filter(Boolean).join("|");
+}
+function getNotesRegex(noteKeywords, notesPattern) {
+  if (!noteKeywords) {
+    return nomatchRegex;
+  }
+  const noteKeywordsSelection = joinOr(noteKeywords);
+  if (!notesPattern) {
+    return new RegExp(`^[\\s|*]*(${noteKeywordsSelection})[:\\s]+(.*)`, "i");
+  }
+  return notesPattern(noteKeywordsSelection);
+}
+function getReferencePartsRegex(issuePrefixes, issuePrefixesCaseSensitive) {
+  if (!issuePrefixes) {
+    return nomatchRegex;
+  }
+  const flags = issuePrefixesCaseSensitive ? "g" : "gi";
+  return new RegExp(`(?:.*?)??\\s*([\\w-\\.\\/]*?)??(${joinOr(issuePrefixes)})([\\w-]+)(?=\\s|$|[,;)\\]])`, flags);
+}
+function getReferencesRegex(referenceActions) {
+  if (!referenceActions) {
+    return /()(.+)/gi;
+  }
+  const joinedKeywords = joinOr(referenceActions);
+  return new RegExp(`(${joinedKeywords})(?:\\s+(.*?))(?=(?:${joinedKeywords})|$)`, "gi");
+}
+function getParserRegexes(options = {}) {
+  const notes = getNotesRegex(options.noteKeywords, options.notesPattern);
+  const referenceParts = getReferencePartsRegex(options.issuePrefixes, options.issuePrefixesCaseSensitive);
+  const references = getReferencesRegex(options.referenceActions);
+  return {
+    notes,
+    referenceParts,
+    references,
+    mentions: /@([\w-]+)/g,
+    url: /\b(?:https?):\/\/(?:www\.)?([-a-zA-Z0-9@:%_+.~#?&//=])+\b/
+  };
+}
+
+// 
+var SCISSOR = "------------------------ >8 ------------------------";
+function trimNewLines(input) {
+  const matches = input.match(/[^\r\n]/);
+  if (typeof matches?.index !== "number") {
+    return "";
+  }
+  const firstIndex = matches.index;
+  let lastIndex = input.length - 1;
+  while (input[lastIndex] === "\r" || input[lastIndex] === "\n") {
+    lastIndex--;
+  }
+  return input.substring(firstIndex, lastIndex + 1);
+}
+function appendLine(src, line) {
+  return src ? `${src}
+${line || ""}` : line || "";
+}
+function getCommentFilter(char) {
+  return char ? (line) => !line.startsWith(char) : () => true;
+}
+function truncateToScissor(lines, commentChar) {
+  const scissorIndex = lines.indexOf(`${commentChar} ${SCISSOR}`);
+  if (scissorIndex === -1) {
+    return lines;
+  }
+  return lines.slice(0, scissorIndex);
+}
+function gpgFilter(line) {
+  return !line.match(/^\s*gpg:/);
+}
+function assignMatchedCorrespondence(target, matches, correspondence) {
+  const { groups } = matches;
+  for (let i = 0, len = correspondence.length, key; i < len; i++) {
+    key = correspondence[i];
+    target[key] = (groups ? groups[key] : matches[i + 1]) || null;
+  }
+  return target;
+}
+
+// 
+var defaultOptions = {
+  noteKeywords: ["BREAKING CHANGE", "BREAKING-CHANGE"],
+  issuePrefixes: ["#"],
+  referenceActions: [
+    "close",
+    "closes",
+    "closed",
+    "fix",
+    "fixes",
+    "fixed",
+    "resolve",
+    "resolves",
+    "resolved"
+  ],
+  headerPattern: /^(\w*)(?:\(([\w$@.\-*/ ]*)\))?: (.*)$/,
+  headerCorrespondence: [
+    "type",
+    "scope",
+    "subject"
+  ],
+  revertPattern: /^Revert\s"([\s\S]*)"\s*This reverts commit (\w*)\.?/,
+  revertCorrespondence: ["header", "hash"],
+  fieldPattern: /^-(.*?)-$/
+};
+
+// 
+function createCommitObject(initialData = {}) {
+  return {
+    merge: null,
+    revert: null,
+    header: null,
+    body: null,
+    footer: null,
+    notes: [],
+    mentions: [],
+    references: [],
+    ...initialData
+  };
+}
+var CommitParser = class {
+  options;
+  regexes;
+  lines = [];
+  lineIndex = 0;
+  commit = createCommitObject();
+  constructor(options = {}) {
+    this.options = {
+      ...defaultOptions,
+      ...options
+    };
+    this.regexes = getParserRegexes(this.options);
+  }
+  currentLine() {
+    return this.lines[this.lineIndex];
+  }
+  nextLine() {
+    return this.lines[this.lineIndex++];
+  }
+  isLineAvailable() {
+    return this.lineIndex < this.lines.length;
+  }
+  parseReference(input, action) {
+    const { regexes } = this;
+    if (regexes.url.test(input)) {
+      return null;
+    }
+    const matches = regexes.referenceParts.exec(input);
+    if (!matches) {
+      return null;
+    }
+    let [raw, repository = null, prefix, issue2] = matches;
+    let owner = null;
+    if (repository) {
+      const slashIndex = repository.indexOf("/");
+      if (slashIndex !== -1) {
+        owner = repository.slice(0, slashIndex);
+        repository = repository.slice(slashIndex + 1);
+      }
+    }
+    return {
+      raw,
+      action,
+      owner,
+      repository,
+      prefix,
+      issue: issue2
+    };
+  }
+  parseReferences(input) {
+    const { regexes } = this;
+    const regex2 = input.match(regexes.references) ? regexes.references : /()(.+)/gi;
+    const references = [];
+    let matches;
+    let action;
+    let sentence;
+    let reference;
+    while (true) {
+      matches = regex2.exec(input);
+      if (!matches) {
+        break;
+      }
+      action = matches[1] || null;
+      sentence = matches[2] || "";
+      while (true) {
+        reference = this.parseReference(sentence, action);
+        if (!reference) {
+          break;
+        }
+        references.push(reference);
+      }
+    }
+    return references;
+  }
+  skipEmptyLines() {
+    let line = this.currentLine();
+    while (line !== void 0 && !line.trim()) {
+      this.nextLine();
+      line = this.currentLine();
+    }
+  }
+  parseMerge() {
+    const { commit, options } = this;
+    const correspondence = options.mergeCorrespondence || [];
+    const merge2 = this.currentLine();
+    const matches = merge2 && options.mergePattern ? merge2.match(options.mergePattern) : null;
+    if (matches) {
+      this.nextLine();
+      commit.merge = matches[0] || null;
+      assignMatchedCorrespondence(commit, matches, correspondence);
+      return true;
+    }
+    return false;
+  }
+  parseHeader(isMergeCommit) {
+    if (isMergeCommit) {
+      this.skipEmptyLines();
+    }
+    const { commit, options } = this;
+    const correspondence = options.headerCorrespondence || [];
+    const header = commit.header ?? this.nextLine();
+    let matches = null;
+    if (header) {
+      if (options.breakingHeaderPattern) {
+        matches = header.match(options.breakingHeaderPattern);
+      }
+      if (!matches && options.headerPattern) {
+        matches = header.match(options.headerPattern);
+      }
+    }
+    if (header) {
+      commit.header = header;
+    }
+    if (matches) {
+      assignMatchedCorrespondence(commit, matches, correspondence);
+    }
+  }
+  parseMeta() {
+    const { options, commit } = this;
+    if (!options.fieldPattern || !this.isLineAvailable()) {
+      return false;
+    }
+    let matches;
+    let field = null;
+    let parsed = false;
+    while (this.isLineAvailable()) {
+      matches = this.currentLine().match(options.fieldPattern);
+      if (matches) {
+        field = matches[1] || null;
+        this.nextLine();
+        continue;
+      }
+      if (field) {
+        parsed = true;
+        commit[field] = appendLine(commit[field], this.currentLine());
+        this.nextLine();
+      } else {
+        break;
+      }
+    }
+    return parsed;
+  }
+  parseNotes() {
+    const { regexes, commit } = this;
+    if (!this.isLineAvailable()) {
+      return false;
+    }
+    const matches = this.currentLine().match(regexes.notes);
+    let references = [];
+    if (matches) {
+      const note = {
+        title: matches[1],
+        text: matches[2]
+      };
+      commit.notes.push(note);
+      commit.footer = appendLine(commit.footer, this.currentLine());
+      this.nextLine();
+      while (this.isLineAvailable()) {
+        if (this.parseMeta()) {
+          return true;
+        }
+        if (this.parseNotes()) {
+          return true;
+        }
+        references = this.parseReferences(this.currentLine());
+        if (references.length) {
+          commit.references.push(...references);
+        } else {
+          note.text = appendLine(note.text, this.currentLine());
+        }
+        commit.footer = appendLine(commit.footer, this.currentLine());
+        this.nextLine();
+        if (references.length) {
+          break;
+        }
+      }
+      return true;
+    }
+    return false;
+  }
+  parseBodyAndFooter(isBody) {
+    const { commit } = this;
+    if (!this.isLineAvailable()) {
+      return isBody;
+    }
+    const references = this.parseReferences(this.currentLine());
+    const isStillBody = !references.length && isBody;
+    if (isStillBody) {
+      commit.body = appendLine(commit.body, this.currentLine());
+    } else {
+      commit.references.push(...references);
+      commit.footer = appendLine(commit.footer, this.currentLine());
+    }
+    this.nextLine();
+    return isStillBody;
+  }
+  parseBreakingHeader() {
+    const { commit, options } = this;
+    if (!options.breakingHeaderPattern || commit.notes.length || !commit.header) {
+      return;
+    }
+    const matches = commit.header.match(options.breakingHeaderPattern);
+    if (matches) {
+      commit.notes.push({
+        title: "BREAKING CHANGE",
+        text: matches[3]
+      });
+    }
+  }
+  parseMentions(input) {
+    const { commit, regexes } = this;
+    let matches;
+    for (; ; ) {
+      matches = regexes.mentions.exec(input);
+      if (!matches) {
+        break;
+      }
+      commit.mentions.push(matches[1]);
+    }
+  }
+  parseRevert(input) {
+    const { commit, options } = this;
+    const correspondence = options.revertCorrespondence || [];
+    const matches = options.revertPattern ? input.match(options.revertPattern) : null;
+    if (matches) {
+      commit.revert = assignMatchedCorrespondence({}, matches, correspondence);
+    }
+  }
+  cleanupCommit() {
+    const { commit } = this;
+    if (commit.body) {
+      commit.body = trimNewLines(commit.body);
+    }
+    if (commit.footer) {
+      commit.footer = trimNewLines(commit.footer);
+    }
+    commit.notes.forEach((note) => {
+      note.text = trimNewLines(note.text);
+    });
+    const referencesSet = /* @__PURE__ */ new Set();
+    commit.references = commit.references.filter((reference) => {
+      const uid = `${reference.action} ${reference.raw}`.toLocaleLowerCase();
+      const ok = !referencesSet.has(uid);
+      if (ok) {
+        referencesSet.add(uid);
+      }
+      return ok;
+    });
+  }
+  /**
+   * Parse commit message string into an object.
+   * @param input - Commit message string.
+   * @returns Commit object.
+   */
+  parse(input) {
+    if (!input.trim()) {
+      throw new TypeError("Expected a raw commit");
+    }
+    const { commentChar } = this.options;
+    const commentFilter = getCommentFilter(commentChar);
+    const rawLines = trimNewLines(input).split(/\r?\n/);
+    const lines = commentChar ? truncateToScissor(rawLines, commentChar).filter((line) => commentFilter(line) && gpgFilter(line)) : rawLines.filter((line) => gpgFilter(line));
+    const commit = createCommitObject();
+    this.lines = lines;
+    this.lineIndex = 0;
+    this.commit = commit;
+    const isMergeCommit = this.parseMerge();
+    this.parseHeader(isMergeCommit);
+    if (commit.header) {
+      commit.references = this.parseReferences(commit.header);
+    }
+    let isBody = true;
+    while (this.isLineAvailable()) {
+      this.parseMeta();
+      if (this.parseNotes()) {
+        isBody = false;
+      }
+      if (!this.parseBodyAndFooter(isBody)) {
+        isBody = false;
+      }
+    }
+    this.parseBreakingHeader();
+    this.parseMentions(input);
+    this.parseRevert(input);
+    this.cleanupCommit();
+    return commit;
+  }
+};
+
+// ng-dev/commit-message/parse.js
+var commitFields = {
+  hash: "%H",
+  shortHash: "%h",
+  author: "%aN"
+};
+var commitFieldsAsFormat = (fields) => {
+  return Object.entries(fields).map(([key, value]) => `%n-${key}-%n${value}`).join("");
+};
+var gitLogFormatForParsing = `%B${commitFieldsAsFormat(commitFields)}`;
+var NoteSections;
+(function(NoteSections2) {
+  NoteSections2["BREAKING_CHANGE"] = "BREAKING CHANGE";
+  NoteSections2["DEPRECATED"] = "DEPRECATED";
+})(NoteSections || (NoteSections = {}));
+var FIXUP_PREFIX_RE = /^fixup! /i;
+var SQUASH_PREFIX_RE = /^squash! /i;
+var REVERT_PREFIX_RE = /^revert:? /i;
+var headerPattern = /^(\w+)(?:\(([^)]+)\))?: (.*)$/;
+var headerCorrespondence = ["type", "scope", "subject"];
+var parseOptions = {
+  commentChar: "#",
+  headerPattern,
+  headerCorrespondence,
+  noteKeywords: [NoteSections.BREAKING_CHANGE, NoteSections.DEPRECATED],
+  notesPattern: (keywords) => new RegExp(`^\\s*(${keywords}): ?(.*)`)
+};
+var commitParser = new CommitParser(parseOptions);
+function parseCommitFromGitLog(fullText) {
+  return parseInternal(fullText);
+}
+function parseInternal(fullText) {
+  const commit = commitParser.parse(fullText);
+  const breakingChanges = [];
+  const deprecations = [];
+  const header = (commit.header || "").replace(FIXUP_PREFIX_RE, "").replace(SQUASH_PREFIX_RE, "").replace(REVERT_PREFIX_RE, "");
+  for (const note of commit.notes) {
+    switch (note.title) {
+      case NoteSections.BREAKING_CHANGE:
+        breakingChanges.push(note);
+        break;
+      case NoteSections.DEPRECATED:
+        deprecations.push(note);
+        break;
+    }
+  }
+  return {
+    fullText,
+    breakingChanges,
+    deprecations,
+    header,
+    body: commit.body || "",
+    footer: commit.footer || "",
+    originalHeader: commit.header || "",
+    references: commit.references,
+    scope: commit["scope"] || "",
+    subject: commit["subject"] || "",
+    type: commit["type"] || "",
+    isFixup: FIXUP_PREFIX_RE.test(fullText),
+    isSquash: SQUASH_PREFIX_RE.test(fullText),
+    isRevert: REVERT_PREFIX_RE.test(fullText),
+    author: commit["author"] || void 0,
+    hash: commit["hash"] || void 0,
+    shortHash: commit["shortHash"] || void 0
+  };
+}
+
+// ng-dev/release/notes/commits/unique-commit-id.js
+var fieldsToIncorporateForId = ["header", "isFixup", "isRevert", "isSquash"];
+function computeUniqueIdFromCommitMessage(commit) {
+  return fieldsToIncorporateForId.map((f) => commit[f]).join("\u0275\u0275");
+}
+
+// ng-dev/release/notes/commits/get-commits-in-range.js
+function getCommitsForRangeWithDeduping(client, baseRef, headRef) {
+  const commits = [];
+  const commitsForHead = fetchCommitsForRevisionRange(client, `${baseRef}..${headRef}`);
+  const commitsForBase = fetchCommitsForRevisionRange(client, `${headRef}..${baseRef}`);
+  const knownCommitsOnlyInBase = /* @__PURE__ */ new Map();
+  for (const commit of commitsForBase) {
+    const id = computeUniqueIdFromCommitMessage(commit);
+    const numSimilarCommits = knownCommitsOnlyInBase.get(id) ?? 0;
+    knownCommitsOnlyInBase.set(id, numSimilarCommits + 1);
+  }
+  for (const commit of commitsForHead) {
+    const id = computeUniqueIdFromCommitMessage(commit);
+    const numSimilarCommits = knownCommitsOnlyInBase.get(id) ?? 0;
+    if (numSimilarCommits > 0) {
+      knownCommitsOnlyInBase.set(id, numSimilarCommits - 1);
+      continue;
+    }
+    commits.push(commit);
+  }
+  return commits;
+}
+function fetchCommitsForRevisionRange(client, revisionRange) {
+  const splitDelimiter = "-------------\u0275\u0275------------";
+  const output = client.run([
+    "log",
+    `--format=${gitLogFormatForParsing}${splitDelimiter}`,
+    revisionRange
+  ]);
+  const commits = /* @__PURE__ */ new Map();
+  output.stdout.split(splitDelimiter).reverse().forEach((entry) => {
+    if (entry.trim() === "") {
+      return;
+    }
+    const commit = parseCommitFromGitLog(santizeCommitMessage(entry));
+    if (commit.isRevert) {
+      commits.delete(commit.originalHeader.match(/^revert:? "(.*)"/i)?.[1] || "");
+    } else {
+      commits.set(commit.header, commit);
+    }
+  });
+  return Array.from(commits.values()).reverse();
+}
+function santizeCommitMessage(content) {
+  return content.replace(/ (@[A-z0-9]+) /g, " `$1` ");
+}
+
+// ng-dev/release/notes/changelog.js
+var import_semver = __toESM(require_semver2());
+import { existsSync as existsSync2, readFileSync as readFileSync6, writeFileSync as writeFileSync2 } from "fs";
+import { join as join5 } from "path";
+var changelogPath = "CHANGELOG.md";
+var changelogArchivePath = "CHANGELOG_ARCHIVE.md";
+var splitMarker = "";
+var joinMarker = `
+
+${splitMarker}
+
+`;
+var versionAnchorMatcher = new RegExp(``);
+var Changelog = class {
+  static prependEntryToChangelogFile(git, entry) {
+    const changelog = new this(git);
+    changelog.prependEntryToChangelogFile(entry);
+  }
+  static moveEntriesPriorToVersionToArchive(git, version) {
+    const changelog = new this(git);
+    changelog.moveEntriesPriorToVersionToArchive(version);
+  }
+  static removePrereleaseEntriesForVersion(git, version) {
+    const changelog = new this(git);
+    changelog.removePrereleaseEntriesForVersion(version);
+  }
+  static getChangelogFilePaths(git) {
+    return new this(git);
+  }
+  get entries() {
+    if (this._entries === void 0) {
+      return this._entries = this.getEntriesFor(this.filePath);
+    }
+    return this._entries;
+  }
+  get archiveEntries() {
+    if (this._archiveEntries === void 0) {
+      return this._archiveEntries = this.getEntriesFor(this.archiveFilePath);
+    }
+    return this._archiveEntries;
+  }
+  constructor(git) {
+    this.git = git;
+    this.filePath = join5(this.git.baseDir, changelogPath);
+    this.archiveFilePath = join5(this.git.baseDir, changelogArchivePath);
+    this._entries = void 0;
+    this._archiveEntries = void 0;
+  }
+  prependEntryToChangelogFile(entry) {
+    this.entries.unshift(parseChangelogEntry(entry));
+    this.writeToChangelogFile();
+  }
+  removePrereleaseEntriesForVersion(version) {
+    this._entries = this.entries.filter((entry) => {
+      if (entry.version.prerelease.length !== 0) {
+        return version.major !== entry.version.major || version.minor !== entry.version.minor || version.patch !== entry.version.patch;
+      }
+      return true;
+    });
+    this.writeToChangelogFile();
+  }
+  moveEntriesPriorToVersionToArchive(version) {
+    [...this.entries].reverse().forEach((entry) => {
+      if (import_semver.default.lt(entry.version, version)) {
+        this.archiveEntries.unshift(entry);
+        this.entries.splice(this.entries.indexOf(entry), 1);
+      }
+    });
+    this.writeToChangelogFile();
+    if (this.archiveEntries.length) {
+      this.writeToChangelogArchiveFile();
+    }
+  }
+  writeToChangelogArchiveFile() {
+    const changelogArchive = this.archiveEntries.map((entry) => entry.content).join(joinMarker);
+    writeFileSync2(this.archiveFilePath, changelogArchive);
+  }
+  writeToChangelogFile() {
+    const changelog = this.entries.map((entry) => entry.content).join(joinMarker);
+    writeFileSync2(this.filePath, changelog, {});
+  }
+  getEntriesFor(path5) {
+    if (!existsSync2(path5)) {
+      return [];
+    }
+    return readFileSync6(path5, { encoding: "utf8" }).split(splitMarker).filter((entry) => entry.trim().length !== 0).map(parseChangelogEntry);
+  }
+};
+function parseChangelogEntry(content) {
+  const versionMatcherResult = versionAnchorMatcher.exec(content);
+  if (versionMatcherResult === null) {
+    throw Error(`Unable to determine version for changelog entry: ${content}`);
+  }
+  const version = import_semver.default.parse(versionMatcherResult[1]);
+  if (version === null) {
+    throw Error(`Unable to determine version for changelog entry, with tag: ${versionMatcherResult[1]}`);
+  }
+  return {
+    content: content.trim(),
+    version
+  };
+}
+
+// ng-dev/release/notes/release-notes.js
+var workspaceRelativeChangelogPath = "CHANGELOG.md";
+var ReleaseNotes = class _ReleaseNotes {
+  static async forRange(git, version, baseRef, headRef) {
+    const config = await getConfig([assertValidReleaseConfig]);
+    const commits = getCommitsForRangeWithDeduping(git, baseRef, headRef);
+    return new _ReleaseNotes(config, version, commits, git);
+  }
+  constructor(config, version, commits, git) {
+    this.config = config;
+    this.version = version;
+    this.commits = commits;
+    this.git = git;
+  }
+  async getGithubReleaseEntry() {
+    return ejs_default.render(github_release_default, await this.generateRenderContext(), {
+      rmWhitespace: true
+    });
+  }
+  async getChangelogEntry() {
+    return ejs_default.render(changelog_default, await this.generateRenderContext(), { rmWhitespace: true });
+  }
+  async prependEntryToChangelogFile() {
+    if (import_semver2.default.prerelease(this.version) === null) {
+      Changelog.removePrereleaseEntriesForVersion(this.git, this.version);
+    }
+    Changelog.prependEntryToChangelogFile(this.git, await this.getChangelogEntry());
+    try {
+      assertValidFormatConfig(await this.config);
+      await formatFiles([Changelog.getChangelogFilePaths(this.git).filePath]);
+    } catch {
+    }
+  }
+  async getCommitCountInReleaseNotes() {
+    const context3 = await this.generateRenderContext();
+    return context3.commits.filter(context3.includeInReleaseNotes()).length;
+  }
+  async getUrlFragmentForRelease() {
+    return (await this.generateRenderContext()).urlFragmentForRelease;
+  }
+  async promptForReleaseTitle() {
+    const notesConfig = await this._getNotesConfig();
+    if (this.title === void 0 && notesConfig.useReleaseTitle) {
+      this.title = await Prompt.input({ message: "Please provide a title for the release:" });
+    }
+    this.title ?? (this.title = false);
+    return this.title;
+  }
+  async generateRenderContext() {
+    const notesConfig = await this._getNotesConfig();
+    if (!this.renderContext) {
+      this.renderContext = new RenderContext({
+        commits: this.commits,
+        github: this.git.remoteConfig,
+        version: this.version.format(),
+        groupOrder: notesConfig.groupOrder,
+        hiddenScopes: notesConfig.hiddenScopes,
+        categorizeCommit: notesConfig.categorizeCommit,
+        title: await this.promptForReleaseTitle()
+      });
+    }
+    return this.renderContext;
+  }
+  async _getNotesConfig() {
+    return (await this.config).release.releaseNotes ?? {};
+  }
+};
+
+// ng-dev/release/versioning/npm-command.js
+var NpmCommand = class {
+  static async publish(packagePath, distTag, registryUrl) {
+    const args = ["publish", "--access", "public", "--tag", distTag];
+    if (registryUrl !== void 0) {
+      args.push("--registry", registryUrl);
+    }
+    await ChildProcess.spawn("npm", args, { cwd: packagePath, mode: "silent" });
+  }
+  static async deprecate(packageName, version, message, registryUrl) {
+    const args = ["deprecate", `${packageName}@${version}`, message];
+    if (registryUrl !== void 0) {
+      args.push("--registry", registryUrl);
+    }
+    try {
+      await ChildProcess.spawn("npm", args, { mode: "silent" });
+    } catch (e) {
+      Log.error(Array(80).join("#"));
+      Log.error(`  \u2718   An error occurred while deprecating "${packageName}".`);
+      Log.error(e);
+      Log.error(Array(80).join("#"));
+    }
+  }
+  static async setDistTagForPackage(packageName, distTag, version, registryUrl) {
+    const args = ["dist-tag", "add", `${packageName}@${version}`, distTag];
+    if (registryUrl !== void 0) {
+      args.push("--registry", registryUrl);
+    }
+    await ChildProcess.spawn("npm", args, { mode: "silent" });
+  }
+  static async deleteDistTagForPackage(packageName, distTag, registryUrl) {
+    const args = ["dist-tag", "rm", packageName, distTag];
+    if (registryUrl !== void 0) {
+      args.push("--registry", registryUrl);
+    }
+    await ChildProcess.spawn("npm", args, { mode: "silent" });
+  }
+  static async checkIsLoggedIn(registryUrl) {
+    const args = ["whoami"];
+    if (registryUrl !== void 0) {
+      args.push("--registry", registryUrl);
+    }
+    try {
+      await ChildProcess.spawn("npm", args, { mode: "silent" });
+    } catch (e) {
+      return false;
+    }
+    return true;
+  }
+  static async startInteractiveLogin(registryUrl) {
+    const args = ["login", "--no-browser"];
+    if (registryUrl !== void 0) {
+      args.splice(1, 0, "--registry", registryUrl);
+    }
+    await ChildProcess.spawnInteractive("npm", args);
+  }
+  static async logout(registryUrl) {
+    const args = ["logout"];
+    if (registryUrl !== void 0) {
+      args.splice(1, 0, "--registry", registryUrl);
+    }
+    try {
+      await ChildProcess.spawn("npm", args, { mode: "silent" });
+    } finally {
+      return this.checkIsLoggedIn(registryUrl);
+    }
+  }
+};
+
+// ng-dev/release/publish/constants.js
+var githubReleaseBodyLimit = 125e3;
+
+// ng-dev/release/versioning/long-term-support.js
+var import_semver3 = __toESM(require_semver2());
+
+// ng-dev/release/versioning/npm-registry.js
+var _npmPackageInfoCache = {};
+async function fetchProjectNpmPackageInfo(config) {
+  return await fetchPackageInfoFromNpmRegistry(config.representativeNpmPackage);
+}
+async function fetchPackageInfoFromNpmRegistry(pkgName) {
+  if (_npmPackageInfoCache[pkgName] === void 0) {
+    _npmPackageInfoCache[pkgName] = fetch(`https://registry.npmjs.org/${pkgName}`).then((r) => r.json());
+  }
+  return await _npmPackageInfoCache[pkgName];
+}
+
+// ng-dev/release/versioning/long-term-support.js
+var majorActiveSupportDuration = 6;
+var majorLongTermSupportDuration = 12;
+var ltsNpmDistTagRegex = /^v(\d+)-lts$/;
+async function fetchLongTermSupportBranchesFromNpm(config) {
+  const { "dist-tags": distTags, time } = await fetchProjectNpmPackageInfo(config);
+  const today = /* @__PURE__ */ new Date();
+  const active = [];
+  const inactive = [];
+  for (const npmDistTag in distTags) {
+    if (isLtsDistTag(npmDistTag)) {
+      const version = import_semver3.default.parse(distTags[npmDistTag]);
+      const branchName = `${version.major}.${version.minor}.x`;
+      const majorReleaseDate = new Date(time[`${version.major}.0.0`]);
+      const ltsEndDate = computeLtsEndDateOfMajor(majorReleaseDate);
+      const ltsBranch = { name: branchName, version, npmDistTag };
+      if (today <= ltsEndDate) {
+        active.push(ltsBranch);
+      } else {
+        inactive.push(ltsBranch);
+      }
+    }
+  }
+  active.sort((a, b) => import_semver3.default.rcompare(a.version, b.version));
+  inactive.sort((a, b) => import_semver3.default.rcompare(a.version, b.version));
+  return { active, inactive };
+}
+function isLtsDistTag(tagName) {
+  return ltsNpmDistTagRegex.test(tagName);
+}
+function computeLtsEndDateOfMajor(majorReleaseDate) {
+  return new Date(majorReleaseDate.getFullYear(), majorReleaseDate.getMonth() + majorActiveSupportDuration + majorLongTermSupportDuration, majorReleaseDate.getDate(), majorReleaseDate.getHours(), majorReleaseDate.getMinutes(), majorReleaseDate.getSeconds(), majorReleaseDate.getMilliseconds());
+}
+
+// ng-dev/release/versioning/active-release-trains.js
+var import_semver5 = __toESM(require_semver2());
+
+// ng-dev/release/versioning/release-trains.js
+var ReleaseTrain = class {
+  constructor(branchName, version) {
+    this.branchName = branchName;
+    this.version = version;
+    this.isMajor = this.version.minor === 0 && this.version.patch === 0;
+  }
+};
+
+// ng-dev/release/versioning/version-branches.js
+var import_semver4 = __toESM(require_semver2());
+var versionBranchNameRegex = /^(\d+)\.(\d+)\.x$/;
+var exceptionalMinorPackageIndicator = "__ngDevExceptionalMinor__";
+async function getVersionInfoForBranch(repo, branchName) {
+  const { data } = await repo.api.repos.getContent({
+    owner: repo.owner,
+    repo: repo.name,
+    path: "/package.json",
+    ref: branchName
+  });
+  const content = data.content;
+  if (!content) {
+    throw Error(`Unable to read "package.json" file from repository.`);
+  }
+  const pkgJson = JSON.parse(Buffer.from(content, "base64").toString());
+  const parsedVersion = import_semver4.default.parse(pkgJson.version);
+  if (parsedVersion === null) {
+    throw Error(`Invalid version detected in following branch: ${branchName}.`);
+  }
+  return {
+    version: parsedVersion,
+    isExceptionalMinor: pkgJson[exceptionalMinorPackageIndicator] === true
+  };
+}
+function isVersionBranch(branchName) {
+  return versionBranchNameRegex.test(branchName);
+}
+async function getBranchesForMajorVersions(repo, majorVersions) {
+  const branchData = await repo.api.paginate(repo.api.repos.listBranches, {
+    owner: repo.owner,
+    repo: repo.name,
+    protected: true
+  });
+  const branches = [];
+  for (const { name } of branchData) {
+    if (!isVersionBranch(name)) {
+      continue;
+    }
+    const parsed = convertVersionBranchToSemVer(name);
+    if (parsed !== null && majorVersions.includes(parsed.major)) {
+      branches.push({ name, parsed });
+    }
+  }
+  return branches.sort((a, b) => import_semver4.default.rcompare(a.parsed, b.parsed));
+}
+function convertVersionBranchToSemVer(branchName) {
+  return import_semver4.default.parse(branchName.replace(versionBranchNameRegex, "$1.$2.0"));
+}
+
+// ng-dev/release/versioning/active-release-trains.js
+var ActiveReleaseTrains = class {
+  constructor(trains) {
+    this.trains = trains;
+    this.releaseCandidate = this.trains.releaseCandidate;
+    this.next = this.trains.next;
+    this.latest = this.trains.latest;
+    this.exceptionalMinor = this.trains.exceptionalMinor;
+  }
+  isFeatureFreeze() {
+    return this.releaseCandidate !== null && this.releaseCandidate.version.prerelease[0] === "next";
+  }
+  static async fetch(repo) {
+    return fetchActiveReleaseTrains(repo);
+  }
+};
+async function fetchActiveReleaseTrains(repo) {
+  const nextBranchName = repo.nextBranchName;
+  const { version: nextVersion } = await getVersionInfoForBranch(repo, nextBranchName);
+  const next = new ReleaseTrain(nextBranchName, nextVersion);
+  const majorVersionsToFetch = [];
+  const checks = {
+    canHaveExceptionalMinor: () => false,
+    isValidReleaseCandidateVersion: () => false,
+    isValidExceptionalMinorVersion: () => false
+  };
+  if (nextVersion.minor === 0) {
+    majorVersionsToFetch.push(nextVersion.major - 1, nextVersion.major - 2);
+    checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major - 1;
+    checks.canHaveExceptionalMinor = (rc) => rc === null || rc.isMajor;
+    checks.isValidExceptionalMinorVersion = (v, rc) => v.major === (rc === null ? nextVersion.major : rc.version.major) - 1;
+  } else if (nextVersion.minor === 1) {
+    majorVersionsToFetch.push(nextVersion.major, nextVersion.major - 1);
+    checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major;
+    checks.canHaveExceptionalMinor = (rc) => rc !== null && rc.isMajor;
+    checks.isValidExceptionalMinorVersion = (v, rc) => v.major === rc.version.major - 1;
+  } else {
+    majorVersionsToFetch.push(nextVersion.major);
+    checks.isValidReleaseCandidateVersion = (v) => v.major === nextVersion.major;
+    checks.canHaveExceptionalMinor = () => false;
+  }
+  const branches = await getBranchesForMajorVersions(repo, majorVersionsToFetch);
+  const { latest, releaseCandidate, exceptionalMinor } = await findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks);
+  if (latest === null) {
+    throw Error(`Unable to determine the latest release-train. The following branches have been considered: [${branches.map((b) => b.name).join(", ")}]`);
+  }
+  return new ActiveReleaseTrains({ releaseCandidate, next, latest, exceptionalMinor });
+}
+async function findActiveReleaseTrainsFromVersionBranches(repo, next, branches, checks) {
+  const nextReleaseTrainVersion = import_semver5.default.parse(`${next.version.major}.${next.version.minor}.0`);
+  const nextBranchName = repo.nextBranchName;
+  let latest = null;
+  let releaseCandidate = null;
+  let exceptionalMinor = null;
+  for (const { name, parsed } of branches) {
+    if (import_semver5.default.gt(parsed, nextReleaseTrainVersion)) {
+      throw Error(`Discovered unexpected version-branch "${name}" for a release-train that is more recent than the release-train currently in the "${nextBranchName}" branch. Please either delete the branch if created by accident, or update the outdated version in the next branch (${nextBranchName}).`);
+    } else if (import_semver5.default.eq(parsed, nextReleaseTrainVersion)) {
+      throw Error(`Discovered unexpected version-branch "${name}" for a release-train that is already active in the "${nextBranchName}" branch. Please either delete the branch if created by accident, or update the version in the next branch (${nextBranchName}).`);
+    }
+    const { version, isExceptionalMinor } = await getVersionInfoForBranch(repo, name);
+    const releaseTrain = new ReleaseTrain(name, version);
+    const isPrerelease = version.prerelease[0] === "rc" || version.prerelease[0] === "next";
+    if (isExceptionalMinor) {
+      if (exceptionalMinor !== null) {
+        throw Error(`Unable to determine latest release-train. Found an additional exceptional minor version branch: "${name}". Already discovered: ${exceptionalMinor.branchName}.`);
+      }
+      if (!checks.canHaveExceptionalMinor(releaseCandidate)) {
+        throw Error(`Unable to determine latest release-train. Found an unexpected exceptional minor version branch: "${name}". No exceptional minor is currently allowed.`);
+      }
+      if (!checks.isValidExceptionalMinorVersion(version, releaseCandidate)) {
+        throw Error(`Unable to determine latest release-train. Found an invalid exceptional minor version branch: "${name}". Invalid version: ${version}.`);
+      }
+      exceptionalMinor = releaseTrain;
+      continue;
+    }
+    if (isPrerelease) {
+      if (exceptionalMinor !== null) {
+        throw Error(`Unable to determine latest release-train. Discovered a feature-freeze/release-candidate version branch (${name}) that is older than an in-progress exceptional minor (${exceptionalMinor.branchName}).`);
+      }
+      if (releaseCandidate !== null) {
+        throw Error(`Unable to determine latest release-train. Found two consecutive pre-release version branches. No exceptional minors are allowed currently, and there cannot be multiple feature-freeze/release-candidate branches: "${name}".`);
+      }
+      if (!checks.isValidReleaseCandidateVersion(version)) {
+        throw Error(`Discovered unexpected old feature-freeze/release-candidate branch. Expected no version-branch in feature-freeze/release-candidate mode for v${version.major}.`);
+      }
+      releaseCandidate = releaseTrain;
+      continue;
+    }
+    latest = releaseTrain;
+    break;
+  }
+  return { releaseCandidate, exceptionalMinor, latest };
+}
+
+// github-actions/release/publish/lib/publish-ci.js
+var PublishCiTool = class {
+  constructor(config, git, projectDir, options) {
+    this.config = config;
+    this.git = git;
+    this.projectDir = projectDir;
+    this.options = options;
+  }
+  /**
+   * Executes the publish-ci process.
+   *
+   * Validates the environment, verifies the HEAD commit matches the expected SHA,
+   * resolves the pre-built packages, generates release notes by comparing versions,
+   * and performs the tagging, release creation, and NPM publishing.
+   *
+   * @throws {Error} If WOMBOT_TOKEN is missing (and not in dry-run), if HEAD SHA doesn't match
+   * expected SHA, if no built packages are found, or if any GitHub/NPM API operation fails.
+   */
+  async run() {
+    if (!this.options.dryRun && !process.env["WOMBOT_TOKEN"]) {
+      throw new Error("WOMBOT_TOKEN environment variable is not defined.");
+    }
+    this.assertExpectedSha();
+    const builtPackages = findBuiltPackages(this.options.builtPackagesDir);
+    if (builtPackages.length === 0) {
+      throw new Error(`No built packages found under directory ${this.options.builtPackagesDir}`);
+    }
+    const builtPackagesWithInfo = await analyzeAndExtendBuiltPackagesWithInfo(builtPackages, this.config.release.npmPackages);
+    const beforeStagingSha = this.getBeforeStagingSha();
+    const newVersion = readPackageJsonAtRef(this.git, "HEAD").version;
+    const versionAtBeforeStaging = readPackageJsonAtRef(this.git, beforeStagingSha).version;
+    const newSemver = import_semver6.default.parse(newVersion);
+    if (!newSemver) {
+      throw new Error(`Failed to parse version ${newVersion} as semver.`);
+    }
+    const versionAtBeforeStagingSemver = import_semver6.default.parse(versionAtBeforeStaging);
+    if (!versionAtBeforeStagingSemver) {
+      throw new Error(`Failed to parse version ${versionAtBeforeStaging} as semver.`);
+    }
+    const previousVersionTag = this.getPreviousVersionTag(newSemver, versionAtBeforeStagingSemver);
+    const releaseNotes = await ReleaseNotes.forRange(this.git, newSemver, previousVersionTag, beforeStagingSha);
+    const npmDistTag = await determineNpmDistTag(newSemver, this.config.release, this.git);
+    await this.createGithubReleaseAndTags(newVersion, newSemver, releaseNotes, npmDistTag);
+    await this.publishAndDeprecatePackages(builtPackagesWithInfo, npmDistTag);
+  }
+  /**
+   * Asserts that the current HEAD commit SHA matches the expected SHA passed in options.
+   * @throws {Error} If the HEAD SHA does not match the expected SHA.
+   */
+  assertExpectedSha() {
+    const headSha = this.git.run(["rev-parse", "HEAD"]).stdout.trim();
+    if (headSha !== this.options.expectedSha) {
+      throw new Error(`Expected HEAD SHA to be ${this.options.expectedSha}, but got ${headSha}.`);
+    }
+  }
+  /**
+   * Resolves the SHA of the commit immediately prior to the release staging changes.
+   *
+   * Analyzes the parents of the current HEAD commit. If it is a merge commit (typically the
+   * merged staging PR), it identifies the parent of the staging commit. Otherwise, it defaults
+   * to the single parent of HEAD.
+   *
+   * @returns The SHA of the pre-staging commit.
+   * @throws {Error} If HEAD has no parents, or if the parent structure is unexpected.
+   */
+  getBeforeStagingSha() {
+    const parentsOutput = this.git.run(["show", "--format=%P", "-s", "HEAD"]).stdout.trim();
+    const parents = parentsOutput ? parentsOutput.split(" ") : [];
+    if (parents.length >= 2) {
+      const stagingCommitSha = parents[1];
+      const stagingCommitParentsOutput = this.git.run(["show", "--format=%P", "-s", stagingCommitSha]).stdout.trim();
+      const stagingCommitParents = stagingCommitParentsOutput ? stagingCommitParentsOutput.split(" ") : [];
+      if (stagingCommitParents.length === 0) {
+        throw new Error(`Could not find parent for staging commit ${stagingCommitSha}`);
+      }
+      return stagingCommitParents[0];
+    } else if (parents.length === 1) {
+      return parents[0];
+    } else {
+      throw new Error("HEAD commit has no parents.");
+    }
+  }
+  /**
+   * Resolves the previous version Git tag to compare against for generating release notes.
+   *
+   * If the release is a transition from a pre-release (e.g. RC) to a stable version, it searches
+   * the repository tags for the highest stable version that is less than the new version.
+   * Otherwise, it defaults to the version tag associated with the pre-staging commit.
+   *
+   * @param newSemver The version currently being published.
+   * @param versionAtBeforeStagingSemver The version at the pre-staging commit.
+   * @returns The git tag name of the previous version (e.g. 'v1.2.3').
+   * @throws {Error} If a previous stable version tag cannot be resolved when transitioning to stable.
+   */
+  getPreviousVersionTag(newSemver, versionAtBeforeStagingSemver) {
+    if (newSemver.prerelease.length === 0 && versionAtBeforeStagingSemver.prerelease.length > 0) {
+      this.git.run(["fetch", "--tags", this.git.getRepoGitUrl()]);
+      const tagsOutput = this.git.run(["tag", "-l", "v*"]).stdout.trim();
+      const tags = tagsOutput ? tagsOutput.split("\n").map((t) => t.trim()) : [];
+      let highestStableVersion = null;
+      for (const tag of tags) {
+        const versionStr = tag.startsWith("v") ? tag.slice(1) : tag;
+        const parsed = import_semver6.default.parse(versionStr);
+        if (parsed && parsed.prerelease.length === 0) {
+          if (import_semver6.default.lt(parsed, newSemver)) {
+            if (highestStableVersion === null || import_semver6.default.gt(parsed, highestStableVersion)) {
+              highestStableVersion = parsed;
+            }
+          }
+        }
+      }
+      if (highestStableVersion === null) {
+        throw new Error(`Could not find a previous stable version tag matching v* less than ${newSemver.format()}`);
+      }
+      return `v${highestStableVersion.format()}`;
+    }
+    return `v${versionAtBeforeStagingSemver.format()}`;
+  }
+  /**
+   * Creates the GitHub Release and Git tags for the version being published.
+   *
+   * Creates the global version tag (`vX.Y.Z`), the GitHub Release entry containing the
+   * release notes, and individual monorepo package tags (`@angular/core@X.Y.Z`) if configured.
+   * These operations are idempotent and will gracefully log warnings if a tag or release
+   * already exists.
+   *
+   * @param newVersion The version string to release.
+   * @param newSemver The parsed SemVer representation of the version.
+   * @param releaseNotes The generated release notes for this version range.
+   * @param npmDistTag The determined NPM distribution tag (used to flag latest releases on GitHub).
+   */
+  async createGithubReleaseAndTags(newVersion, newSemver, releaseNotes, npmDistTag) {
+    const globalTagName = `v${newVersion}`;
+    if (this.options.dryRun) {
+      Log.info(`[Dry-Run] Would tag global tag: ${globalTagName}`);
+    } else {
+      try {
+        await this.git.github.git.createRef({
+          ...this.git.remoteParams,
+          ref: `refs/tags/${globalTagName}`,
+          sha: this.options.expectedSha
+        });
+        Log.info(green(`  \u2713   Tagged ${globalTagName} release upstream.`));
+      } catch (e) {
+        if (isGithubApiError(e) && e.status === 422) {
+          Log.warn(`Warning: Tag ${globalTagName} already exists, skipping tag creation.`);
+        } else {
+          throw e;
+        }
+      }
+    }
+    let releaseBody = await releaseNotes.getGithubReleaseEntry();
+    if (releaseBody.length > githubReleaseBodyLimit) {
+      const baseUrl2 = getFileContentsUrl(this.git, globalTagName, workspaceRelativeChangelogPath);
+      const urlFragment = await releaseNotes.getUrlFragmentForRelease();
+      const releaseNotesUrl = `${baseUrl2}#${urlFragment}`;
+      releaseBody = `Release notes are too large to be captured here. [View all changes here](${releaseNotesUrl}).`;
+    }
+    if (this.options.dryRun) {
+      Log.info(`[Dry-Run] Would create GitHub Release for tag: ${globalTagName}`);
+    } else {
+      try {
+        await this.git.github.repos.createRelease({
+          ...this.git.remoteParams,
+          name: globalTagName,
+          tag_name: globalTagName,
+          prerelease: newSemver.prerelease.length > 0,
+          make_latest: npmDistTag === "latest" ? "true" : "false",
+          body: releaseBody
+        });
+        Log.info(green(`  \u2713   Created ${globalTagName} release in Github.`));
+      } catch (e) {
+        if (isGithubApiError(e) && e.status === 422) {
+          Log.warn(`Warning: GitHub release for ${globalTagName} already exists, skipping release creation.`);
+        } else {
+          throw e;
+        }
+      }
+    }
+    if (this.config.release.npmPackages.length > 1) {
+      for (const npmPkg of this.config.release.npmPackages) {
+        const monorepoTagName = `${npmPkg.name}@${newVersion}`;
+        if (this.options.dryRun) {
+          Log.info(`[Dry-Run] Would tag monorepo package: ${monorepoTagName}`);
+        } else {
+          try {
+            await this.git.github.git.createRef({
+              ...this.git.remoteParams,
+              ref: `refs/tags/${monorepoTagName}`,
+              sha: this.options.expectedSha
+            });
+            Log.info(green(`  \u2713   Tagged monorepo package release: ${monorepoTagName}`));
+          } catch (e) {
+            if (isGithubApiError(e) && e.status === 422) {
+              Log.warn(`Warning: Tag ${monorepoTagName} already exists, skipping tag creation.`);
+            } else {
+              throw e;
+            }
+          }
+        }
+      }
+    }
+  }
+  /**
+   * Publishes the pre-built packages to the NPM registry via Wombat Dressing Room.
+   *
+   * Temporarily configures the local `.npmrc` file to point to the Wombat registry and include
+   * the authenticated `WOMBOT_TOKEN`. After publishing all resolved packages, the original
+   * `.npmrc` is restored (or deleted if it did not exist before).
+   *
+   * @param builtPackages List of built packages to be published.
+   * @param npmDistTag The NPM distribution tag (e.g. 'latest', 'next') to publish under.
+   */
+  async publishAndDeprecatePackages(builtPackages, npmDistTag) {
+    if (this.options.dryRun) {
+      for (const pkg of builtPackages) {
+        Log.info(`[Dry-Run] Would publish package: ${pkg.name} to Wombat`);
+        if (pkg.deprecated) {
+          Log.info(`[Dry-Run] Would deprecate package: ${pkg.name}@${pkg.deprecated.version}`);
+        }
+      }
+    } else {
+      const tempDir = mkdtempSync2(join6(tmpdir(), "angular-publish-ci-"));
+      const tempNpmrcPath = join6(tempDir, ".npmrc");
+      const originalUserconfig = process.env["NPM_CONFIG_USERCONFIG"];
+      try {
+        const wombatNpmrcContent = [
+          `registry=https://wombat-dressing-room.appspot.com/`,
+          `//wombat-dressing-room.appspot.com/:_authToken=\${WOMBOT_TOKEN}`
+        ].join("\n") + "\n";
+        writeFileSync3(tempNpmrcPath, wombatNpmrcContent);
+        Log.info(green(`  \u2713   Created temporary .npmrc for Wombat registry.`));
+        process.env["NPM_CONFIG_USERCONFIG"] = tempNpmrcPath;
+        for (const pkg of builtPackages) {
+          Log.info(`Publishing "${pkg.name}"...`);
+          await NpmCommand.publish(pkg.outputPath, npmDistTag, void 0);
+          Log.info(green(`  \u2713   Successfully published "${pkg.name}".`));
+        }
+        for (const pkg of builtPackages) {
+          if (!pkg.deprecated) {
+            continue;
+          }
+          Log.info(`Deprecating "${pkg.name}"...`);
+          const { version, message } = pkg.deprecated;
+          await NpmCommand.deprecate(pkg.name, version, message, void 0);
+          Log.info(green(`  \u2713   Successfully deprecated "${pkg.name}@${version}".`));
+        }
+      } finally {
+        try {
+          rmSync2(tempDir, { recursive: true, force: true });
+        } catch (e) {
+          Log.warn(`Warning: Failed to clean up temporary directory ${tempDir}: ${e}`);
+        } finally {
+          if (originalUserconfig !== void 0) {
+            process.env["NPM_CONFIG_USERCONFIG"] = originalUserconfig;
+          } else {
+            delete process.env["NPM_CONFIG_USERCONFIG"];
+          }
+        }
+      }
+    }
+  }
+};
+function readPackageJsonAtRef(git, ref) {
+  const content = git.run(["show", `${ref}:package.json`]).stdout.trim();
+  return JSON.parse(content);
+}
+function findBuiltPackages(dir) {
+  if (!existsSync3(dir)) {
+    throw new Error(`The built packages directory does not exist: ${dir}`);
+  }
+  const packages = [];
+  const walk = (currentDir) => {
+    let entries;
+    try {
+      entries = readdirSync3(currentDir, { withFileTypes: true });
+    } catch (e) {
+      return;
+    }
+    const hasPackageJson = entries.some((e) => e.isFile() && e.name === "package.json");
+    if (hasPackageJson) {
+      try {
+        const pkgJson = JSON.parse(readFileSync7(join6(currentDir, "package.json"), "utf8"));
+        if (pkgJson.name) {
+          if (!pkgJson.private) {
+            packages.push({
+              name: pkgJson.name,
+              outputPath: currentDir
+            });
+          }
+          return;
+        }
+      } catch (e) {
+      }
+    }
+    for (const entry of entries) {
+      if (entry.isDirectory()) {
+        walk(join6(currentDir, entry.name));
+      }
+    }
+  };
+  walk(dir);
+  return packages;
+}
+async function determineNpmDistTag(newSemver, config, git) {
+  const { active: activeLts, inactive: inactiveLts } = await fetchLongTermSupportBranchesFromNpm(config);
+  const ltsBranch = [...activeLts, ...inactiveLts].find((b) => b.version.major === newSemver.major);
+  if (ltsBranch) {
+    return ltsBranch.npmDistTag;
+  }
+  const repo = {
+    owner: git.remoteConfig.owner,
+    name: git.remoteConfig.name,
+    api: git.github,
+    nextBranchName: git.mainBranchName
+  };
+  const activeTrains = await ActiveReleaseTrains.fetch(repo);
+  if (newSemver.prerelease.length > 0) {
+    if (activeTrains.exceptionalMinor !== null && newSemver.major === activeTrains.exceptionalMinor.version.major && newSemver.minor === activeTrains.exceptionalMinor.version.minor) {
+      return "do-not-use-exceptional-minor";
+    }
+    return "next";
+  }
+  if (newSemver.major > activeTrains.latest.version.major) {
+    return "next";
+  }
+  return "latest";
+}
+
+// github-actions/release/publish/lib/main.ts
+async function run() {
+  try {
+    const token = await getAuthTokenFor(ANGULAR_ROBOT);
+    setSecret(token);
+    const wombotToken = getInput("wombot-token", { required: true });
+    process.env["WOMBOT_TOKEN"] = wombotToken;
+    info("Configuring AuthenticatedGitClient with generated token...");
+    AuthenticatedGitClient.configure(token, "bot");
+    info("Loading repository configuration...");
+    const config = await getConfig();
+    assertValidReleaseConfig(config);
+    assertValidGithubConfig(config);
+    info("Initializing Git client...");
+    const git = await AuthenticatedGitClient.get();
+    info("Starting PublishCiTool...");
+    const tool = new PublishCiTool(config, git, git.baseDir, {
+      builtPackagesDir: getInput("built-packages-dir", { required: true }),
+      expectedSha: getInput("expected-sha", { required: true }),
+      dryRun: getBooleanInput("dry-run", { required: false })
+    });
+    await tool.run();
+    info("Release Publish CI completed successfully.");
+  } catch (e) {
+    if (e instanceof Error) {
+      setFailed(e.message);
+      if (e.stack) {
+        debug(e.stack);
+      }
+    } else {
+      setFailed(`Unknown error: ${e}`);
+    }
+  }
+}
+await run();
+/**
+ * @license
+ * Copyright Google LLC
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/*! Bundled license information:
+
+undici/lib/web/fetch/body.js:
+  (*! formdata-polyfill. MIT License. Jimmy Wärting  *)
+
+undici/lib/web/websocket/frame.js:
+  (*! ws. MIT License. Einar Otto Stangvik  *)
+
+content-type/dist/index.js:
+  (*!
+   * content-type
+   * Copyright(c) 2015 Douglas Christopher Wilson
+   * MIT Licensed
+   *)
+
+@octokit/request-error/dist-src/index.js:
+  (* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist *)
+
+@octokit/request/dist-bundle/index.js:
+  (* v8 ignore next -- @preserve *)
+  (* v8 ignore else -- @preserve *)
+
+toad-cache/dist/toad-cache.mjs:
+  (**
+   * toad-cache
+   *
+   * @copyright 2026 Igor Savin 
+   * @license MIT
+   * @version 3.7.0
+   *)
+
+yargs-parser/build/lib/string-utils.js:
+  (**
+   * @license
+   * Copyright (c) 2016, Contributors
+   * SPDX-License-Identifier: ISC
+   *)
+
+yargs-parser/build/lib/tokenize-arg-string.js:
+  (**
+   * @license
+   * Copyright (c) 2016, Contributors
+   * SPDX-License-Identifier: ISC
+   *)
+
+yargs-parser/build/lib/yargs-parser-types.js:
+  (**
+   * @license
+   * Copyright (c) 2016, Contributors
+   * SPDX-License-Identifier: ISC
+   *)
+
+yargs-parser/build/lib/yargs-parser.js:
+  (**
+   * @license
+   * Copyright (c) 2016, Contributors
+   * SPDX-License-Identifier: ISC
+   *)
+
+yargs-parser/build/lib/index.js:
+  (**
+   * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js
+   *
+   * @license
+   * Copyright (c) 2016, Contributors
+   * SPDX-License-Identifier: ISC
+   *)
+
+ejs/lib/esm/ejs.js:
+  (**
+   * @file Embedded JavaScript templating engine. {@link http://ejs.co}
+   * @author Matthew Eernisse 
+   * @project EJS
+   * @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}
+   *)
+*/
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdHVubmVsQDAuMC42L25vZGVfbW9kdWxlcy90dW5uZWwvbGliL3R1bm5lbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy90dW5uZWxAMC4wLjYvbm9kZV9tb2R1bGVzL3R1bm5lbC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvc3ltYm9scy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvZXJyb3JzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9jb25zdGFudHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3RyZWUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3V0aWwuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL2RpYWdub3N0aWNzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9yZXF1ZXN0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9kaXNwYXRjaGVyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9kaXNwYXRjaGVyLWJhc2UuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi91dGlsL3RpbWVycy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvY29ubmVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC91dGlscy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC9jb25zdGFudHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwLXdhc20uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwX3NpbWQtd2FzbS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9jb25zdGFudHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZ2xvYmFsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL2RhdGEtdXJsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3dlYmlkbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC91dGlsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3N5bWJvbHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZmlsZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9mb3JtZGF0YS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9mb3JtZGF0YS1wYXJzZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvYm9keS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvY2xpZW50LWgxLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9jbGllbnQtaDIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9oYW5kbGVyL3JlZGlyZWN0LWhhbmRsZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9yZWRpcmVjdC1pbnRlcmNlcHRvci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvY2xpZW50LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9maXhlZC1xdWV1ZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcG9vbC1zdGF0cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcG9vbC1iYXNlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9wb29sLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9iYWxhbmNlZC1wb29sLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9hZ2VudC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcHJveHktYWdlbnQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9kaXNwYXRjaGVyL2Vudi1odHRwLXByb3h5LWFnZW50LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaGFuZGxlci9yZXRyeS1oYW5kbGVyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9yZXRyeS1hZ2VudC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9yZWFkYWJsZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS91dGlsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1yZXF1ZXN0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2Fib3J0LXNpZ25hbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktc3RyZWFtLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1waXBlbGluZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktdXBncmFkZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktY29ubmVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1lcnJvcnMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stc3ltYm9scy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay11dGlscy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1pbnRlcmNlcHRvci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1jbGllbnQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stcG9vbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svcGx1cmFsaXplci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svcGVuZGluZy1pbnRlcmNlcHRvcnMtZm9ybWF0dGVyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9tb2NrLWFnZW50LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZ2xvYmFsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaGFuZGxlci9kZWNvcmF0b3ItaGFuZGxlci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ludGVyY2VwdG9yL3JlZGlyZWN0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaW50ZXJjZXB0b3IvcmV0cnkuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9kdW1wLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaW50ZXJjZXB0b3IvZG5zLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL2hlYWRlcnMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvcmVzcG9uc2UuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZGlzcGF0Y2hlci13ZWFrcmVmLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3JlcXVlc3QuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmlsZWFwaS9zeW1ib2xzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZpbGVhcGkvcHJvZ3Jlc3NldmVudC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9maWxlYXBpL2VuY29kaW5nLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZpbGVhcGkvdXRpbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9maWxlYXBpL2ZpbGVyZWFkZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvY2FjaGUvc3ltYm9scy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jYWNoZS91dGlsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2NhY2hlL2NhY2hlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2NhY2hlL2NhY2hlc3RvcmFnZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL2NvbnN0YW50cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL3V0aWwuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvY29va2llcy9wYXJzZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL3dlYnNvY2tldC9ldmVudHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L2NvbnN0YW50cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvc3ltYm9scy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvdXRpbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvZnJhbWUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L2Nvbm5lY3Rpb24uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L3Blcm1lc3NhZ2UtZGVmbGF0ZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvcmVjZWl2ZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L3NlbmRlci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yNi4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvd2Vic29ja2V0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2V2ZW50c291cmNlL3V0aWwuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjYuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2Utc3RyZWFtLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2V2ZW50c291cmNlL2V2ZW50c291cmNlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjI2LjAvbm9kZV9tb2R1bGVzL3VuZGljaS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jb250ZW50LXR5cGVAMi4wLjAvbm9kZV9tb2R1bGVzL2NvbnRlbnQtdHlwZS9zcmMvaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMraHR0cC1jbGllbnRAMy4wLjIvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2h0dHAtY2xpZW50L3NyYy9wcm94eS50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytodHRwLWNsaWVudEAzLjAuMi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaHR0cC1jbGllbnQvc3JjL2luZGV4LnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3N1cHBvcnRzLWNvbG9yQDEwLjIuMi9ub2RlX21vZHVsZXMvc3VwcG9ydHMtY29sb3IvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ2V0LWNhbGxlci1maWxlQDIuMC41L25vZGVfbW9kdWxlcy9nZXQtY2FsbGVyLWZpbGUvaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvY29uc3RhbnRzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2RlYnVnLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3JlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3BhcnNlLW9wdGlvbnMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvaWRlbnRpZmllcnMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvY2xhc3Nlcy9zZW12ZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3BhcnNlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy92YWxpZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY2xlYW4uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2luYy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvZGlmZi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbWFqb3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL21pbm9yLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wYXRjaC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcHJlcmVsZWFzZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29tcGFyZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcmNvbXBhcmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUtbG9vc2UuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUtYnVpbGQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3NvcnQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3Jzb3J0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbHQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2VxLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9uZXEuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2d0ZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbHRlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbXAuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvZXJjZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvdHJ1bmNhdGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvbHJ1Y2FjaGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvY2xhc3Nlcy9yYW5nZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9jbGFzc2VzL2NvbXBhcmF0b3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3NhdGlzZmllcy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvdG8tY29tcGFyYXRvcnMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL21heC1zYXRpc2Z5aW5nLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9taW4tc2F0aXNmeWluZy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvbWluLXZlcnNpb24uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3ZhbGlkLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9vdXRzaWRlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3NlbXZlckA3LjguMS9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9ndHIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL2x0ci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvaW50ZXJzZWN0cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvc2ltcGxpZnkuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2VtdmVyQDcuOC4xL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3N1YnNldC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zZW12ZXJANy44LjEvbm9kZV9tb2R1bGVzL3NlbXZlci9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9tc0AyLjEuMy9ub2RlX21vZHVsZXMvbXMvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZGVidWdANC40LjBfc3VwcG9ydHMtY29sb3JAMTAuMi4yL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvY29tbW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2RlYnVnQDQuNC4wX3N1cHBvcnRzLWNvbG9yQDEwLjIuMi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZGVidWdANC40LjBfc3VwcG9ydHMtY29sb3JAMTAuMi4yL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvbm9kZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9kZWJ1Z0A0LjQuMF9zdXBwb3J0cy1jb2xvckAxMC4yLjIvbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9iYWxhbmNlZC1tYXRjaEAxLjAuMi9ub2RlX21vZHVsZXMvYmFsYW5jZWQtbWF0Y2gvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYnJhY2UtZXhwYW5zaW9uQDIuMS4xL25vZGVfbW9kdWxlcy9icmFjZS1leHBhbnNpb24vaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbWluaW1hdGNoQDcuNC45L25vZGVfbW9kdWxlcy9taW5pbWF0Y2gvc3JjL2JyYWNlLWV4cHJlc3Npb25zLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL21pbmltYXRjaEA3LjQuOS9ub2RlX21vZHVsZXMvbWluaW1hdGNoL3NyYy9lc2NhcGUudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbWluaW1hdGNoQDcuNC45L25vZGVfbW9kdWxlcy9taW5pbWF0Y2gvc3JjL3VuZXNjYXBlLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL21pbmltYXRjaEA3LjQuOS9ub2RlX21vZHVsZXMvbWluaW1hdGNoL3NyYy9pbmRleC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9taW5pbWF0Y2hANy40Ljkvbm9kZV9tb2R1bGVzL21pbmltYXRjaC9zcmMvaW5kZXgtY2pzLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ZvbGRlci1oYXNoQDQuMS4zX3N1cHBvcnRzLWNvbG9yQDEwLjIuMi9ub2RlX21vZHVsZXMvZm9sZGVyLWhhc2gvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2xpLXdpZHRoQDQuMS4wL25vZGVfbW9kdWxlcy9jbGktd2lkdGgvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbXV0ZS1zdHJlYW1AMy4wLjAvbm9kZV9tb2R1bGVzL211dGUtc3RyZWFtL2xpYi9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jaGFyZGV0QDIuMS4xL25vZGVfbW9kdWxlcy9jaGFyZGV0L3NyYy9mcy9ub2RlLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NoYXJkZXRAMi4xLjEvbm9kZV9tb2R1bGVzL2NoYXJkZXQvc3JjL21hdGNoLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NoYXJkZXRAMi4xLjEvbm9kZV9tb2R1bGVzL2NoYXJkZXQvc3JjL2VuY29kaW5nL2FzY2lpLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NoYXJkZXRAMi4xLjEvbm9kZV9tb2R1bGVzL2NoYXJkZXQvc3JjL2VuY29kaW5nL3V0ZjgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2hhcmRldEAyLjEuMS9ub2RlX21vZHVsZXMvY2hhcmRldC9zcmMvZW5jb2RpbmcvdW5pY29kZS50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jaGFyZGV0QDIuMS4xL25vZGVfbW9kdWxlcy9jaGFyZGV0L3NyYy9lbmNvZGluZy9tYmNzLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NoYXJkZXRAMi4xLjEvbm9kZV9tb2R1bGVzL2NoYXJkZXQvc3JjL2VuY29kaW5nL3NiY3MudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2hhcmRldEAyLjEuMS9ub2RlX21vZHVsZXMvY2hhcmRldC9zcmMvZW5jb2RpbmcvaXNvMjAyMi50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jaGFyZGV0QDIuMS4xL25vZGVfbW9kdWxlcy9jaGFyZGV0L3NyYy91dGlscy50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jaGFyZGV0QDIuMS4xL25vZGVfbW9kdWxlcy9jaGFyZGV0L3NyYy9pbmRleC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zYWZlci1idWZmZXJAMi4xLjIvbm9kZV9tb2R1bGVzL3NhZmVyLWJ1ZmZlci9zYWZlci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9ib20taGFuZGxpbmcuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvaWNvbnYtbGl0ZUAwLjcuMi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9saWIvaGVscGVycy9tZXJnZS1leHBvcnRzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2ludGVybmFsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3V0ZjMyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3V0ZjE2LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3V0ZjcuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvaWNvbnYtbGl0ZUAwLjcuMi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1jb2RlYy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9zYmNzLWRhdGEuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvaWNvbnYtbGl0ZUAwLjcuMi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1kYXRhLWdlbmVyYXRlZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9kYmNzLWNvZGVjLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9zaGlmdGppcy5qc29uIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9ldWNqcC5qc29uIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9jcDkzNi5qc29uIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9nYmstYWRkZWQuanNvbiIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvZ2IxODAzMC1yYW5nZXMuanNvbiIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5NDkuanNvbiIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5NTAuanNvbiIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvYmlnNS1hZGRlZC5qc29uIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2RiY3MtZGF0YS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9pY29udi1saXRlQDAuNy4yL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9zdHJlYW1zLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ljb252LWxpdGVAMC43LjIvbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvbGliL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9saWIvZXRhLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9saWIvdGVybWluYWwuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYW5zaS1yZWdleEA1LjAuMS9ub2RlX21vZHVsZXMvYW5zaS1yZWdleC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zdHJpcC1hbnNpQDYuMC4xL25vZGVfbW9kdWxlcy9zdHJpcC1hbnNpL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2lzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QDMuMC4wL25vZGVfbW9kdWxlcy9pcy1mdWxsd2lkdGgtY29kZS1wb2ludC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9lbW9qaS1yZWdleEA4LjAuMC9ub2RlX21vZHVsZXMvZW1vamktcmVnZXgvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc3RyaW5nLXdpZHRoQDQuMi4zL25vZGVfbW9kdWxlcy9zdHJpbmctd2lkdGgvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2xpLXByb2dyZXNzQDMuMTIuMC9ub2RlX21vZHVsZXMvY2xpLXByb2dyZXNzL2xpYi9mb3JtYXQtdmFsdWUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2xpLXByb2dyZXNzQDMuMTIuMC9ub2RlX21vZHVsZXMvY2xpLXByb2dyZXNzL2xpYi9mb3JtYXQtYmFyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9saWIvZm9ybWF0LXRpbWUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2xpLXByb2dyZXNzQDMuMTIuMC9ub2RlX21vZHVsZXMvY2xpLXByb2dyZXNzL2xpYi9mb3JtYXR0ZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2xpLXByb2dyZXNzQDMuMTIuMC9ub2RlX21vZHVsZXMvY2xpLXByb2dyZXNzL2xpYi9vcHRpb25zLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9saWIvZ2VuZXJpYy1iYXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2xpLXByb2dyZXNzQDMuMTIuMC9ub2RlX21vZHVsZXMvY2xpLXByb2dyZXNzL2xpYi9zaW5nbGUtYmFyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9saWIvbXVsdGktYmFyLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9wcmVzZXRzL2xlZ2FjeS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jbGktcHJvZ3Jlc3NAMy4xMi4wL25vZGVfbW9kdWxlcy9jbGktcHJvZ3Jlc3MvcHJlc2V0cy9zaGFkZXMtY2xhc3NpYy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jbGktcHJvZ3Jlc3NAMy4xMi4wL25vZGVfbW9kdWxlcy9jbGktcHJvZ3Jlc3MvcHJlc2V0cy9zaGFkZXMtZ3JleS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jbGktcHJvZ3Jlc3NAMy4xMi4wL25vZGVfbW9kdWxlcy9jbGktcHJvZ3Jlc3MvcHJlc2V0cy9yZWN0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9wcmVzZXRzL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NsaS1wcm9ncmVzc0AzLjEyLjAvbm9kZV9tb2R1bGVzL2NsaS1wcm9ncmVzcy9jbGktcHJvZ3Jlc3MuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMS9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvY29tbWFuZC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytjb3JlQDMuMC4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytjb3JlQDMuMC4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9jb3JlLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2h0dHAtY2xpZW50QDQuMC4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMS9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvc3VtbWFyeS50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytjb3JlQDMuMC4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9wbGF0Zm9ybS50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytpb0AzLjAuMi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaW8vc3JjL2lvLXV0aWwudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZXhlY0AzLjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvZXhlYy9zcmMvdG9vbHJ1bm5lci50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bml2ZXJzYWwtdXNlci1hZ2VudEA3LjAuMy9ub2RlX21vZHVsZXMvdW5pdmVyc2FsLXVzZXItYWdlbnQvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYmVmb3JlLWFmdGVyLWhvb2tANC4wLjAvbm9kZV9tb2R1bGVzL2JlZm9yZS1hZnRlci1ob29rL2xpYi9yZWdpc3Rlci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9iZWZvcmUtYWZ0ZXItaG9va0A0LjAuMC9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL2FkZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9iZWZvcmUtYWZ0ZXItaG9va0A0LjAuMC9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL3JlbW92ZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9iZWZvcmUtYWZ0ZXItaG9va0A0LjAuMC9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrZW5kcG9pbnRAMTEuMC4zL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9lbmRwb2ludC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtyZXF1ZXN0QDEwLjAuMTAvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3JlcXVlc3QvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvanNvbi13aXRoLWJpZ2ludEAzLjUuOC9ub2RlX21vZHVsZXMvanNvbi13aXRoLWJpZ2ludC9qc29uLXdpdGgtYmlnaW50LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3JlcXVlc3QtZXJyb3JANy4xLjAvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3JlcXVlc3QtZXJyb3IvZGlzdC1zcmMvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrZ3JhcGhxbEA5LjAuMy9ub2RlX21vZHVsZXMvQG9jdG9raXQvZ3JhcGhxbC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCthdXRoLXRva2VuQDYuMC4wL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9hdXRoLXRva2VuL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K2NvcmVANy4wLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2NvcmUvZGlzdC1zcmMvdmVyc2lvbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9jb3JlL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3BsdWdpbi1yZXF1ZXN0LWxvZ0A2LjAuMF9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcmVxdWVzdC1sb2cvZGlzdC1zcmMvdmVyc2lvbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVxdWVzdC1sb2dANi4wLjBfQG9jdG9raXQrY29yZUA3LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvcGx1Z2luLXJlcXVlc3QtbG9nL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3BsdWdpbi1wYWdpbmF0ZS1yZXN0QDE0LjAuMF9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcGFnaW5hdGUtcmVzdC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzQDE3LjAuMF9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvdmVyc2lvbi50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzQDE3LjAuMF9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvZ2VuZXJhdGVkL2VuZHBvaW50cy50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzQDE3LjAuMF9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvZW5kcG9pbnRzLXRvLW1ldGhvZHMudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc0AxNy4wLjBfQG9jdG9raXQrY29yZUA3LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvc3JjL2luZGV4LnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3Jlc3RAMjIuMC4xL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXN0L2Rpc3Qtc3JjL3ZlcnNpb24uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcmVzdEAyMi4wLjEvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3Jlc3QvZGlzdC1zcmMvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrb2F1dGgtbWV0aG9kc0A2LjAuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvb2F1dGgtbWV0aG9kcy9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCthdXRoLW9hdXRoLWRldmljZUA4LjAuMy9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC1kZXZpY2UvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrYXV0aC1vYXV0aC11c2VyQDYuMC4yL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9hdXRoLW9hdXRoLXVzZXIvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrYXV0aC1vYXV0aC1hcHBAOS4wLjMvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2F1dGgtb2F1dGgtYXBwL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dEAyLjIuMi9ub2RlX21vZHVsZXMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0L2xpYi91dGlscy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9saWIvY3J5cHRvLW5vZGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0QDIuMi4yL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3QvbGliL2dldC10b2tlbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy90b2FkLWNhY2hlQDMuNy4xL25vZGVfbW9kdWxlcy90b2FkLWNhY2hlL2Rpc3QvdG9hZC1jYWNoZS5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrYXV0aC1hcHBAOC4yLjAvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2F1dGgtYXBwL2Rpc3Qtbm9kZS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytnaXRodWJAOS4xLjEvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2dpdGh1Yi9zcmMvY29udGV4dC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytnaXRodWJAOS4xLjEvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2dpdGh1Yi9zcmMvaW50ZXJuYWwvdXRpbHMudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZ2l0aHViQDkuMS4xL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9naXRodWIvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2dpdGh1YkA5LjEuMS9ub2RlX21vZHVsZXMvQGFjdGlvbnMvZ2l0aHViL3NyYy9naXRodWIudHMiLCAiLi4vLi4vdXRpbHMudHMiLCAiLi4vLi4vLi4vbmctZGV2L3V0aWxzL2NvbmZpZy50cyIsICIuLi8uLi8uLi9uZy1kZXYvdXRpbHMvbG9nZ2luZy50cyIsICIuLi8uLi8uLi9uZy1kZXYvdXRpbHMvY2hpbGQtcHJvY2Vzcy50cyIsICIuLi8uLi8uLi9uZy1kZXYvdXRpbHMvcmVwby1kaXJlY3RvcnkudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9saWIvcGxhdGZvcm0tc2hpbXMvZXNtLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jbGl1aUA5LjAuMS9ub2RlX21vZHVsZXMvY2xpdWkvYnVpbGQvbGliL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2Fuc2ktcmVnZXhANi4yLjIvbm9kZV9tb2R1bGVzL2Fuc2ktcmVnZXgvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc3RyaXAtYW5zaUA3LjIuMC9ub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nZXQtZWFzdC1hc2lhbi13aWR0aEAxLjYuMC9ub2RlX21vZHVsZXMvZ2V0LWVhc3QtYXNpYW4td2lkdGgvbG9va3VwLWRhdGEuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ2V0LWVhc3QtYXNpYW4td2lkdGhAMS42LjAvbm9kZV9tb2R1bGVzL2dldC1lYXN0LWFzaWFuLXdpZHRoL3V0aWxpdGllcy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nZXQtZWFzdC1hc2lhbi13aWR0aEAxLjYuMC9ub2RlX21vZHVsZXMvZ2V0LWVhc3QtYXNpYW4td2lkdGgvbG9va3VwLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dldC1lYXN0LWFzaWFuLXdpZHRoQDEuNi4wL25vZGVfbW9kdWxlcy9nZXQtZWFzdC1hc2lhbi13aWR0aC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9lbW9qaS1yZWdleEAxMC42LjAvbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4Lm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zdHJpbmctd2lkdGhANy4yLjAvbm9kZV9tb2R1bGVzL3N0cmluZy13aWR0aC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9hbnNpLXN0eWxlc0A2LjIuMy9ub2RlX21vZHVsZXMvYW5zaS1zdHlsZXMvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd3JhcC1hbnNpQDkuMC4yL25vZGVfbW9kdWxlcy93cmFwLWFuc2kvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY2xpdWlAOS4wLjEvbm9kZV9tb2R1bGVzL2NsaXVpL2luZGV4Lm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9lc2NhbGFkZUAzLjIuMC9ub2RlX21vZHVsZXMvZXNjYWxhZGUvc3luYy9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3MtcGFyc2VyQDIyLjAuMC9ub2RlX21vZHVsZXMveWFyZ3MtcGFyc2VyL2J1aWxkL2xpYi9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJncy1wYXJzZXJAMjIuMC4wL25vZGVfbW9kdWxlcy95YXJncy1wYXJzZXIvYnVpbGQvbGliL3N0cmluZy11dGlscy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJncy1wYXJzZXJAMjIuMC4wL25vZGVfbW9kdWxlcy95YXJncy1wYXJzZXIvYnVpbGQvbGliL3Rva2VuaXplLWFyZy1zdHJpbmcuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3MtcGFyc2VyQDIyLjAuMC9ub2RlX21vZHVsZXMveWFyZ3MtcGFyc2VyL2J1aWxkL2xpYi95YXJncy1wYXJzZXItdHlwZXMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3MtcGFyc2VyQDIyLjAuMC9ub2RlX21vZHVsZXMveWFyZ3MtcGFyc2VyL2J1aWxkL2xpYi95YXJncy1wYXJzZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvdXRpbHMvcHJvY2Vzcy1hcmd2LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3kxOG5ANS4wLjgvbm9kZV9tb2R1bGVzL3kxOG4vYnVpbGQvbGliL3BsYXRmb3JtLXNoaW1zL25vZGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveTE4bkA1LjAuOC9ub2RlX21vZHVsZXMveTE4bi9idWlsZC9saWIvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveTE4bkA1LjAuOC9ub2RlX21vZHVsZXMveTE4bi9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvdHlwaW5ncy9jb21tb24tdHlwZXMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvdXRpbHMvaXMtcHJvbWlzZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJnc0AxOC4wLjAvbm9kZV9tb2R1bGVzL3lhcmdzL2J1aWxkL2xpYi95ZXJyb3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvcGFyc2UtY29tbWFuZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJnc0AxOC4wLjAvbm9kZV9tb2R1bGVzL3lhcmdzL2J1aWxkL2xpYi9hcmdzZXJ0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3lhcmdzQDE4LjAuMC9ub2RlX21vZHVsZXMveWFyZ3MvYnVpbGQvbGliL21pZGRsZXdhcmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvdXRpbHMvbWF5YmUtYXN5bmMtcmVzdWx0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3lhcmdzQDE4LjAuMC9ub2RlX21vZHVsZXMveWFyZ3MvYnVpbGQvbGliL2NvbW1hbmQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvdXRpbHMvb2JqLWZpbHRlci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJnc0AxOC4wLjAvbm9kZV9tb2R1bGVzL3lhcmdzL2J1aWxkL2xpYi91dGlscy9zZXQtYmxvY2tpbmcuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvdXNhZ2UuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvY29tcGxldGlvbi10ZW1wbGF0ZXMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIvY29tcGxldGlvbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJnc0AxOC4wLjAvbm9kZV9tb2R1bGVzL3lhcmdzL2J1aWxkL2xpYi91dGlscy9sZXZlbnNodGVpbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJnc0AxOC4wLjAvbm9kZV9tb2R1bGVzL3lhcmdzL2J1aWxkL2xpYi92YWxpZGF0aW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3lhcmdzQDE4LjAuMC9ub2RlX21vZHVsZXMveWFyZ3MvYnVpbGQvbGliL3V0aWxzL2FwcGx5LWV4dGVuZHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMveWFyZ3NAMTguMC4wL25vZGVfbW9kdWxlcy95YXJncy9idWlsZC9saWIveWFyZ3MtZmFjdG9yeS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy95YXJnc0AxOC4wLjAvbm9kZV9tb2R1bGVzL3lhcmdzL2luZGV4Lm1qcyIsICIuLi8uLi8uLi9uZy1kZXYvdXRpbHMvY29uZmlnLWNhY2hlLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3R5cGVkLWdyYXBocWxpZnlAMy4xLjYvbm9kZV9tb2R1bGVzL3R5cGVkLWdyYXBocWxpZnkvc3JjL3JlbmRlci50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy90eXBlZC1ncmFwaHFsaWZ5QDMuMS42L25vZGVfbW9kdWxlcy90eXBlZC1ncmFwaHFsaWZ5L3NyYy9ncmFwaHFsaWZ5LnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3R5cGVkLWdyYXBocWxpZnlAMy4xLjYvbm9kZV9tb2R1bGVzL3R5cGVkLWdyYXBocWxpZnkvc3JjL3R5cGVzLnRzIiwgIi4uLy4uLy4uL25nLWRldi91dGlscy9naXQvZ3JhcGhxbC1xdWVyaWVzLnRzIiwgIi4uLy4uLy4uL25nLWRldi91dGlscy9kcnktcnVuLnRzIiwgIi4uLy4uLy4uL25nLWRldi91dGlscy9naXQvZ2l0LWNsaWVudC50cyIsICIuLi8uLi8uLi9uZy1kZXYvdXRpbHMvZ2l0L2dpdGh1Yi50cyIsICIuLi8uLi8uLi9uZy1kZXYvdXRpbHMvZ2l0L2dpdGh1Yi11cmxzLnRzIiwgIi4uLy4uLy4uL25nLWRldi91dGlscy9naXQvYXV0aGVudGljYXRlZC1naXQtY2xpZW50LnRzIiwgIi4uLy4uLy4uL25nLWRldi9yZWxlYXNlL2NvbmZpZy9pbmRleC50cyIsICJsaWIvcHVibGlzaC1jaS50cyIsICIuLi8uLi8uLi9uZy1kZXYvcmVsZWFzZS9wdWJsaXNoL2FjdGlvbnMtZXJyb3IudHMiLCAiLi4vLi4vLi4vbmctZGV2L3JlbGVhc2UvcHVibGlzaC9kaXJlY3RvcnktaGFzaC50cyIsICIuLi8uLi8uLi9uZy1kZXYvcmVsZWFzZS9wdWJsaXNoL2J1aWx0LXBhY2thZ2UtaW5mby50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9lanNANi4wLjEvbm9kZV9tb2R1bGVzL2Vqcy9saWIvZXNtL2Vqcy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9lanNANi4wLjEvbm9kZV9tb2R1bGVzL2Vqcy9saWIvZXNtL3V0aWxzLmpzIiwgIi4uLy4uLy4uL25nLWRldi9yZWxlYXNlL25vdGVzL3JlbGVhc2Utbm90ZXMudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2NvcmVAMTEuMi4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9jb3JlL2Rpc3QvbGliL2tleS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvZXJyb3JzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitjb3JlQDExLjIuMV9AdHlwZXMrbm9kZUAyNC4xMi40L25vZGVfbW9kdWxlcy9AaW5xdWlyZXIvY29yZS9kaXN0L2xpYi91c2Utc3RhdGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2NvcmVAMTEuMi4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9jb3JlL2Rpc3QvbGliL2hvb2stZW5naW5lLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitjb3JlQDExLjIuMV9AdHlwZXMrbm9kZUAyNC4xMi40L25vZGVfbW9kdWxlcy9AaW5xdWlyZXIvY29yZS9kaXN0L2xpYi91c2UtZWZmZWN0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitjb3JlQDExLjIuMV9AdHlwZXMrbm9kZUAyNC4xMi40L25vZGVfbW9kdWxlcy9AaW5xdWlyZXIvY29yZS9kaXN0L2xpYi90aGVtZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrZmlndXJlc0AyLjAuNy9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2ZpZ3VyZXMvZGlzdC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvbWFrZS10aGVtZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvdXNlLXByZWZpeC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvdXNlLW1lbW8uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2NvcmVAMTEuMi4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9jb3JlL2Rpc3QvbGliL3VzZS1yZWYuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2NvcmVAMTEuMi4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9jb3JlL2Rpc3QvbGliL3VzZS1rZXlwcmVzcy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvdXRpbHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZmFzdC1zdHJpbmctdHJ1bmNhdGVkLXdpZHRoQDMuMC4zL25vZGVfbW9kdWxlcy9mYXN0LXN0cmluZy10cnVuY2F0ZWQtd2lkdGgvZGlzdC91dGlscy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9mYXN0LXN0cmluZy10cnVuY2F0ZWQtd2lkdGhAMy4wLjMvbm9kZV9tb2R1bGVzL2Zhc3Qtc3RyaW5nLXRydW5jYXRlZC13aWR0aC9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2Zhc3Qtc3RyaW5nLXdpZHRoQDMuMC4yL25vZGVfbW9kdWxlcy9mYXN0LXN0cmluZy13aWR0aC9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2Zhc3Qtd3JhcC1hbnNpQDAuMi4yL25vZGVfbW9kdWxlcy9mYXN0LXdyYXAtYW5zaS9saWIvbWFpbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvcGFnaW5hdGlvbi91c2UtcGFnaW5hdGlvbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvY3JlYXRlLXByb21wdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zaWduYWwtZXhpdEA0LjEuMC9ub2RlX21vZHVsZXMvc2lnbmFsLWV4aXQvc3JjL3NpZ25hbHMudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc2lnbmFsLWV4aXRANC4xLjAvbm9kZV9tb2R1bGVzL3NpZ25hbC1leGl0L3NyYy9pbmRleC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY29yZUAxMS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NvcmUvZGlzdC9saWIvc2NyZWVuLW1hbmFnZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2Fuc2lAMi4wLjcvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9hbnNpL2Rpc3QvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2NvcmVAMTEuMi4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9jb3JlL2Rpc3QvbGliL3Byb21pc2UtcG9seWZpbGwuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2NvcmVAMTEuMi4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9jb3JlL2Rpc3QvbGliL1NlcGFyYXRvci5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AaW5xdWlyZXIrY2hlY2tib3hANS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2NoZWNrYm94L2Rpc3QvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2V4dGVybmFsLWVkaXRvckAzLjAuM19AdHlwZXMrbm9kZUAyNC4xMi40L25vZGVfbW9kdWxlcy9AaW5xdWlyZXIvZXh0ZXJuYWwtZWRpdG9yL2Rpc3QvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2V4dGVybmFsLWVkaXRvckAzLjAuM19AdHlwZXMrbm9kZUAyNC4xMi40L25vZGVfbW9kdWxlcy9AaW5xdWlyZXIvZXh0ZXJuYWwtZWRpdG9yL2Rpc3QvZXJyb3JzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitleHRlcm5hbC1lZGl0b3JAMy4wLjNfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2V4dGVybmFsLWVkaXRvci9kaXN0L3BhcnNlLWVkaXRvci1jb21tYW5kLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitlZGl0b3JANS4yLjJfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2VkaXRvci9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitjb25maXJtQDYuMS4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9jb25maXJtL2Rpc3QvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK2lucHV0QDUuMS4yX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9pbnB1dC9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitudW1iZXJANC4xLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL251bWJlci9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitleHBhbmRANS4xLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL2V4cGFuZC9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcityYXdsaXN0QDUuMy4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9yYXdsaXN0L2Rpc3QvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGlucXVpcmVyK3Bhc3N3b3JkQDUuMS4xX0B0eXBlcytub2RlQDI0LjEyLjQvbm9kZV9tb2R1bGVzL0BpbnF1aXJlci9wYXNzd29yZC9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitzZWFyY2hANC4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL3NlYXJjaC9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BpbnF1aXJlcitzZWxlY3RANS4yLjFfQHR5cGVzK25vZGVAMjQuMTIuNC9ub2RlX21vZHVsZXMvQGlucXVpcmVyL3NlbGVjdC9kaXN0L2luZGV4LmpzIiwgIi4uLy4uLy4uL25nLWRldi91dGlscy9wcm9tcHQudHMiLCAiLi4vLi4vLi4vbmctZGV2L2Zvcm1hdC9ydW4tY29tbWFuZHMtcGFyYWxsZWwudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYmFsYW5jZWQtbWF0Y2hANC4wLjQvbm9kZV9tb2R1bGVzL2JhbGFuY2VkLW1hdGNoL3NyYy9pbmRleC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9icmFjZS1leHBhbnNpb25ANS4wLjYvbm9kZV9tb2R1bGVzL2JyYWNlLWV4cGFuc2lvbi9zcmMvaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbWluaW1hdGNoQDEwLjIuNS9ub2RlX21vZHVsZXMvbWluaW1hdGNoL3NyYy9hc3NlcnQtdmFsaWQtcGF0dGVybi50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9taW5pbWF0Y2hAMTAuMi41L25vZGVfbW9kdWxlcy9taW5pbWF0Y2gvc3JjL2JyYWNlLWV4cHJlc3Npb25zLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL21pbmltYXRjaEAxMC4yLjUvbm9kZV9tb2R1bGVzL21pbmltYXRjaC9zcmMvdW5lc2NhcGUudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbWluaW1hdGNoQDEwLjIuNS9ub2RlX21vZHVsZXMvbWluaW1hdGNoL3NyYy9hc3QudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbWluaW1hdGNoQDEwLjIuNS9ub2RlX21vZHVsZXMvbWluaW1hdGNoL3NyYy9lc2NhcGUudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbWluaW1hdGNoQDEwLjIuNS9ub2RlX21vZHVsZXMvbWluaW1hdGNoL3NyYy9pbmRleC50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9hcnJheS11bmlvbkAzLjAuMS9ub2RlX21vZHVsZXMvYXJyYXktdW5pb24vaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYXJyYXktZGlmZmVyQDQuMC4wL25vZGVfbW9kdWxlcy9hcnJheS1kaWZmZXIvaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbXVsdGltYXRjaEA4LjAuMC9ub2RlX21vZHVsZXMvbXVsdGltYXRjaC9pbmRleC5qcyIsICIuLi8uLi8uLi9uZy1kZXYvZm9ybWF0L2NvbmZpZy50cyIsICIuLi8uLi8uLi9uZy1kZXYvZm9ybWF0L2Zvcm1hdHRlcnMvYnVpbGRpZmllci50cyIsICIuLi8uLi8uLi9uZy1kZXYvZm9ybWF0L2Zvcm1hdHRlcnMvYmFzZS1mb3JtYXR0ZXIudHMiLCAiLi4vLi4vLi4vbmctZGV2L2Zvcm1hdC9mb3JtYXR0ZXJzL3ByZXR0aWVyLnRzIiwgIi4uLy4uLy4uL25nLWRldi9mb3JtYXQvZm9ybWF0dGVycy9pbmRleC50cyIsICIuLi8uLi8uLi9uZy1kZXYvZm9ybWF0L2Zvcm1hdC50cyIsICIuLi8uLi8uLi9uZy1kZXYvY29tbWl0LW1lc3NhZ2UvY29uZmlnLnRzIiwgIi4uLy4uLy4uL25nLWRldi91dGlscy9sb2NhbGUudHMiLCAiLi4vLi4vLi4vbmctZGV2L3JlbGVhc2Uvbm90ZXMvY29udGV4dC50cyIsICIuLi8uLi8uLi9uZy1kZXYvcmVsZWFzZS9ub3Rlcy90ZW1wbGF0ZXMvY2hhbmdlbG9nLnRzIiwgIi4uLy4uLy4uL25nLWRldi9yZWxlYXNlL25vdGVzL3RlbXBsYXRlcy9naXRodWItcmVsZWFzZS50cyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9jb252ZW50aW9uYWwtY29tbWl0cy1wYXJzZXJANi40LjAvbm9kZV9tb2R1bGVzL2NvbnZlbnRpb25hbC1jb21taXRzLXBhcnNlci9zcmMvcmVnZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvY29udmVudGlvbmFsLWNvbW1pdHMtcGFyc2VyQDYuNC4wL25vZGVfbW9kdWxlcy9jb252ZW50aW9uYWwtY29tbWl0cy1wYXJzZXIvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NvbnZlbnRpb25hbC1jb21taXRzLXBhcnNlckA2LjQuMC9ub2RlX21vZHVsZXMvY29udmVudGlvbmFsLWNvbW1pdHMtcGFyc2VyL3NyYy9vcHRpb25zLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2NvbnZlbnRpb25hbC1jb21taXRzLXBhcnNlckA2LjQuMC9ub2RlX21vZHVsZXMvY29udmVudGlvbmFsLWNvbW1pdHMtcGFyc2VyL3NyYy9Db21taXRQYXJzZXIudHMiLCAiLi4vLi4vLi4vbmctZGV2L2NvbW1pdC1tZXNzYWdlL3BhcnNlLnRzIiwgIi4uLy4uLy4uL25nLWRldi9yZWxlYXNlL25vdGVzL2NvbW1pdHMvdW5pcXVlLWNvbW1pdC1pZC50cyIsICIuLi8uLi8uLi9uZy1kZXYvcmVsZWFzZS9ub3Rlcy9jb21taXRzL2dldC1jb21taXRzLWluLXJhbmdlLnRzIiwgIi4uLy4uLy4uL25nLWRldi9yZWxlYXNlL25vdGVzL2NoYW5nZWxvZy50cyIsICIuLi8uLi8uLi9uZy1kZXYvcmVsZWFzZS92ZXJzaW9uaW5nL25wbS1jb21tYW5kLnRzIiwgIi4uLy4uLy4uL25nLWRldi9yZWxlYXNlL3B1Ymxpc2gvY29uc3RhbnRzLnRzIiwgIi4uLy4uLy4uL25nLWRldi9yZWxlYXNlL3ZlcnNpb25pbmcvbG9uZy10ZXJtLXN1cHBvcnQudHMiLCAiLi4vLi4vLi4vbmctZGV2L3JlbGVhc2UvdmVyc2lvbmluZy9ucG0tcmVnaXN0cnkudHMiLCAiLi4vLi4vLi4vbmctZGV2L3JlbGVhc2UvdmVyc2lvbmluZy9hY3RpdmUtcmVsZWFzZS10cmFpbnMudHMiLCAiLi4vLi4vLi4vbmctZGV2L3JlbGVhc2UvdmVyc2lvbmluZy9yZWxlYXNlLXRyYWlucy50cyIsICIuLi8uLi8uLi9uZy1kZXYvcmVsZWFzZS92ZXJzaW9uaW5nL3ZlcnNpb24tYnJhbmNoZXMudHMiLCAibGliL21haW4u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QSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUVBLGFBQVMsSUFBSSxHQUFHLElBQUkscUJBQXFCLFFBQVEsRUFBRSxH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O0FBQ0osS0FBQyxTQUFVQyxVQUFTO0FBQ2hCLE1BQUFBLFNBQVFBLFNBQVEsUUFBUSxJQUFJLENBQUMsSUFBSTtBQUNqQyxNQUFBQSxTQUFRQSxTQUFRLEtBQUssSUFBSSxDQUFDLElBQUk7QUFDOUIsTUFBQUEsU0FBUUEsU0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJO0FBQy9CLE1BQUFBLFNBQVFBLFNBQVEsTUFBTSxJQUFJLENBQUMsSUFBSTtBQUMvQixNQUFBQSxTQUFRQSxTQUFRLEtBQUssSUFBSSxDQUFDLElBQUk7QUFFOUIsTUFBQUEsU0FBUUEsU0FBUSxTQUFTLElBQUksQ0FBQyxJQUFJO0FBQ2xDLE1BQUFBLFNBQVFBLFNBQVEsU0FBUyxJQUFJLENBQUMsSUFBSTtBQUNsQyxNQUFBQSxTQUFRQSxTQUFRLE9BQU8sSUFBSSxDQUFDLElBQUk7QUFFaEMsTUFBQUEsU0FBUUEsU0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJO0FBQy9CLE1BQUFBLFNBQVFBLFNBQVEsTUFBTSxJQUFJLENBQUMsSUFBSTtBQUMvQixNQUFBQSxTQUFRQSxTQUFRLE9BQU8sSUFBSSxFQUFFLElBQUk7QUFDakMsTUFBQUEsU0FBUUEsU0FBUSxNQUFNLElBQUksRUFBRSxJQUFJO0FBQ2hDLE1BQUFBLFNBQVFBLFNBQVEsVUFBVSxJQUFJLEVBQUUsSUFBSTtBQUNwQyxNQUFBQSxTQUFRQSxTQUFRLFdBQVcsSUFBSSxFQUFFLElBQUk7QUFDckMsTUFBQUEsU0FBUUEsU0FBUSxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2xDLE1BQUFBLFNBQVFBLFNBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNsQyxNQUFBQSxTQUFRQSxTQUFRLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDaEMsTUFBQUEsU0FBUUEsU0FBUSxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2xDLE1BQUFBLFNBQVFBLFNBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNsQyxNQUFBQSxTQUFRQSxTQUFRLEtBQUssSUFBSSxFQUFFLElBQUk7QUFFL0IsTUFBQUEsU0FBUUEs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QUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1Q7QUFBUyxpQkFBTztBQUFBLE1BQ2xCO0FBQUEsSUFDRjtBQUVBLFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDalNBLElBQUFDLGdCQUFBO0FBQUE7QUFBQTtBQUVBLFFBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsSUFBSTtBQUNKLFFBQU0sRUFBRSxjQUFjLElBQUk7QUFDMUIsUUFBTSxFQUFFLFlBQVksSUFBSTtBQUN4QixRQUFNLEVBQUUsb0JBQW9CLGNBQWMsSUFBSTtBQUM5QyxRQUFNLEVBQUUsT0FBQUMsT0FBTSxJQUFJLFVBQVEsV0FBVztBQUNyQyxRQUFNLEVBQUUsY0FBYyxJQUFJLFVBQVEsZ0JBQWdCO0FBQ2xELFFBQU0sRUFBRSxNQUFBQyxNQUFLLElBQUksVUFBUSxhQUFhO0FBR3RDLFFBQU0sNEJBQTRCO0FBQUEsTUFDaEMsWUFBWTtBQUFBLE1BQ1osVUFBVTtBQUFBLE1BQ1YsY0FBYztBQUFBLElBQ2hCO0FBU0EsYUFBUyxjQUFlLElBQUksTUFBTSxNQUFNLGNBQWM7QUFHcEQsVUFBSSxHQUFHLE1BQU0sTUFBTSxXQUFXO0FBQzVCLGNBQU0sSUFBSSxhQUFhLGlCQUFpQixtQkFBbUI7QUFBQSxNQUM3RDtBQUdBLFNBQUcsTUFBTSxJQUFJO0FBR2IsU0FBRyxPQUFPLElBQUk7QUFHZCxTQUFHLE1BQU0sSUFBSTtBQUliLFlBQU0sU0FBUyxLQUFLLE9BQU87QUFHM0IsWUFBTSxTQUFTLE9BQU8sVUFBVTtBQUloQyxZQUFNLFFBQVEsQ0FBQztBQUlmLFVBQUksZUFBZSxPQUFPLEtBQUs7QUFHL0IsVUFBSSxlQUFlO0FBT2xCLE9BQUMsWUFBWTtBQUNaLGVBQU8sQ0FBQyxHQUFHLFFBQVEsR0FBRztBQUVwQixjQUFJO0FBQ0Ysa0JBQU0sRUFBRSxNQUFNLE1BQU0sSUFBSSxNQUFNO0FBSzlCLGdCQUFJLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxHQUFHO0FBQ2pDLDZCQUFlLE1BQU07QUFDbkIsbUNBQW1CLGFBQWEsRUFBRTtBQUFBLGNBQ3BDLENBQUM7QUFBQSxZQUNIO0FBR0EsMkJBQWU7QUFLZixnQkFBSSxDQUFDLFFBQVFELE9BQU0sYUFBYSxLQUFLLEdBQUc7QUFLdEMsb0JBQU0sS0FBSyxLQUFLO0FBS2hCLG1CQUVJLEdBQUcsdUJBQXVCLE1BQU0sVUFDaEMsS0FBSyxJQUFJLElBQUksR0FBRyx1QkFBdUIsS0FBSyxPQUU5QyxDQUFDLEdBQUcsUUFBUSxHQUNaO0FBQ0EsbUJBQUcsdUJBQXVCLElBQUksS0FBSyxJQUFJO0FBQ3ZDLCtCQUFlLE1BQU07QUFDbkIscUNBQW1CLFlBQVksRUFBRTtBQUFBLGdCQUNuQyxDQUFDO0FBQUEsY0FDSDtBQUlBLDZCQUFlLE9BQU8sS0FBSztBQUFBLFlBQzdCLFdBQVcsTUFBTTtBQUlmLDZCQUFlLE1BQU07QUFFbkIsbUJBQUcsTUFBTSxJQUFJO0FBSWIsb0JBQUk7QUFDRix3QkFBTSxTQUFTLFlBQVksT0FBTyxNQUFNLEtBQUssTUFBTSxZQUFZO0FBSS9ELHNCQUFJLEdBQUcsUUFBUSxHQUFHO0FBQ2hCO0FBQUEsa0JBQ0Y7QUFHQSxxQkFBRyxPQUFPLElBQUk7QUFHZCxxQ0FBbUIsUUFBUSxFQUFFO0FBQUEsZ0JBQy9CLFNBQVNFLFFBQU87QUFJZCxxQkFBRyxNQUFNLElBQUlBO0FBR2IscUNBQW1CLFNBQVMsRUFBRTtBQUFBLGdCQUNoQztBQUlBLG9CQUFJLEdBQUcsTUFBTSxNQUFNLFdBQVc7QUFDNUIscUNBQW1CLFdBQVcsRUFBRTtBQUFBLGdCQUNsQztBQUFBLGNBQ0YsQ0FBQztBQUVEO0FBQUEsWUFDRjtBQUFBLFVBQ0YsU0FBU0EsUUFBTztBQUNkLGdCQUFJLEdBQUcsUUFBUSxHQUFHO0FBQ2hCO0FBQUEsWUFDRjtBQUtBLDJCQUFlLE1BQU07QUFFbkIsaUJBQUcsTUFBTSxJQUFJO0FBR2IsaUJBQUcsTUFBTSxJQUFJQTtBQUdiLGlDQUFtQixTQUFTLEVBQUU7QUFJOUIsa0JBQUksR0FBRyxNQUFNLE1BQU0sV0FBVztBQUM1QixtQ0FBbUIsV0FBVyxFQUFFO0FBQUEsY0FDbEM7QUFBQSxZQUNGLENBQUM7QUFFRDtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsTUFDRixHQUFHO0FBQUEsSUFDTDtBQVFBLGFBQVMsbUJBQW9CLEdBQUcsUUFBUTtBQUd0QyxZQUFNLFFBQVEsSUFBSSxjQUFjLEdBQUc7QUFBQSxRQUNqQyxTQUFTO0FBQUEsUUFDVCxZQUFZO0FBQUEsTUFDZCxDQUFDO0FBRUQsYUFBTyxjQUFjLEtBQUs7QUFBQSxJQUM1QjtBQVNBLGFBQVMsWUFBYSxPQUFPLE1BQU0sVUFBVSxjQUFjO0FBTXpELGNBQVEsTUFBTTtBQUFBLFFBQ1osS0FBSyxXQUFXO0FBY2QsY0FBSSxVQUFVO0FBRWQsZ0JBQU0sU0FBUyxjQUFjLFlBQVksMEJBQTBCO0FBRW5FLGNBQUksV0FBVyxXQUFXO0FBQ3hCLHVCQUFXLG1CQUFtQixNQUFNO0FBQUEsVUFDdEM7QUFFQSxxQkFBVztBQUVYLGdCQUFNLFVBQVUsSUFBSSxjQUFjLFFBQVE7QUFFMUMscUJBQVcsU0FBUyxPQUFPO0FBQ3pCLHVCQUFXRCxNQUFLLFFBQVEsTUFBTSxLQUFLLENBQUM7QUFBQSxVQUN0QztBQUVBLHFCQUFXQSxNQUFLLFFBQVEsSUFBSSxDQUFDO0FBRTdCLGlCQUFPO0FBQUEsUUFDVDtBQUFBLFFBQ0EsS0FBSyxRQUFRO0FBRVgsY0FBSSxXQUFXO0FBSWYsY0FBSSxjQUFjO0FBQ2hCLHVCQUFXLFlBQVksWUFBWTtBQUFBLFVBQ3JDO0FBR0EsY0FBSSxhQUFhLGFBQWEsVUFBVTtBQUd0QyxrQkFBTUUsUUFBTyxjQUFjLFFBQVE7QUFJbkMsZ0JBQUlBLFVBQVMsV0FBVztBQUN0Qix5QkFBVyxZQUFZQSxNQUFLLFdBQVcsSUFBSSxTQUFTLENBQUM7QUFBQSxZQUN2RDtBQUFBLFVBQ0Y7QUFHQSxjQUFJLGFBQWEsV0FBVztBQUMxQix1QkFBVztBQUFBLFVBQ2I7QUFJQSxpQkFBTyxPQUFPLE9BQU8sUUFBUTtBQUFBLFFBQy9CO0FBQUEsUUFDQSxLQUFLLGVBQWU7QUFFbEIsZ0JBQU0sV0FBVyxxQkFBcUIsS0FBSztBQUUzQyxpQkFBTyxTQUFTO0FBQUEsUUFDbEI7QUFBQSxRQUNBLEtBQUssZ0JBQWdCO0FBR25CLGNBQUksZUFBZTtBQUVuQixnQkFBTSxVQUFVLElBQUksY0FBYyxRQUFRO0FBRTFDLHFCQUFXLFNBQVMsT0FBTztBQUN6Qiw0QkFBZ0IsUUFBUSxNQUFNLEtBQUs7QUFBQSxVQUNyQztBQUVBLDBCQUFnQixRQUFRLElBQUk7QUFFNUIsaUJBQU87QUFBQSxRQUNUO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFPQSxhQUFTLE9BQVEsU0FBUyxVQUFVO0FBQ2xDLFlBQU0sUUFBUSxxQkFBcUIsT0FBTztBQUcxQyxZQUFNLGNBQWMsWUFBWSxLQUFLO0FBRXJDLFVBQUksUUFBUTtBQUdaLFVBQUksZ0JBQWdCLE1BQU07QUFFeEIsbUJBQVc7QUFLWCxnQkFBUSxnQkFBZ0IsVUFBVSxJQUFJO0FBQUEsTUFDeEM7QUFPQSxZQUFNLFNBQVMsTUFBTSxNQUFNLEtBQUs7QUFDaEMsYUFBTyxJQUFJLFlBQVksUUFBUSxFQUFFLE9BQU8sTUFBTTtBQUFBLElBQ2hEO0FBTUEsYUFBUyxZQUFhLFNBQVM7QUFHN0IsWUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUk7QUFPbEIsVUFBSSxNQUFNLE9BQVEsTUFBTSxPQUFRLE1BQU0sS0FBTTtBQUMxQyxlQUFPO0FBQUEsTUFDVCxXQUFXLE1BQU0sT0FBUSxNQUFNLEtBQU07QUFDbkMsZUFBTztBQUFBLE1BQ1QsV0FBVyxNQUFNLE9BQVEsTUFBTSxLQUFNO0FBQ25DLGVBQU87QUFBQSxNQUNUO0FBRUEsYUFBTztBQUFBLElBQ1Q7QUFLQSxhQUFTLHFCQUFzQixXQUFXO0FBQ3hDLFlBQU0sT0FBTyxVQUFVLE9BQU8sQ0FBQyxHQUFHLE1BQU07QUFDdEMsZUFBTyxJQUFJLEVBQUU7QUFBQSxNQUNmLEdBQUcsQ0FBQztBQUVKLFVBQUksU0FBUztBQUViLGFBQU8sVUFBVSxPQUFPLENBQUMsR0FBRyxNQUFNO0FBQ2hDLFVBQUUsSUFBSSxHQUFHLE1BQU07QUFDZixrQkFBVSxFQUFFO0FBQ1osZUFBTztBQUFBLE1BQ1QsR0FBRyxJQUFJLFdBQVcsSUFBSSxDQUFDO0FBQUEsSUFDekI7QUFFQSxXQUFPLFVBQVU7QUFBQSxNQUNmO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDdFlBO0FBQUE7QUFBQTtBQUVBLFFBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSixRQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSixRQUFNLEVBQUUsT0FBTyxJQUFJO0FBQ25CLFFBQU0sRUFBRSxvQkFBb0IsSUFBSTtBQUVoQyxRQUFNLGFBQU4sTUFBTSxvQkFBbUIsWUFBWTtBQUFBLE1BQ25DLGNBQWU7QUFDYixjQUFNO0FBRU4sYUFBSyxNQUFNLElBQUk7QUFDZixhQUFLLE9BQU8sSUFBSTtBQUNoQixhQUFLLE1BQU0sSUFBSTtBQUNmLGFBQUssT0FBTyxJQUFJO0FBQUEsVUFDZCxTQUFTO0FBQUEsVUFDVCxPQUFPO0FBQUEsVUFDUCxPQUFPO0FBQUEsVUFDUCxNQUFNO0FBQUEsVUFDTixVQUFVO0FBQUEsVUFDVixXQUFXO0FBQUEsUUFDYjtBQUFBLE1BQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsa0JBQW1CLE1BQU07QUFDdkIsZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxlQUFPLG9CQUFvQixXQUFXLEdBQUcsOEJBQThCO0FBRXZFLGVBQU8sT0FBTyxXQUFXLEtBQUssTUFBTSxFQUFFLFFBQVEsTUFBTSxDQUFDO0FBSXJELHNCQUFjLE1BQU0sTUFBTSxhQUFhO0FBQUEsTUFDekM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsbUJBQW9CLE1BQU07QUFDeEIsZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxlQUFPLG9CQUFvQixXQUFXLEdBQUcsK0JBQStCO0FBRXhFLGVBQU8sT0FBTyxXQUFXLEtBQUssTUFBTSxFQUFFLFFBQVEsTUFBTSxDQUFDO0FBSXJELHNCQUFjLE1BQU0sTUFBTSxjQUFjO0FBQUEsTUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFPQSxXQUFZLE1BQU0sV0FBVyxRQUFXO0FBQ3RDLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLHVCQUF1QjtBQUVoRSxlQUFPLE9BQU8sV0FBVyxLQUFLLE1BQU0sRUFBRSxRQUFRLE1BQU0sQ0FBQztBQUVyRCxZQUFJLGFBQWEsUUFBVztBQUMxQixxQkFBVyxPQUFPLFdBQVcsVUFBVSxVQUFVLHlCQUF5QixVQUFVO0FBQUEsUUFDdEY7QUFJQSxzQkFBYyxNQUFNLE1BQU0sUUFBUSxRQUFRO0FBQUEsTUFDNUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsY0FBZSxNQUFNO0FBQ25CLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLDBCQUEwQjtBQUVuRSxlQUFPLE9BQU8sV0FBVyxLQUFLLE1BQU0sRUFBRSxRQUFRLE1BQU0sQ0FBQztBQUlyRCxzQkFBYyxNQUFNLE1BQU0sU0FBUztBQUFBLE1BQ3JDO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLQSxRQUFTO0FBSVAsWUFBSSxLQUFLLE1BQU0sTUFBTSxXQUFXLEtBQUssTUFBTSxNQUFNLFFBQVE7QUFDdkQsZUFBSyxPQUFPLElBQUk7QUFDaEI7QUFBQSxRQUNGO0FBSUEsWUFBSSxLQUFLLE1BQU0sTUFBTSxXQUFXO0FBQzlCLGVBQUssTUFBTSxJQUFJO0FBQ2YsZUFBSyxPQUFPLElBQUk7QUFBQSxRQUNsQjtBQUtBLGFBQUssUUFBUSxJQUFJO0FBTWpCLDJCQUFtQixTQUFTLElBQUk7QUFJaEMsWUFBSSxLQUFLLE1BQU0sTUFBTSxXQUFXO0FBQzlCLDZCQUFtQixXQUFXLElBQUk7QUFBQSxRQUNwQztBQUFBLE1BQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtBLElBQUksYUFBYztBQUNoQixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBRWxDLGdCQUFRLEtBQUssTUFBTSxHQUFHO0FBQUEsVUFDcEIsS0FBSztBQUFTLG1CQUFPLEtBQUs7QUFBQSxVQUMxQixLQUFLO0FBQVcsbUJBQU8sS0FBSztBQUFBLFVBQzVCLEtBQUs7QUFBUSxtQkFBTyxLQUFLO0FBQUEsUUFDM0I7QUFBQSxNQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLQSxJQUFJLFNBQVU7QUFDWixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBSWxDLGVBQU8sS0FBSyxPQUFPO0FBQUEsTUFDckI7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtBLElBQUksUUFBUztBQUNYLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFJbEMsZUFBTyxLQUFLLE1BQU07QUFBQSxNQUNwQjtBQUFBLE1BRUEsSUFBSSxZQUFhO0FBQ2YsZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxlQUFPLEtBQUssT0FBTyxFQUFFO0FBQUEsTUFDdkI7QUFBQSxNQUVBLElBQUksVUFBVyxJQUFJO0FBQ2pCLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsWUFBSSxLQUFLLE9BQU8sRUFBRSxTQUFTO0FBQ3pCLGVBQUssb0JBQW9CLFdBQVcsS0FBSyxPQUFPLEVBQUUsT0FBTztBQUFBLFFBQzNEO0FBRUEsWUFBSSxPQUFPLE9BQU8sWUFBWTtBQUM1QixlQUFLLE9BQU8sRUFBRSxVQUFVO0FBQ3hCLGVBQUssaUJBQWlCLFdBQVcsRUFBRTtBQUFBLFFBQ3JDLE9BQU87QUFDTCxlQUFLLE9BQU8sRUFBRSxVQUFVO0FBQUEsUUFDMUI7QUFBQSxNQUNGO0FBQUEsTUFFQSxJQUFJLFVBQVc7QUFDYixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBRWxDLGVBQU8sS0FBSyxPQUFPLEVBQUU7QUFBQSxNQUN2QjtBQUFBLE1BRUEsSUFBSSxRQUFTLElBQUk7QUFDZixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBRWxDLFlBQUksS0FBSyxPQUFPLEVBQUUsT0FBTztBQUN2QixlQUFLLG9CQUFvQixTQUFTLEtBQUssT0FBTyxFQUFFLEtBQUs7QUFBQSxRQUN2RDtBQUVBLFlBQUksT0FBTyxPQUFPLFlBQVk7QUFDNUIsZUFBSyxPQUFPLEVBQUUsUUFBUTtBQUN0QixlQUFLLGlCQUFpQixTQUFTLEVBQUU7QUFBQSxRQUNuQyxPQUFPO0FBQ0wsZUFBSyxPQUFPLEVBQUUsUUFBUTtBQUFBLFFBQ3hCO0FBQUEsTUFDRjtBQUFBLE1BRUEsSUFBSSxjQUFlO0FBQ2pCLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxLQUFLLE9BQU8sRUFBRTtBQUFBLE1BQ3ZCO0FBQUEsTUFFQSxJQUFJLFlBQWEsSUFBSTtBQUNuQixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBRWxDLFlBQUksS0FBSyxPQUFPLEVBQUUsV0FBVztBQUMzQixlQUFLLG9CQUFvQixhQUFhLEtBQUssT0FBTyxFQUFFLFNBQVM7QUFBQSxRQUMvRDtBQUVBLFlBQUksT0FBTyxPQUFPLFlBQVk7QUFDNUIsZUFBSyxPQUFPLEVBQUUsWUFBWTtBQUMxQixlQUFLLGlCQUFpQixhQUFhLEVBQUU7QUFBQSxRQUN2QyxPQUFPO0FBQ0wsZUFBSyxPQUFPLEVBQUUsWUFBWTtBQUFBLFFBQzVCO0FBQUEsTUFDRjtBQUFBLE1BRUEsSUFBSSxhQUFjO0FBQ2hCLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxLQUFLLE9BQU8sRUFBRTtBQUFBLE1BQ3ZCO0FBQUEsTUFFQSxJQUFJLFdBQVksSUFBSTtBQUNsQixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBRWxDLFlBQUksS0FBSyxPQUFPLEVBQUUsVUFBVTtBQUMxQixlQUFLLG9CQUFvQixZQUFZLEtBQUssT0FBTyxFQUFFLFFBQVE7QUFBQSxRQUM3RDtBQUVBLFlBQUksT0FBTyxPQUFPLFlBQVk7QUFDNUIsZUFBSyxPQUFPLEVBQUUsV0FBVztBQUN6QixlQUFLLGlCQUFpQixZQUFZLEVBQUU7QUFBQSxRQUN0QyxPQUFPO0FBQ0wsZUFBSyxPQUFPLEVBQUUsV0FBVztBQUFBLFFBQzNCO0FBQUEsTUFDRjtBQUFBLE1BRUEsSUFBSSxTQUFVO0FBQ1osZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxlQUFPLEtBQUssT0FBTyxFQUFFO0FBQUEsTUFDdkI7QUFBQSxNQUVBLElBQUksT0FBUSxJQUFJO0FBQ2QsZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxZQUFJLEtBQUssT0FBTyxFQUFFLE1BQU07QUFDdEIsZUFBSyxvQkFBb0IsUUFBUSxLQUFLLE9BQU8sRUFBRSxJQUFJO0FBQUEsUUFDckQ7QUFFQSxZQUFJLE9BQU8sT0FBTyxZQUFZO0FBQzVCLGVBQUssT0FBTyxFQUFFLE9BQU87QUFDckIsZUFBSyxpQkFBaUIsUUFBUSxFQUFFO0FBQUEsUUFDbEMsT0FBTztBQUNMLGVBQUssT0FBTyxFQUFFLE9BQU87QUFBQSxRQUN2QjtBQUFBLE1BQ0Y7QUFBQSxNQUVBLElBQUksVUFBVztBQUNiLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxLQUFLLE9BQU8sRUFBRTtBQUFBLE1BQ3ZCO0FBQUEsTUFFQSxJQUFJLFFBQVMsSUFBSTtBQUNmLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsWUFBSSxLQUFLLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLGVBQUssb0JBQW9CLFNBQVMsS0FBSyxPQUFPLEVBQUUsS0FBSztBQUFBLFFBQ3ZEO0FBRUEsWUFBSSxPQUFPLE9BQU8sWUFBWTtBQUM1QixlQUFLLE9BQU8sRUFBRSxRQUFRO0FBQ3RCLGVBQUssaUJBQWlCLFNBQVMsRUFBRTtBQUFBLFFBQ25DLE9BQU87QUFDTCxlQUFLLE9BQU8sRUFBRSxRQUFRO0FBQUEsUUFDeEI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUdBLGVBQVcsUUFBUSxXQUFXLFVBQVUsUUFBUTtBQUVoRCxlQUFXLFVBQVUsV0FBVyxVQUFVLFVBQVU7QUFFcEQsZUFBVyxPQUFPLFdBQVcsVUFBVSxPQUFPO0FBRTlDLFdBQU8saUJBQWlCLFdBQVcsV0FBVztBQUFBLE1BQzVDLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLG1CQUFtQjtBQUFBLE1BQ25CLG9CQUFvQjtBQUFBLE1BQ3BCLFlBQVk7QUFBQSxNQUNaLGVBQWU7QUFBQSxNQUNmLE9BQU87QUFBQSxNQUNQLFlBQVk7QUFBQSxNQUNaLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLGFBQWE7QUFBQSxNQUNiLFlBQVk7QUFBQSxNQUNaLFFBQVE7QUFBQSxNQUNSLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxNQUNULFdBQVc7QUFBQSxNQUNYLENBQUMsT0FBTyxXQUFXLEdBQUc7QUFBQSxRQUNwQixPQUFPO0FBQUEsUUFDUCxVQUFVO0FBQUEsUUFDVixZQUFZO0FBQUEsUUFDWixjQUFjO0FBQUEsTUFDaEI7QUFBQSxJQUNGLENBQUM7QUFFRCxXQUFPLGlCQUFpQixZQUFZO0FBQUEsTUFDbEMsT0FBTztBQUFBLE1BQ1AsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUVELFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDdlZBLElBQUFDLG1CQUFBO0FBQUE7QUFBQTtBQUVBLFdBQU8sVUFBVTtBQUFBLE1BQ2YsWUFBWSxrQkFBOEI7QUFBQSxJQUM1QztBQUFBO0FBQUE7OztBQ0pBLElBQUFDLGdCQUFBO0FBQUE7QUFBQTtBQUVBLFFBQU1DLFVBQVMsVUFBUSxhQUFhO0FBQ3BDLFFBQU0sRUFBRSxjQUFjLElBQUk7QUFDMUIsUUFBTSxFQUFFLGtCQUFrQixJQUFJO0FBUzlCLGFBQVMsVUFBVyxHQUFHLEdBQUcsa0JBQWtCLE9BQU87QUFDakQsWUFBTSxjQUFjLGNBQWMsR0FBRyxlQUFlO0FBRXBELFlBQU0sY0FBYyxjQUFjLEdBQUcsZUFBZTtBQUVwRCxhQUFPLGdCQUFnQjtBQUFBLElBQ3pCO0FBTUEsYUFBUyxlQUFnQixRQUFRO0FBQy9CLE1BQUFBLFFBQU8sV0FBVyxJQUFJO0FBRXRCLFlBQU0sU0FBUyxDQUFDO0FBRWhCLGVBQVMsU0FBUyxPQUFPLE1BQU0sR0FBRyxHQUFHO0FBQ25DLGdCQUFRLE1BQU0sS0FBSztBQUVuQixZQUFJLGtCQUFrQixLQUFLLEdBQUc7QUFDNUIsaUJBQU8sS0FBSyxLQUFLO0FBQUEsUUFDbkI7QUFBQSxNQUNGO0FBRUEsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLFVBQVU7QUFBQSxNQUNmO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUM1Q0E7QUFBQTtBQUFBO0FBRUEsUUFBTSxFQUFFLFdBQVcsSUFBSTtBQUN2QixRQUFNLEVBQUUsV0FBVyxlQUFlLElBQUk7QUFDdEMsUUFBTSxFQUFFLHFCQUFxQixZQUFZLElBQUk7QUFDN0MsUUFBTSxFQUFFLE9BQU8sSUFBSTtBQUNuQixRQUFNLEVBQUUsVUFBVSxlQUFlLGtCQUFrQixJQUFJO0FBQ3ZELFFBQU0sRUFBRSxTQUFTLGlCQUFpQixJQUFJO0FBQ3RDLFFBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBTSxFQUFFLFNBQVMsSUFBSTtBQUNyQixRQUFNLEVBQUUsc0JBQXNCLHVCQUF1QixhQUFhLElBQUk7QUFDdEUsUUFBTUMsVUFBUyxVQUFRLGFBQWE7QUFnQnBDLFFBQU0sUUFBTixNQUFNLE9BQU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS1Y7QUFBQSxNQUVBLGNBQWU7QUFDYixZQUFJLFVBQVUsQ0FBQyxNQUFNLFlBQVk7QUFDL0IsaUJBQU8sbUJBQW1CO0FBQUEsUUFDNUI7QUFFQSxlQUFPLEtBQUssa0JBQWtCLElBQUk7QUFDbEMsYUFBSywrQkFBK0IsVUFBVSxDQUFDO0FBQUEsTUFDakQ7QUFBQSxNQUVBLE1BQU0sTUFBT0MsVUFBUyxVQUFVLENBQUMsR0FBRztBQUNsQyxlQUFPLFdBQVcsTUFBTSxNQUFLO0FBRTdCLGNBQU0sU0FBUztBQUNmLGVBQU8sb0JBQW9CLFdBQVcsR0FBRyxNQUFNO0FBRS9DLFFBQUFBLFdBQVUsT0FBTyxXQUFXLFlBQVlBLFVBQVMsUUFBUSxTQUFTO0FBQ2xFLGtCQUFVLE9BQU8sV0FBVyxrQkFBa0IsU0FBUyxRQUFRLFNBQVM7QUFFeEUsY0FBTSxJQUFJLEtBQUssa0JBQWtCQSxVQUFTLFNBQVMsQ0FBQztBQUVwRCxZQUFJLEVBQUUsV0FBVyxHQUFHO0FBQ2xCO0FBQUEsUUFDRjtBQUVBLGVBQU8sRUFBRSxDQUFDO0FBQUEsTUFDWjtBQUFBLE1BRUEsTUFBTSxTQUFVQSxXQUFVLFFBQVcsVUFBVSxDQUFDLEdBQUc7QUFDakQsZUFBTyxXQUFXLE1BQU0sTUFBSztBQUU3QixjQUFNLFNBQVM7QUFDZixZQUFJQSxhQUFZO0FBQVcsVUFBQUEsV0FBVSxPQUFPLFdBQVcsWUFBWUEsVUFBUyxRQUFRLFNBQVM7QUFDN0Ysa0JBQVUsT0FBTyxXQUFXLGtCQUFrQixTQUFTLFFBQVEsU0FBUztBQUV4RSxlQUFPLEtBQUssa0JBQWtCQSxVQUFTLE9BQU87QUFBQSxNQUNoRDtBQUFBLE1BRUEsTUFBTSxJQUFLQSxVQUFTO0FBQ2xCLGVBQU8sV0FBVyxNQUFNLE1BQUs7QUFFN0IsY0FBTSxTQUFTO0FBQ2YsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLE1BQU07QUFFL0MsUUFBQUEsV0FBVSxPQUFPLFdBQVcsWUFBWUEsVUFBUyxRQUFRLFNBQVM7QUFHbEUsY0FBTSxXQUFXLENBQUNBLFFBQU87QUFHekIsY0FBTSx1QkFBdUIsS0FBSyxPQUFPLFFBQVE7QUFHakQsZUFBTyxNQUFNO0FBQUEsTUFDZjtBQUFBLE1BRUEsTUFBTSxPQUFRLFVBQVU7QUFDdEIsZUFBTyxXQUFXLE1BQU0sTUFBSztBQUU3QixjQUFNLFNBQVM7QUFDZixlQUFPLG9CQUFvQixXQUFXLEdBQUcsTUFBTTtBQUcvQyxjQUFNLG1CQUFtQixDQUFDO0FBRzFCLGNBQU0sY0FBYyxDQUFDO0FBR3JCLGlCQUFTQSxZQUFXLFVBQVU7QUFDNUIsY0FBSUEsYUFBWSxRQUFXO0FBQ3pCLGtCQUFNLE9BQU8sT0FBTyxpQkFBaUI7QUFBQSxjQUNuQztBQUFBLGNBQ0EsVUFBVTtBQUFBLGNBQ1YsT0FBTyxDQUFDLDBCQUEwQjtBQUFBLFlBQ3BDLENBQUM7QUFBQSxVQUNIO0FBRUEsVUFBQUEsV0FBVSxPQUFPLFdBQVcsWUFBWUEsUUFBTztBQUUvQyxjQUFJLE9BQU9BLGFBQVksVUFBVTtBQUMvQjtBQUFBLFVBQ0Y7QUFHQSxnQkFBTSxJQUFJQSxTQUFRLE1BQU07QUFHeEIsY0FBSSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsT0FBTztBQUN0RCxrQkFBTSxPQUFPLE9BQU8sVUFBVTtBQUFBLGNBQzVCLFFBQVE7QUFBQSxjQUNSLFNBQVM7QUFBQSxZQUNYLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRjtBQUlBLGNBQU0sbUJBQW1CLENBQUM7QUFHMUIsbUJBQVdBLFlBQVcsVUFBVTtBQUU5QixnQkFBTSxJQUFJLElBQUksUUFBUUEsUUFBTyxFQUFFLE1BQU07QUFHckMsY0FBSSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsR0FBRztBQUNoQyxrQkFBTSxPQUFPLE9BQU8sVUFBVTtBQUFBLGNBQzVCLFFBQVE7QUFBQSxjQUNSLFNBQVM7QUFBQSxZQUNYLENBQUM7QUFBQSxVQUNIO0FBR0EsWUFBRSxZQUFZO0FBQ2QsWUFBRSxjQUFjO0FBR2hCLHNCQUFZLEtBQUssQ0FBQztBQUdsQixnQkFBTSxrQkFBa0Isc0JBQXNCO0FBRzlDLDJCQUFpQixLQUFLLFNBQVM7QUFBQSxZQUM3QixTQUFTO0FBQUEsWUFDVCxnQkFBaUIsVUFBVTtBQUV6QixrQkFBSSxTQUFTLFNBQVMsV0FBVyxTQUFTLFdBQVcsT0FBTyxTQUFTLFNBQVMsT0FBTyxTQUFTLFNBQVMsS0FBSztBQUMxRyxnQ0FBZ0IsT0FBTyxPQUFPLE9BQU8sVUFBVTtBQUFBLGtCQUM3QyxRQUFRO0FBQUEsa0JBQ1IsU0FBUztBQUFBLGdCQUNYLENBQUMsQ0FBQztBQUFBLGNBQ0osV0FBVyxTQUFTLFlBQVksU0FBUyxNQUFNLEdBQUc7QUFFaEQsc0JBQU0sY0FBYyxlQUFlLFNBQVMsWUFBWSxJQUFJLE1BQU0sQ0FBQztBQUduRSwyQkFBVyxjQUFjLGFBQWE7QUFFcEMsc0JBQUksZUFBZSxLQUFLO0FBQ3RCLG9DQUFnQixPQUFPLE9BQU8sT0FBTyxVQUFVO0FBQUEsc0JBQzdDLFFBQVE7QUFBQSxzQkFDUixTQUFTO0FBQUEsb0JBQ1gsQ0FBQyxDQUFDO0FBRUYsK0JBQVcsY0FBYyxrQkFBa0I7QUFDekMsaUNBQVcsTUFBTTtBQUFBLG9CQUNuQjtBQUVBO0FBQUEsa0JBQ0Y7QUFBQSxnQkFDRjtBQUFBLGNBQ0Y7QUFBQSxZQUNGO0FBQUEsWUFDQSx5QkFBMEIsVUFBVTtBQUVsQyxrQkFBSSxTQUFTLFNBQVM7QUFDcEIsZ0NBQWdCLE9BQU8sSUFBSSxhQUFhLFdBQVcsWUFBWSxDQUFDO0FBQ2hFO0FBQUEsY0FDRjtBQUdBLDhCQUFnQixRQUFRLFFBQVE7QUFBQSxZQUNsQztBQUFBLFVBQ0YsQ0FBQyxDQUFDO0FBR0YsMkJBQWlCLEtBQUssZ0JBQWdCLE9BQU87QUFBQSxRQUMvQztBQUdBLGNBQU0sSUFBSSxRQUFRLElBQUksZ0JBQWdCO0FBR3RDLGNBQU0sWUFBWSxNQUFNO0FBR3hCLGNBQU0sYUFBYSxDQUFDO0FBR3BCLFlBQUksUUFBUTtBQUdaLG1CQUFXLFlBQVksV0FBVztBQUdoQyxnQkFBTSxZQUFZO0FBQUEsWUFDaEIsTUFBTTtBQUFBO0FBQUEsWUFDTixTQUFTLFlBQVksS0FBSztBQUFBO0FBQUEsWUFDMUI7QUFBQTtBQUFBLFVBQ0Y7QUFFQSxxQkFBVyxLQUFLLFNBQVM7QUFFekI7QUFBQSxRQUNGO0FBR0EsY0FBTSxrQkFBa0Isc0JBQXNCO0FBRzlDLFlBQUksWUFBWTtBQUdoQixZQUFJO0FBQ0YsZUFBSyxzQkFBc0IsVUFBVTtBQUFBLFFBQ3ZDLFNBQVMsR0FBRztBQUNWLHNCQUFZO0FBQUEsUUFDZDtBQUdBLHVCQUFlLE1BQU07QUFFbkIsY0FBSSxjQUFjLE1BQU07QUFDdEIsNEJBQWdCLFFBQVEsTUFBUztBQUFBLFVBQ25DLE9BQU87QUFFTCw0QkFBZ0IsT0FBTyxTQUFTO0FBQUEsVUFDbEM7QUFBQSxRQUNGLENBQUM7QUFHRCxlQUFPLGdCQUFnQjtBQUFBLE1BQ3pCO0FBQUEsTUFFQSxNQUFNLElBQUtBLFVBQVMsVUFBVTtBQUM1QixlQUFPLFdBQVcsTUFBTSxNQUFLO0FBRTdCLGNBQU0sU0FBUztBQUNmLGVBQU8sb0JBQW9CLFdBQVcsR0FBRyxNQUFNO0FBRS9DLFFBQUFBLFdBQVUsT0FBTyxXQUFXLFlBQVlBLFVBQVMsUUFBUSxTQUFTO0FBQ2xFLG1CQUFXLE9BQU8sV0FBVyxTQUFTLFVBQVUsUUFBUSxVQUFVO0FBR2xFLFlBQUksZUFBZTtBQUduQixZQUFJQSxvQkFBbUIsU0FBUztBQUM5Qix5QkFBZUEsU0FBUSxNQUFNO0FBQUEsUUFDL0IsT0FBTztBQUNMLHlCQUFlLElBQUksUUFBUUEsUUFBTyxFQUFFLE1BQU07QUFBQSxRQUM1QztBQUdBLFlBQUksQ0FBQyxxQkFBcUIsYUFBYSxHQUFHLEtBQUssYUFBYSxXQUFXLE9BQU87QUFDNUUsZ0JBQU0sT0FBTyxPQUFPLFVBQVU7QUFBQSxZQUM1QixRQUFRO0FBQUEsWUFDUixTQUFTO0FBQUEsVUFDWCxDQUFDO0FBQUEsUUFDSDtBQUdBLGNBQU0sZ0JBQWdCLFNBQVMsTUFBTTtBQUdyQyxZQUFJLGNBQWMsV0FBVyxLQUFLO0FBQ2hDLGdCQUFNLE9BQU8sT0FBTyxVQUFVO0FBQUEsWUFDNUIsUUFBUTtBQUFBLFlBQ1IsU0FBUztBQUFBLFVBQ1gsQ0FBQztBQUFBLFFBQ0g7QUFHQSxZQUFJLGNBQWMsWUFBWSxTQUFTLE1BQU0sR0FBRztBQUU5QyxnQkFBTSxjQUFjLGVBQWUsY0FBYyxZQUFZLElBQUksTUFBTSxDQUFDO0FBR3hFLHFCQUFXLGNBQWMsYUFBYTtBQUVwQyxnQkFBSSxlQUFlLEtBQUs7QUFDdEIsb0JBQU0sT0FBTyxPQUFPLFVBQVU7QUFBQSxnQkFDNUIsUUFBUTtBQUFBLGdCQUNSLFNBQVM7QUFBQSxjQUNYLENBQUM7QUFBQSxZQUNIO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFHQSxZQUFJLGNBQWMsU0FBUyxZQUFZLGNBQWMsS0FBSyxNQUFNLEtBQUssY0FBYyxLQUFLLE9BQU8sU0FBUztBQUN0RyxnQkFBTSxPQUFPLE9BQU8sVUFBVTtBQUFBLFlBQzVCLFFBQVE7QUFBQSxZQUNSLFNBQVM7QUFBQSxVQUNYLENBQUM7QUFBQSxRQUNIO0FBR0EsY0FBTSxpQkFBaUIsY0FBYyxhQUFhO0FBR2xELGNBQU0sa0JBQWtCLHNCQUFzQjtBQUc5QyxZQUFJLGNBQWMsUUFBUSxNQUFNO0FBRTlCLGdCQUFNLFNBQVMsY0FBYyxLQUFLO0FBR2xDLGdCQUFNLFNBQVMsT0FBTyxVQUFVO0FBR2hDLHVCQUFhLE1BQU0sRUFBRSxLQUFLLGdCQUFnQixTQUFTLGdCQUFnQixNQUFNO0FBQUEsUUFDM0UsT0FBTztBQUNMLDBCQUFnQixRQUFRLE1BQVM7QUFBQSxRQUNuQztBQUlBLGNBQU0sYUFBYSxDQUFDO0FBSXBCLGNBQU0sWUFBWTtBQUFBLFVBQ2hCLE1BQU07QUFBQTtBQUFBLFVBQ04sU0FBUztBQUFBO0FBQUEsVUFDVCxVQUFVO0FBQUE7QUFBQSxRQUNaO0FBR0EsbUJBQVcsS0FBSyxTQUFTO0FBR3pCLGNBQU0sUUFBUSxNQUFNLGdCQUFnQjtBQUVwQyxZQUFJLGVBQWUsUUFBUSxNQUFNO0FBQy9CLHlCQUFlLEtBQUssU0FBUztBQUFBLFFBQy9CO0FBR0EsY0FBTSxrQkFBa0Isc0JBQXNCO0FBRzlDLFlBQUksWUFBWTtBQUdoQixZQUFJO0FBQ0YsZUFBSyxzQkFBc0IsVUFBVTtBQUFBLFFBQ3ZDLFNBQVMsR0FBRztBQUNWLHNCQUFZO0FBQUEsUUFDZDtBQUdBLHVCQUFlLE1BQU07QUFFbkIsY0FBSSxjQUFjLE1BQU07QUFDdEIsNEJBQWdCLFFBQVE7QUFBQSxVQUMxQixPQUFPO0FBQ0wsNEJBQWdCLE9BQU8sU0FBUztBQUFBLFVBQ2xDO0FBQUEsUUFDRixDQUFDO0FBRUQsZUFBTyxnQkFBZ0I7QUFBQSxNQUN6QjtBQUFBLE1BRUEsTUFBTSxPQUFRQSxVQUFTLFVBQVUsQ0FBQyxHQUFHO0FBQ25DLGVBQU8sV0FBVyxNQUFNLE1BQUs7QUFFN0IsY0FBTSxTQUFTO0FBQ2YsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLE1BQU07QUFFL0MsUUFBQUEsV0FBVSxPQUFPLFdBQVcsWUFBWUEsVUFBUyxRQUFRLFNBQVM7QUFDbEUsa0JBQVUsT0FBTyxXQUFXLGtCQUFrQixTQUFTLFFBQVEsU0FBUztBQUt4RSxZQUFJLElBQUk7QUFFUixZQUFJQSxvQkFBbUIsU0FBUztBQUM5QixjQUFJQSxTQUFRLE1BQU07QUFFbEIsY0FBSSxFQUFFLFdBQVcsU0FBUyxDQUFDLFFBQVEsY0FBYztBQUMvQyxtQkFBTztBQUFBLFVBQ1Q7QUFBQSxRQUNGLE9BQU87QUFDTCxVQUFBRCxRQUFPLE9BQU9DLGFBQVksUUFBUTtBQUVsQyxjQUFJLElBQUksUUFBUUEsUUFBTyxFQUFFLE1BQU07QUFBQSxRQUNqQztBQUdBLGNBQU0sYUFBYSxDQUFDO0FBR3BCLGNBQU0sWUFBWTtBQUFBLFVBQ2hCLE1BQU07QUFBQSxVQUNOLFNBQVM7QUFBQSxVQUNUO0FBQUEsUUFDRjtBQUVBLG1CQUFXLEtBQUssU0FBUztBQUV6QixjQUFNLGtCQUFrQixzQkFBc0I7QUFFOUMsWUFBSSxZQUFZO0FBQ2hCLFlBQUk7QUFFSixZQUFJO0FBQ0YsNkJBQW1CLEtBQUssc0JBQXNCLFVBQVU7QUFBQSxRQUMxRCxTQUFTLEdBQUc7QUFDVixzQkFBWTtBQUFBLFFBQ2Q7QUFFQSx1QkFBZSxNQUFNO0FBQ25CLGNBQUksY0FBYyxNQUFNO0FBQ3RCLDRCQUFnQixRQUFRLENBQUMsQ0FBQyxrQkFBa0IsTUFBTTtBQUFBLFVBQ3BELE9BQU87QUFDTCw0QkFBZ0IsT0FBTyxTQUFTO0FBQUEsVUFDbEM7QUFBQSxRQUNGLENBQUM7QUFFRCxlQUFPLGdCQUFnQjtBQUFBLE1BQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFRQSxNQUFNLEtBQU1BLFdBQVUsUUFBVyxVQUFVLENBQUMsR0FBRztBQUM3QyxlQUFPLFdBQVcsTUFBTSxNQUFLO0FBRTdCLGNBQU0sU0FBUztBQUVmLFlBQUlBLGFBQVk7QUFBVyxVQUFBQSxXQUFVLE9BQU8sV0FBVyxZQUFZQSxVQUFTLFFBQVEsU0FBUztBQUM3RixrQkFBVSxPQUFPLFdBQVcsa0JBQWtCLFNBQVMsUUFBUSxTQUFTO0FBR3hFLFlBQUksSUFBSTtBQUdSLFlBQUlBLGFBQVksUUFBVztBQUV6QixjQUFJQSxvQkFBbUIsU0FBUztBQUU5QixnQkFBSUEsU0FBUSxNQUFNO0FBR2xCLGdCQUFJLEVBQUUsV0FBVyxTQUFTLENBQUMsUUFBUSxjQUFjO0FBQy9DLHFCQUFPLENBQUM7QUFBQSxZQUNWO0FBQUEsVUFDRixXQUFXLE9BQU9BLGFBQVksVUFBVTtBQUN0QyxnQkFBSSxJQUFJLFFBQVFBLFFBQU8sRUFBRSxNQUFNO0FBQUEsVUFDakM7QUFBQSxRQUNGO0FBR0EsY0FBTSxVQUFVLHNCQUFzQjtBQUl0QyxjQUFNLFdBQVcsQ0FBQztBQUdsQixZQUFJQSxhQUFZLFFBQVc7QUFFekIscUJBQVcsbUJBQW1CLEtBQUssOEJBQThCO0FBRS9ELHFCQUFTLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztBQUFBLFVBQ2xDO0FBQUEsUUFDRixPQUFPO0FBRUwsZ0JBQU0sbUJBQW1CLEtBQUssWUFBWSxHQUFHLE9BQU87QUFHcEQscUJBQVcsbUJBQW1CLGtCQUFrQjtBQUU5QyxxQkFBUyxLQUFLLGdCQUFnQixDQUFDLENBQUM7QUFBQSxVQUNsQztBQUFBLFFBQ0Y7QUFHQSx1QkFBZSxNQUFNO0FBRW5CLGdCQUFNLGNBQWMsQ0FBQztBQUdyQixxQkFBV0EsWUFBVyxVQUFVO0FBQzlCLGtCQUFNLGdCQUFnQjtBQUFBLGNBQ3BCQTtBQUFBLGNBQ0EsSUFBSSxnQkFBZ0IsRUFBRTtBQUFBLGNBQ3RCO0FBQUEsWUFDRjtBQUVBLHdCQUFZLEtBQUssYUFBYTtBQUFBLFVBQ2hDO0FBR0Esa0JBQVEsUUFBUSxPQUFPLE9BQU8sV0FBVyxDQUFDO0FBQUEsUUFDNUMsQ0FBQztBQUVELGVBQU8sUUFBUTtBQUFBLE1BQ2pCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BT0Esc0JBQXVCLFlBQVk7QUFFakMsY0FBTSxRQUFRLEtBQUs7QUFHbkIsY0FBTSxjQUFjLENBQUMsR0FBRyxLQUFLO0FBRzdCLGNBQU0sYUFBYSxDQUFDO0FBR3BCLGNBQU0sYUFBYSxDQUFDO0FBRXBCLFlBQUk7QUFFRixxQkFBVyxhQUFhLFlBQVk7QUFFbEMsZ0JBQUksVUFBVSxTQUFTLFlBQVksVUFBVSxTQUFTLE9BQU87QUFDM0Qsb0JBQU0sT0FBTyxPQUFPLFVBQVU7QUFBQSxnQkFDNUIsUUFBUTtBQUFBLGdCQUNSLFNBQVM7QUFBQSxjQUNYLENBQUM7QUFBQSxZQUNIO0FBR0EsZ0JBQUksVUFBVSxTQUFTLFlBQVksVUFBVSxZQUFZLE1BQU07QUFDN0Qsb0JBQU0sT0FBTyxPQUFPLFVBQVU7QUFBQSxnQkFDNUIsUUFBUTtBQUFBLGdCQUNSLFNBQVM7QUFBQSxjQUNYLENBQUM7QUFBQSxZQUNIO0FBR0EsZ0JBQUksS0FBSyxZQUFZLFVBQVUsU0FBUyxVQUFVLFNBQVMsVUFBVSxFQUFFLFFBQVE7QUFDN0Usb0JBQU0sSUFBSSxhQUFhLE9BQU8sbUJBQW1CO0FBQUEsWUFDbkQ7QUFHQSxnQkFBSTtBQUdKLGdCQUFJLFVBQVUsU0FBUyxVQUFVO0FBRS9CLGlDQUFtQixLQUFLLFlBQVksVUFBVSxTQUFTLFVBQVUsT0FBTztBQUd4RSxrQkFBSSxpQkFBaUIsV0FBVyxHQUFHO0FBQ2pDLHVCQUFPLENBQUM7QUFBQSxjQUNWO0FBR0EseUJBQVcsbUJBQW1CLGtCQUFrQjtBQUM5QyxzQkFBTSxNQUFNLE1BQU0sUUFBUSxlQUFlO0FBQ3pDLGdCQUFBRCxRQUFPLFFBQVEsRUFBRTtBQUdqQixzQkFBTSxPQUFPLEtBQUssQ0FBQztBQUFBLGNBQ3JCO0FBQUEsWUFDRixXQUFXLFVBQVUsU0FBUyxPQUFPO0FBRW5DLGtCQUFJLFVBQVUsWUFBWSxNQUFNO0FBQzlCLHNCQUFNLE9BQU8sT0FBTyxVQUFVO0FBQUEsa0JBQzVCLFFBQVE7QUFBQSxrQkFDUixTQUFTO0FBQUEsZ0JBQ1gsQ0FBQztBQUFBLGNBQ0g7QUFHQSxvQkFBTSxJQUFJLFVBQVU7QUFHcEIsa0JBQUksQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEdBQUc7QUFDaEMsc0JBQU0sT0FBTyxPQUFPLFVBQVU7QUFBQSxrQkFDNUIsUUFBUTtBQUFBLGtCQUNSLFNBQVM7QUFBQSxnQkFDWCxDQUFDO0FBQUEsY0FDSDtBQUdBLGtCQUFJLEVBQUUsV0FBVyxPQUFPO0FBQ3RCLHNCQUFNLE9BQU8sT0FBTyxVQUFVO0FBQUEsa0JBQzVCLFFBQVE7QUFBQSxrQkFDUixTQUFTO0FBQUEsZ0JBQ1gsQ0FBQztBQUFBLGNBQ0g7QUFHQSxrQkFBSSxVQUFVLFdBQVcsTUFBTTtBQUM3QixzQkFBTSxPQUFPLE9BQU8sVUFBVTtBQUFBLGtCQUM1QixRQUFRO0FBQUEsa0JBQ1IsU0FBUztBQUFBLGdCQUNYLENBQUM7QUFBQSxjQUNIO0FBR0EsaUNBQW1CLEtBQUssWUFBWSxVQUFVLE9BQU87QUFHckQseUJBQVcsbUJBQW1CLGtCQUFrQjtBQUM5QyxzQkFBTSxNQUFNLE1BQU0sUUFBUSxlQUFlO0FBQ3pDLGdCQUFBQSxRQUFPLFFBQVEsRUFBRTtBQUdqQixzQkFBTSxPQUFPLEtBQUssQ0FBQztBQUFBLGNBQ3JCO0FBR0Esb0JBQU0sS0FBSyxDQUFDLFVBQVUsU0FBUyxVQUFVLFFBQVEsQ0FBQztBQUdsRCx5QkFBVyxLQUFLLENBQUMsVUFBVSxTQUFTLFVBQVUsUUFBUSxDQUFDO0FBQUEsWUFDekQ7QUFHQSx1QkFBVyxLQUFLLENBQUMsVUFBVSxTQUFTLFVBQVUsUUFBUSxDQUFDO0FBQUEsVUFDekQ7QUFHQSxpQkFBTztBQUFBLFFBQ1QsU0FBUyxHQUFHO0FBRVYsZUFBSyw2QkFBNkIsU0FBUztBQUczQyxlQUFLLCtCQUErQjtBQUdwQyxnQkFBTTtBQUFBLFFBQ1I7QUFBQSxNQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQVNBLFlBQWEsY0FBYyxTQUFTLGVBQWU7QUFFakQsY0FBTSxhQUFhLENBQUM7QUFFcEIsY0FBTSxVQUFVLGlCQUFpQixLQUFLO0FBRXRDLG1CQUFXLG1CQUFtQixTQUFTO0FBQ3JDLGdCQUFNLENBQUMsZUFBZSxjQUFjLElBQUk7QUFDeEMsY0FBSSxLQUFLLDBCQUEwQixjQUFjLGVBQWUsZ0JBQWdCLE9BQU8sR0FBRztBQUN4Rix1QkFBVyxLQUFLLGVBQWU7QUFBQSxVQUNqQztBQUFBLFFBQ0Y7QUFFQSxlQUFPO0FBQUEsTUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQVVBLDBCQUEyQixjQUFjQyxVQUFTLFdBQVcsTUFBTSxTQUFTO0FBSzFFLGNBQU0sV0FBVyxJQUFJLElBQUksYUFBYSxHQUFHO0FBRXpDLGNBQU0sWUFBWSxJQUFJLElBQUlBLFNBQVEsR0FBRztBQUVyQyxZQUFJLFNBQVMsY0FBYztBQUN6QixvQkFBVSxTQUFTO0FBRW5CLG1CQUFTLFNBQVM7QUFBQSxRQUNwQjtBQUVBLFlBQUksQ0FBQyxVQUFVLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDekMsaUJBQU87QUFBQSxRQUNUO0FBRUEsWUFDRSxZQUFZLFFBQ1osU0FBUyxjQUNULENBQUMsU0FBUyxZQUFZLFNBQVMsTUFBTSxHQUNyQztBQUNBLGlCQUFPO0FBQUEsUUFDVDtBQUVBLGNBQU0sY0FBYyxlQUFlLFNBQVMsWUFBWSxJQUFJLE1BQU0sQ0FBQztBQUVuRSxtQkFBVyxjQUFjLGFBQWE7QUFDcEMsY0FBSSxlQUFlLEtBQUs7QUFDdEIsbUJBQU87QUFBQSxVQUNUO0FBRUEsZ0JBQU0sZUFBZUEsU0FBUSxZQUFZLElBQUksVUFBVTtBQUN2RCxnQkFBTSxhQUFhLGFBQWEsWUFBWSxJQUFJLFVBQVU7QUFJMUQsY0FBSSxpQkFBaUIsWUFBWTtBQUMvQixtQkFBTztBQUFBLFVBQ1Q7QUFBQSxRQUNGO0FBRUEsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUVBLGtCQUFtQkEsVUFBUyxTQUFTLGVBQWUsVUFBVTtBQUU1RCxZQUFJLElBQUk7QUFHUixZQUFJQSxhQUFZLFFBQVc7QUFDekIsY0FBSUEsb0JBQW1CLFNBQVM7QUFFOUIsZ0JBQUlBLFNBQVEsTUFBTTtBQUdsQixnQkFBSSxFQUFFLFdBQVcsU0FBUyxDQUFDLFFBQVEsY0FBYztBQUMvQyxxQkFBTyxDQUFDO0FBQUEsWUFDVjtBQUFBLFVBQ0YsV0FBVyxPQUFPQSxhQUFZLFVBQVU7QUFFdEMsZ0JBQUksSUFBSSxRQUFRQSxRQUFPLEVBQUUsTUFBTTtBQUFBLFVBQ2pDO0FBQUEsUUFDRjtBQUlBLGNBQU0sWUFBWSxDQUFDO0FBR25CLFlBQUlBLGFBQVksUUFBVztBQUV6QixxQkFBVyxtQkFBbUIsS0FBSyw4QkFBOEI7QUFDL0Qsc0JBQVUsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQUEsVUFDbkM7QUFBQSxRQUNGLE9BQU87QUFFTCxnQkFBTSxtQkFBbUIsS0FBSyxZQUFZLEdBQUcsT0FBTztBQUdwRCxxQkFBVyxtQkFBbUIsa0JBQWtCO0FBQzlDLHNCQUFVLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztBQUFBLFVBQ25DO0FBQUEsUUFDRjtBQU1BLGNBQU0sZUFBZSxDQUFDO0FBR3RCLG1CQUFXLFlBQVksV0FBVztBQUVoQyxnQkFBTSxpQkFBaUIsa0JBQWtCLFVBQVUsV0FBVztBQUU5RCx1QkFBYSxLQUFLLGVBQWUsTUFBTSxDQUFDO0FBRXhDLGNBQUksYUFBYSxVQUFVLGNBQWM7QUFDdkM7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUdBLGVBQU8sT0FBTyxPQUFPLFlBQVk7QUFBQSxNQUNuQztBQUFBLElBQ0Y7QUFFQSxXQUFPLGlCQUFpQixNQUFNLFdBQVc7QUFBQSxNQUN2QyxDQUFDLE9BQU8sV0FBVyxHQUFHO0FBQUEsUUFDcEIsT0FBTztBQUFBLFFBQ1AsY0FBYztBQUFBLE1BQ2hCO0FBQUEsTUFDQSxPQUFPO0FBQUEsTUFDUCxVQUFVO0FBQUEsTUFDVixLQUFLO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixLQUFLO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsSUFDUixDQUFDO0FBRUQsUUFBTSw2QkFBNkI7QUFBQSxNQUNqQztBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVc7QUFBQSxRQUM3QixjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsY0FBYyxNQUFNO0FBQUEsTUFDdEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxLQUFLO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVztBQUFBLFFBQzdCLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsSUFDRjtBQUVBLFdBQU8sV0FBVyxvQkFBb0IsT0FBTyxvQkFBb0IsMEJBQTBCO0FBRTNGLFdBQU8sV0FBVyx5QkFBeUIsT0FBTyxvQkFBb0I7QUFBQSxNQUNwRSxHQUFHO0FBQUEsTUFDSDtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVc7QUFBQSxNQUMvQjtBQUFBLElBQ0YsQ0FBQztBQUVELFdBQU8sV0FBVyxXQUFXLE9BQU8sbUJBQW1CLFFBQVE7QUFFL0QsV0FBTyxXQUFXLHVCQUF1QixJQUFJLE9BQU87QUFBQSxNQUNsRCxPQUFPLFdBQVc7QUFBQSxJQUNwQjtBQUVBLFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDMTFCQTtBQUFBO0FBQUE7QUFFQSxRQUFNLEVBQUUsV0FBVyxJQUFJO0FBQ3ZCLFFBQU0sRUFBRSxNQUFNLElBQUk7QUFDbEIsUUFBTSxFQUFFLE9BQU8sSUFBSTtBQUNuQixRQUFNLEVBQUUsb0JBQW9CLElBQUk7QUFFaEMsUUFBTSxlQUFOLE1BQU0sY0FBYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLakIsVUFBVSxvQkFBSSxJQUFJO0FBQUEsTUFFbEIsY0FBZTtBQUNiLFlBQUksVUFBVSxDQUFDLE1BQU0sWUFBWTtBQUMvQixpQkFBTyxtQkFBbUI7QUFBQSxRQUM1QjtBQUVBLGVBQU8sS0FBSyxrQkFBa0IsSUFBSTtBQUFBLE1BQ3BDO0FBQUEsTUFFQSxNQUFNLE1BQU9DLFVBQVMsVUFBVSxDQUFDLEdBQUc7QUFDbEMsZUFBTyxXQUFXLE1BQU0sYUFBWTtBQUNwQyxlQUFPLG9CQUFvQixXQUFXLEdBQUcsb0JBQW9CO0FBRTdELFFBQUFBLFdBQVUsT0FBTyxXQUFXLFlBQVlBLFFBQU87QUFDL0Msa0JBQVUsT0FBTyxXQUFXLHVCQUF1QixPQUFPO0FBRzFELFlBQUksUUFBUSxhQUFhLE1BQU07QUFFN0IsY0FBSSxLQUFLLFFBQVEsSUFBSSxRQUFRLFNBQVMsR0FBRztBQUV2QyxrQkFBTSxZQUFZLEtBQUssUUFBUSxJQUFJLFFBQVEsU0FBUztBQUNwRCxrQkFBTSxRQUFRLElBQUksTUFBTSxZQUFZLFNBQVM7QUFFN0MsbUJBQU8sTUFBTSxNQUFNLE1BQU1BLFVBQVMsT0FBTztBQUFBLFVBQzNDO0FBQUEsUUFDRixPQUFPO0FBRUwscUJBQVcsYUFBYSxLQUFLLFFBQVEsT0FBTyxHQUFHO0FBQzdDLGtCQUFNLFFBQVEsSUFBSSxNQUFNLFlBQVksU0FBUztBQUc3QyxrQkFBTSxXQUFXLE1BQU0sTUFBTSxNQUFNQSxVQUFTLE9BQU87QUFFbkQsZ0JBQUksYUFBYSxRQUFXO0FBQzFCLHFCQUFPO0FBQUEsWUFDVDtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQU9BLE1BQU0sSUFBSyxXQUFXO0FBQ3BCLGVBQU8sV0FBVyxNQUFNLGFBQVk7QUFFcEMsY0FBTSxTQUFTO0FBQ2YsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLE1BQU07QUFFL0Msb0JBQVksT0FBTyxXQUFXLFVBQVUsV0FBVyxRQUFRLFdBQVc7QUFJdEUsZUFBTyxLQUFLLFFBQVEsSUFBSSxTQUFTO0FBQUEsTUFDbkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFPQSxNQUFNLEtBQU0sV0FBVztBQUNyQixlQUFPLFdBQVcsTUFBTSxhQUFZO0FBRXBDLGNBQU0sU0FBUztBQUNmLGVBQU8sb0JBQW9CLFdBQVcsR0FBRyxNQUFNO0FBRS9DLG9CQUFZLE9BQU8sV0FBVyxVQUFVLFdBQVcsUUFBUSxXQUFXO0FBR3RFLFlBQUksS0FBSyxRQUFRLElBQUksU0FBUyxHQUFHO0FBSS9CLGdCQUFNQyxTQUFRLEtBQUssUUFBUSxJQUFJLFNBQVM7QUFHeEMsaUJBQU8sSUFBSSxNQUFNLFlBQVlBLE1BQUs7QUFBQSxRQUNwQztBQUdBLGNBQU0sUUFBUSxDQUFDO0FBR2YsYUFBSyxRQUFRLElBQUksV0FBVyxLQUFLO0FBR2pDLGVBQU8sSUFBSSxNQUFNLFlBQVksS0FBSztBQUFBLE1BQ3BDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BT0EsTUFBTSxPQUFRLFdBQVc7QUFDdkIsZUFBTyxXQUFXLE1BQU0sYUFBWTtBQUVwQyxjQUFNLFNBQVM7QUFDZixlQUFPLG9CQUFvQixXQUFXLEdBQUcsTUFBTTtBQUUvQyxvQkFBWSxPQUFPLFdBQVcsVUFBVSxXQUFXLFFBQVEsV0FBVztBQUV0RSxlQUFPLEtBQUssUUFBUSxPQUFPLFNBQVM7QUFBQSxNQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFNQSxNQUFNLE9BQVE7QUFDWixlQUFPLFdBQVcsTUFBTSxhQUFZO0FBR3BDLGNBQU0sT0FBTyxLQUFLLFFBQVEsS0FBSztBQUcvQixlQUFPLENBQUMsR0FBRyxJQUFJO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBRUEsV0FBTyxpQkFBaUIsYUFBYSxXQUFXO0FBQUEsTUFDOUMsQ0FBQyxPQUFPLFdBQVcsR0FBRztBQUFBLFFBQ3BCLE9BQU87QUFBQSxRQUNQLGNBQWM7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsT0FBTztBQUFBLE1BQ1AsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUVELFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDdkpBLElBQUFDLHFCQUFBO0FBQUE7QUFBQTtBQUdBLFFBQU0sd0JBQXdCO0FBRzlCLFFBQU0sdUJBQXVCO0FBRTdCLFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ1hBLElBQUFDLGdCQUFBO0FBQUE7QUFBQTtBQU1BLGFBQVMsbUJBQW9CLE9BQU87QUFDbEMsZUFBUyxJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsRUFBRSxHQUFHO0FBQ3JDLGNBQU0sT0FBTyxNQUFNLFdBQVcsQ0FBQztBQUUvQixZQUNHLFFBQVEsS0FBUSxRQUFRLEtBQ3hCLFFBQVEsTUFBUSxRQUFRLE1BQ3pCLFNBQVMsS0FDVDtBQUNBLGlCQUFPO0FBQUEsUUFDVDtBQUFBLE1BQ0Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQVdBLGFBQVMsbUJBQW9CLE1BQU07QUFDakMsZUFBUyxJQUFJLEdBQUcsSUFBSSxLQUFLLFFBQVEsRUFBRSxHQUFHO0FBQ3BDLGNBQU0sT0FBTyxLQUFLLFdBQVcsQ0FBQztBQUU5QixZQUNFLE9BQU87QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVMsS0FDVDtBQUNBLGdCQUFNLElBQUksTUFBTSxxQkFBcUI7QUFBQSxRQUN2QztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBVUEsYUFBUyxvQkFBcUIsT0FBTztBQUNuQyxVQUFJLE1BQU0sTUFBTTtBQUNoQixVQUFJLElBQUk7QUFHUixVQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUs7QUFDcEIsWUFBSSxRQUFRLEtBQUssTUFBTSxNQUFNLENBQUMsTUFBTSxLQUFLO0FBQ3ZDLGdCQUFNLElBQUksTUFBTSxzQkFBc0I7QUFBQSxRQUN4QztBQUNBLFVBQUU7QUFDRixVQUFFO0FBQUEsTUFDSjtBQUVBLGFBQU8sSUFBSSxLQUFLO0FBQ2QsY0FBTSxPQUFPLE1BQU0sV0FBVyxHQUFHO0FBRWpDLFlBQ0UsT0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLFFBQ1QsU0FBUyxJQUNUO0FBQ0EsZ0JBQU0sSUFBSSxNQUFNLHNCQUFzQjtBQUFBLFFBQ3hDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFNQSxhQUFTLG1CQUFvQkMsT0FBTTtBQUNqQyxlQUFTLElBQUksR0FBRyxJQUFJQSxNQUFLLFFBQVEsRUFBRSxHQUFHO0FBQ3BDLGNBQU0sT0FBT0EsTUFBSyxXQUFXLENBQUM7QUFFOUIsWUFDRSxPQUFPO0FBQUEsUUFDUCxTQUFTO0FBQUEsUUFDVCxTQUFTLElBQ1Q7QUFDQSxnQkFBTSxJQUFJLE1BQU0scUJBQXFCO0FBQUEsUUFDdkM7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQU9BLGFBQVMscUJBQXNCLFFBQVE7QUFDckMsVUFDRSxPQUFPLFdBQVcsR0FBRyxLQUNyQixPQUFPLFNBQVMsR0FBRyxLQUNuQixPQUFPLFNBQVMsR0FBRyxHQUNuQjtBQUNBLGNBQU0sSUFBSSxNQUFNLHVCQUF1QjtBQUFBLE1BQ3pDO0FBQUEsSUFDRjtBQUVBLFFBQU0sVUFBVTtBQUFBLE1BQ2Q7QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUNyQjtBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsSUFDaEI7QUFFQSxRQUFNLFlBQVk7QUFBQSxNQUNoQjtBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFDbkM7QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLE1BQU87QUFBQSxNQUFPO0FBQUEsTUFBTztBQUFBLElBQ3JDO0FBRUEsUUFBTSxtQkFBbUIsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBMkN0RixhQUFTLFVBQVcsTUFBTTtBQUN4QixVQUFJLE9BQU8sU0FBUyxVQUFVO0FBQzVCLGVBQU8sSUFBSSxLQUFLLElBQUk7QUFBQSxNQUN0QjtBQUVBLGFBQU8sR0FBRyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsS0FBSyxpQkFBaUIsS0FBSyxXQUFXLENBQUMsQ0FBQyxJQUFJLFVBQVUsS0FBSyxZQUFZLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLElBQUksaUJBQWlCLEtBQUssWUFBWSxDQUFDLENBQUMsSUFBSSxpQkFBaUIsS0FBSyxjQUFjLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixLQUFLLGNBQWMsQ0FBQyxDQUFDO0FBQUEsSUFDblE7QUFTQSxhQUFTLHFCQUFzQixRQUFRO0FBQ3JDLFVBQUksU0FBUyxHQUFHO0FBQ2QsY0FBTSxJQUFJLE1BQU0sd0JBQXdCO0FBQUEsTUFDMUM7QUFBQSxJQUNGO0FBTUEsYUFBUyxVQUFXLFFBQVE7QUFDMUIsVUFBSSxPQUFPLEtBQUssV0FBVyxHQUFHO0FBQzVCLGVBQU87QUFBQSxNQUNUO0FBRUEseUJBQW1CLE9BQU8sSUFBSTtBQUM5QiwwQkFBb0IsT0FBTyxLQUFLO0FBRWhDLFlBQU0sTUFBTSxDQUFDLEdBQUcsT0FBTyxJQUFJLElBQUksT0FBTyxLQUFLLEVBQUU7QUFJN0MsVUFBSSxPQUFPLEtBQUssV0FBVyxXQUFXLEdBQUc7QUFDdkMsZUFBTyxTQUFTO0FBQUEsTUFDbEI7QUFFQSxVQUFJLE9BQU8sS0FBSyxXQUFXLFNBQVMsR0FBRztBQUNyQyxlQUFPLFNBQVM7QUFDaEIsZUFBTyxTQUFTO0FBQ2hCLGVBQU8sT0FBTztBQUFBLE1BQ2hCO0FBRUEsVUFBSSxPQUFPLFFBQVE7QUFDakIsWUFBSSxLQUFLLFFBQVE7QUFBQSxNQUNuQjtBQUVBLFVBQUksT0FBTyxVQUFVO0FBQ25CLFlBQUksS0FBSyxVQUFVO0FBQUEsTUFDckI7QUFFQSxVQUFJLE9BQU8sT0FBTyxXQUFXLFVBQVU7QUFDckMsNkJBQXFCLE9BQU8sTUFBTTtBQUNsQyxZQUFJLEtBQUssV0FBVyxPQUFPLE1BQU0sRUFBRTtBQUFBLE1BQ3JDO0FBRUEsVUFBSSxPQUFPLFFBQVE7QUFDakIsNkJBQXFCLE9BQU8sTUFBTTtBQUNsQyxZQUFJLEtBQUssVUFBVSxPQUFPLE1BQU0sRUFBRTtBQUFBLE1BQ3BDO0FBRUEsVUFBSSxPQUFPLE1BQU07QUFDZiwyQkFBbUIsT0FBTyxJQUFJO0FBQzlCLFlBQUksS0FBSyxRQUFRLE9BQU8sSUFBSSxFQUFFO0FBQUEsTUFDaEM7QUFFQSxVQUFJLE9BQU8sV0FBVyxPQUFPLFFBQVEsU0FBUyxNQUFNLGdCQUFnQjtBQUNsRSxZQUFJLEtBQUssV0FBVyxVQUFVLE9BQU8sT0FBTyxDQUFDLEVBQUU7QUFBQSxNQUNqRDtBQUVBLFVBQUksT0FBTyxVQUFVO0FBQ25CLFlBQUksS0FBSyxZQUFZLE9BQU8sUUFBUSxFQUFFO0FBQUEsTUFDeEM7QUFFQSxpQkFBVyxRQUFRLE9BQU8sVUFBVTtBQUNsQyxZQUFJLENBQUMsS0FBSyxTQUFTLEdBQUcsR0FBRztBQUN2QixnQkFBTSxJQUFJLE1BQU0sa0JBQWtCO0FBQUEsUUFDcEM7QUFFQSxjQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxLQUFLLE1BQU0sR0FBRztBQUV0QyxZQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRTtBQUFBLE1BQzdDO0FBRUEsYUFBTyxJQUFJLEtBQUssSUFBSTtBQUFBLElBQ3RCO0FBRUEsV0FBTyxVQUFVO0FBQUEsTUFDZjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ3pSQTtBQUFBO0FBQUE7QUFFQSxRQUFNLEVBQUUsc0JBQXNCLHNCQUFzQixJQUFJO0FBQ3hELFFBQU0sRUFBRSxtQkFBbUIsSUFBSTtBQUMvQixRQUFNLEVBQUUsaUNBQWlDLElBQUk7QUFDN0MsUUFBTUMsVUFBUyxVQUFRLGFBQWE7QUFRcEMsYUFBUyxlQUFnQixRQUFRO0FBSS9CLFVBQUksbUJBQW1CLE1BQU0sR0FBRztBQUM5QixlQUFPO0FBQUEsTUFDVDtBQUVBLFVBQUksZ0JBQWdCO0FBQ3BCLFVBQUkscUJBQXFCO0FBQ3pCLFVBQUksT0FBTztBQUNYLFVBQUksUUFBUTtBQUdaLFVBQUksT0FBTyxTQUFTLEdBQUcsR0FBRztBQUt4QixjQUFNLFdBQVcsRUFBRSxVQUFVLEVBQUU7QUFFL0Isd0JBQWdCLGlDQUFpQyxLQUFLLFFBQVEsUUFBUTtBQUN0RSw2QkFBcUIsT0FBTyxNQUFNLFNBQVMsUUFBUTtBQUFBLE1BQ3JELE9BQU87QUFNTCx3QkFBZ0I7QUFBQSxNQUNsQjtBQUtBLFVBQUksQ0FBQyxjQUFjLFNBQVMsR0FBRyxHQUFHO0FBQ2hDLGdCQUFRO0FBQUEsTUFDVixPQUFPO0FBS0wsY0FBTSxXQUFXLEVBQUUsVUFBVSxFQUFFO0FBQy9CLGVBQU87QUFBQSxVQUNMO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxRQUNGO0FBQ0EsZ0JBQVEsY0FBYyxNQUFNLFNBQVMsV0FBVyxDQUFDO0FBQUEsTUFDbkQ7QUFJQSxhQUFPLEtBQUssS0FBSztBQUNqQixjQUFRLE1BQU0sS0FBSztBQUtuQixVQUFJLEtBQUssU0FBUyxNQUFNLFNBQVMsc0JBQXNCO0FBQ3JELGVBQU87QUFBQSxNQUNUO0FBSUEsYUFBTztBQUFBLFFBQ0w7QUFBQSxRQUFNO0FBQUEsUUFBTyxHQUFHLHdCQUF3QixrQkFBa0I7QUFBQSxNQUM1RDtBQUFBLElBQ0Y7QUFRQSxhQUFTLHdCQUF5QixvQkFBb0Isc0JBQXNCLENBQUMsR0FBRztBQUc5RSxVQUFJLG1CQUFtQixXQUFXLEdBQUc7QUFDbkMsZUFBTztBQUFBLE1BQ1Q7QUFJQSxNQUFBQSxRQUFPLG1CQUFtQixDQUFDLE1BQU0sR0FBRztBQUNwQywyQkFBcUIsbUJBQW1CLE1BQU0sQ0FBQztBQUUvQyxVQUFJLFdBQVc7QUFJZixVQUFJLG1CQUFtQixTQUFTLEdBQUcsR0FBRztBQUdwQyxtQkFBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBO0FBQUEsVUFDQSxFQUFFLFVBQVUsRUFBRTtBQUFBLFFBQ2hCO0FBQ0EsNkJBQXFCLG1CQUFtQixNQUFNLFNBQVMsTUFBTTtBQUFBLE1BQy9ELE9BQU87QUFJTCxtQkFBVztBQUNYLDZCQUFxQjtBQUFBLE1BQ3ZCO0FBSUEsVUFBSSxnQkFBZ0I7QUFDcEIsVUFBSSxpQkFBaUI7QUFHckIsVUFBSSxTQUFTLFNBQVMsR0FBRyxHQUFHO0FBTTFCLGNBQU0sV0FBVyxFQUFFLFVBQVUsRUFBRTtBQUUvQix3QkFBZ0I7QUFBQSxVQUNkO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxRQUNGO0FBQ0EseUJBQWlCLFNBQVMsTUFBTSxTQUFTLFdBQVcsQ0FBQztBQUFBLE1BQ3ZELE9BQU87QUFLTCx3QkFBZ0I7QUFBQSxNQUNsQjtBQUlBLHNCQUFnQixjQUFjLEtBQUs7QUFDbkMsdUJBQWlCLGVBQWUsS0FBSztBQUlyQyxVQUFJLGVBQWUsU0FBUyx1QkFBdUI7QUFDakQsZUFBTyx3QkFBd0Isb0JBQW9CLG1CQUFtQjtBQUFBLE1BQ3hFO0FBS0EsWUFBTSx5QkFBeUIsY0FBYyxZQUFZO0FBS3pELFVBQUksMkJBQTJCLFdBQVc7QUFHeEMsY0FBTSxhQUFhLElBQUksS0FBSyxjQUFjO0FBSzFDLDRCQUFvQixVQUFVO0FBQUEsTUFDaEMsV0FBVywyQkFBMkIsV0FBVztBQU8vQyxjQUFNLFdBQVcsZUFBZSxXQUFXLENBQUM7QUFFNUMsYUFBSyxXQUFXLE1BQU0sV0FBVyxPQUFPLGVBQWUsQ0FBQyxNQUFNLEtBQUs7QUFDakUsaUJBQU8sd0JBQXdCLG9CQUFvQixtQkFBbUI7QUFBQSxRQUN4RTtBQUlBLFlBQUksQ0FBQyxRQUFRLEtBQUssY0FBYyxHQUFHO0FBQ2pDLGlCQUFPLHdCQUF3QixvQkFBb0IsbUJBQW1CO0FBQUEsUUFDeEU7QUFHQSxjQUFNLGVBQWUsT0FBTyxjQUFjO0FBaUIxQyw0QkFBb0IsU0FBUztBQUFBLE1BQy9CLFdBQVcsMkJBQTJCLFVBQVU7QUFNOUMsWUFBSSxlQUFlO0FBSW5CLFlBQUksYUFBYSxDQUFDLE1BQU0sS0FBSztBQUMzQix5QkFBZSxhQUFhLE1BQU0sQ0FBQztBQUFBLFFBQ3JDO0FBR0EsdUJBQWUsYUFBYSxZQUFZO0FBSXhDLDRCQUFvQixTQUFTO0FBQUEsTUFDL0IsV0FBVywyQkFBMkIsUUFBUTtBQU81QyxZQUFJLGFBQWE7QUFDakIsWUFBSSxlQUFlLFdBQVcsS0FBSyxlQUFlLENBQUMsTUFBTSxLQUFLO0FBRTVELHVCQUFhO0FBQUEsUUFDZixPQUFPO0FBSUwsdUJBQWE7QUFBQSxRQUNmO0FBSUEsNEJBQW9CLE9BQU87QUFBQSxNQUM3QixXQUFXLDJCQUEyQixVQUFVO0FBTTlDLDRCQUFvQixTQUFTO0FBQUEsTUFDL0IsV0FBVywyQkFBMkIsWUFBWTtBQU9oRCw0QkFBb0IsV0FBVztBQUFBLE1BQ2pDLFdBQVcsMkJBQTJCLFlBQVk7QUFNaEQsWUFBSSxjQUFjO0FBRWxCLGNBQU0sMEJBQTBCLGVBQWUsWUFBWTtBQUczRCxZQUFJLHdCQUF3QixTQUFTLE1BQU0sR0FBRztBQUM1Qyx3QkFBYztBQUFBLFFBQ2hCO0FBSUEsWUFBSSx3QkFBd0IsU0FBUyxRQUFRLEdBQUc7QUFDOUMsd0JBQWM7QUFBQSxRQUNoQjtBQUlBLFlBQUksd0JBQXdCLFNBQVMsS0FBSyxHQUFHO0FBQzNDLHdCQUFjO0FBQUEsUUFDaEI7QUFLQSw0QkFBb0IsV0FBVztBQUFBLE1BQ2pDLE9BQU87QUFDTCw0QkFBb0IsYUFBYSxDQUFDO0FBRWxDLDRCQUFvQixTQUFTLEtBQUssR0FBRyxhQUFhLElBQUksY0FBYyxFQUFFO0FBQUEsTUFDeEU7QUFHQSxhQUFPLHdCQUF3QixvQkFBb0IsbUJBQW1CO0FBQUEsSUFDeEU7QUFFQSxXQUFPLFVBQVU7QUFBQSxNQUNmO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUM1VEE7QUFBQTtBQUFBO0FBRUEsUUFBTSxFQUFFLGVBQWUsSUFBSTtBQUMzQixRQUFNLEVBQUUsVUFBVSxJQUFJO0FBQ3RCLFFBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBTSxFQUFFLFNBQUFDLFNBQVEsSUFBSTtBQW9CcEIsYUFBUyxXQUFZLFNBQVM7QUFDNUIsYUFBTyxvQkFBb0IsV0FBVyxHQUFHLFlBQVk7QUFFckQsYUFBTyxXQUFXLFNBQVNBLFVBQVMsRUFBRSxRQUFRLE1BQU0sQ0FBQztBQUVyRCxZQUFNLFNBQVMsUUFBUSxJQUFJLFFBQVE7QUFDbkMsWUFBTSxNQUFNLENBQUM7QUFFYixVQUFJLENBQUMsUUFBUTtBQUNYLGVBQU87QUFBQSxNQUNUO0FBRUEsaUJBQVcsU0FBUyxPQUFPLE1BQU0sR0FBRyxHQUFHO0FBQ3JDLGNBQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLE1BQU0sTUFBTSxHQUFHO0FBRXhDLFlBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxNQUFNLEtBQUssR0FBRztBQUFBLE1BQ25DO0FBRUEsYUFBTztBQUFBLElBQ1Q7QUFRQSxhQUFTLGFBQWMsU0FBUyxNQUFNLFlBQVk7QUFDaEQsYUFBTyxXQUFXLFNBQVNBLFVBQVMsRUFBRSxRQUFRLE1BQU0sQ0FBQztBQUVyRCxZQUFNLFNBQVM7QUFDZixhQUFPLG9CQUFvQixXQUFXLEdBQUcsTUFBTTtBQUUvQyxhQUFPLE9BQU8sV0FBVyxVQUFVLE1BQU0sUUFBUSxNQUFNO0FBQ3ZELG1CQUFhLE9BQU8sV0FBVyx1QkFBdUIsVUFBVTtBQUloRSxnQkFBVSxTQUFTO0FBQUEsUUFDakI7QUFBQSxRQUNBLE9BQU87QUFBQSxRQUNQLFNBQVMsb0JBQUksS0FBSyxDQUFDO0FBQUEsUUFDbkIsR0FBRztBQUFBLE1BQ0wsQ0FBQztBQUFBLElBQ0g7QUFNQSxhQUFTLGNBQWUsU0FBUztBQUMvQixhQUFPLG9CQUFvQixXQUFXLEdBQUcsZUFBZTtBQUV4RCxhQUFPLFdBQVcsU0FBU0EsVUFBUyxFQUFFLFFBQVEsTUFBTSxDQUFDO0FBRXJELFlBQU0sVUFBVSxRQUFRLGFBQWE7QUFFckMsVUFBSSxDQUFDLFNBQVM7QUFDWixlQUFPLENBQUM7QUFBQSxNQUNWO0FBRUEsYUFBTyxRQUFRLElBQUksQ0FBQyxTQUFTLGVBQWUsSUFBSSxDQUFDO0FBQUEsSUFDbkQ7QUFPQSxhQUFTLFVBQVcsU0FBUyxRQUFRO0FBQ25DLGFBQU8sb0JBQW9CLFdBQVcsR0FBRyxXQUFXO0FBRXBELGFBQU8sV0FBVyxTQUFTQSxVQUFTLEVBQUUsUUFBUSxNQUFNLENBQUM7QUFFckQsZUFBUyxPQUFPLFdBQVcsT0FBTyxNQUFNO0FBRXhDLFlBQU0sTUFBTSxVQUFVLE1BQU07QUFFNUIsVUFBSSxLQUFLO0FBQ1AsZ0JBQVEsT0FBTyxjQUFjLEdBQUc7QUFBQSxNQUNsQztBQUFBLElBQ0Y7QUFFQSxXQUFPLFdBQVcseUJBQXlCLE9BQU8sb0JBQW9CO0FBQUEsTUFDcEU7QUFBQSxRQUNFLFdBQVcsT0FBTyxrQkFBa0IsT0FBTyxXQUFXLFNBQVM7QUFBQSxRQUMvRCxLQUFLO0FBQUEsUUFDTCxjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLFdBQVcsT0FBTyxrQkFBa0IsT0FBTyxXQUFXLFNBQVM7QUFBQSxRQUMvRCxLQUFLO0FBQUEsUUFDTCxjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLElBQ0YsQ0FBQztBQUVELFdBQU8sV0FBVyxTQUFTLE9BQU8sb0JBQW9CO0FBQUEsTUFDcEQ7QUFBQSxRQUNFLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsS0FBSztBQUFBLE1BQ1A7QUFBQSxNQUNBO0FBQUEsUUFDRSxXQUFXLE9BQU8sV0FBVztBQUFBLFFBQzdCLEtBQUs7QUFBQSxNQUNQO0FBQUEsTUFDQTtBQUFBLFFBQ0UsV0FBVyxPQUFPLGtCQUFrQixDQUFDLFVBQVU7QUFDN0MsY0FBSSxPQUFPLFVBQVUsVUFBVTtBQUM3QixtQkFBTyxPQUFPLFdBQVcsb0JBQW9CLEVBQUUsS0FBSztBQUFBLFVBQ3REO0FBRUEsaUJBQU8sSUFBSSxLQUFLLEtBQUs7QUFBQSxRQUN2QixDQUFDO0FBQUEsUUFDRCxLQUFLO0FBQUEsUUFDTCxjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLFdBQVcsT0FBTyxrQkFBa0IsT0FBTyxXQUFXLFdBQVcsQ0FBQztBQUFBLFFBQ2xFLEtBQUs7QUFBQSxRQUNMLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsV0FBVyxPQUFPLGtCQUFrQixPQUFPLFdBQVcsU0FBUztBQUFBLFFBQy9ELEtBQUs7QUFBQSxRQUNMLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsV0FBVyxPQUFPLGtCQUFrQixPQUFPLFdBQVcsU0FBUztBQUFBLFFBQy9ELEtBQUs7QUFBQSxRQUNMLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsV0FBVyxPQUFPLGtCQUFrQixPQUFPLFdBQVcsT0FBTztBQUFBLFFBQzdELEtBQUs7QUFBQSxRQUNMLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsV0FBVyxPQUFPLGtCQUFrQixPQUFPLFdBQVcsT0FBTztBQUFBLFFBQzdELEtBQUs7QUFBQSxRQUNMLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsV0FBVyxPQUFPLFdBQVc7QUFBQSxRQUM3QixLQUFLO0FBQUEsUUFDTCxlQUFlLENBQUMsVUFBVSxPQUFPLE1BQU07QUFBQSxNQUN6QztBQUFBLE1BQ0E7QUFBQSxRQUNFLFdBQVcsT0FBTyxrQkFBa0IsT0FBTyxXQUFXLFNBQVM7QUFBQSxRQUMvRCxLQUFLO0FBQUEsUUFDTCxjQUFjLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFBQSxNQUNqQztBQUFBLElBQ0YsQ0FBQztBQUVELFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDdkxBO0FBQUE7QUFBQTtBQUVBLFFBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBTSxFQUFFLG9CQUFvQixJQUFJO0FBQ2hDLFFBQU0sRUFBRSxXQUFXLElBQUk7QUFDdkIsUUFBTSxFQUFFLFlBQVksSUFBSSxVQUFRLHFCQUFxQjtBQUtyRCxRQUFNLGVBQU4sTUFBTSxzQkFBcUIsTUFBTTtBQUFBLE1BQy9CO0FBQUEsTUFFQSxZQUFhLE1BQU0sZ0JBQWdCLENBQUMsR0FBRztBQUNyQyxZQUFJLFNBQVMsWUFBWTtBQUN2QixnQkFBTSxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUNoQyxpQkFBTyxLQUFLLGtCQUFrQixJQUFJO0FBQ2xDO0FBQUEsUUFDRjtBQUVBLGNBQU0sU0FBUztBQUNmLGVBQU8sb0JBQW9CLFdBQVcsR0FBRyxNQUFNO0FBRS9DLGVBQU8sT0FBTyxXQUFXLFVBQVUsTUFBTSxRQUFRLE1BQU07QUFDdkQsd0JBQWdCLE9BQU8sV0FBVyxpQkFBaUIsZUFBZSxRQUFRLGVBQWU7QUFFekYsY0FBTSxNQUFNLGFBQWE7QUFFekIsYUFBSyxhQUFhO0FBQ2xCLGVBQU8sS0FBSyxrQkFBa0IsSUFBSTtBQUFBLE1BQ3BDO0FBQUEsTUFFQSxJQUFJLE9BQVE7QUFDVixlQUFPLFdBQVcsTUFBTSxhQUFZO0FBRXBDLGVBQU8sS0FBSyxXQUFXO0FBQUEsTUFDekI7QUFBQSxNQUVBLElBQUksU0FBVTtBQUNaLGVBQU8sV0FBVyxNQUFNLGFBQVk7QUFFcEMsZUFBTyxLQUFLLFdBQVc7QUFBQSxNQUN6QjtBQUFBLE1BRUEsSUFBSSxjQUFlO0FBQ2pCLGVBQU8sV0FBVyxNQUFNLGFBQVk7QUFFcEMsZUFBTyxLQUFLLFdBQVc7QUFBQSxNQUN6QjtBQUFBLE1BRUEsSUFBSSxTQUFVO0FBQ1osZUFBTyxXQUFXLE1BQU0sYUFBWTtBQUVwQyxlQUFPLEtBQUssV0FBVztBQUFBLE1BQ3pCO0FBQUEsTUFFQSxJQUFJLFFBQVM7QUFDWCxlQUFPLFdBQVcsTUFBTSxhQUFZO0FBRXBDLFlBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLEtBQUssR0FBRztBQUMzQyxpQkFBTyxPQUFPLEtBQUssV0FBVyxLQUFLO0FBQUEsUUFDckM7QUFFQSxlQUFPLEtBQUssV0FBVztBQUFBLE1BQ3pCO0FBQUEsTUFFQSxpQkFDRSxNQUNBLFVBQVUsT0FDVixhQUFhLE9BQ2IsT0FBTyxNQUNQLFNBQVMsSUFDVCxjQUFjLElBQ2QsU0FBUyxNQUNULFFBQVEsQ0FBQyxHQUNUO0FBQ0EsZUFBTyxXQUFXLE1BQU0sYUFBWTtBQUVwQyxlQUFPLG9CQUFvQixXQUFXLEdBQUcsK0JBQStCO0FBRXhFLGVBQU8sSUFBSSxjQUFhLE1BQU07QUFBQSxVQUM1QjtBQUFBLFVBQVM7QUFBQSxVQUFZO0FBQUEsVUFBTTtBQUFBLFVBQVE7QUFBQSxVQUFhO0FBQUEsVUFBUTtBQUFBLFFBQzFELENBQUM7QUFBQSxNQUNIO0FBQUEsTUFFQSxPQUFPLHVCQUF3QixNQUFNLE1BQU07QUFDekMsY0FBTSxlQUFlLElBQUksY0FBYSxZQUFZLE1BQU0sSUFBSTtBQUM1RCxxQkFBYSxhQUFhO0FBQzFCLHFCQUFhLFdBQVcsU0FBUztBQUNqQyxxQkFBYSxXQUFXLFdBQVc7QUFDbkMscUJBQWEsV0FBVyxnQkFBZ0I7QUFDeEMscUJBQWEsV0FBVyxXQUFXO0FBQ25DLHFCQUFhLFdBQVcsVUFBVSxDQUFDO0FBQ25DLGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUVBLFFBQU0sRUFBRSx1QkFBdUIsSUFBSTtBQUNuQyxXQUFPLGFBQWE7QUFLcEIsUUFBTSxhQUFOLE1BQU0sb0JBQW1CLE1BQU07QUFBQSxNQUM3QjtBQUFBLE1BRUEsWUFBYSxNQUFNLGdCQUFnQixDQUFDLEdBQUc7QUFDckMsY0FBTSxTQUFTO0FBQ2YsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLE1BQU07QUFFL0MsZUFBTyxPQUFPLFdBQVcsVUFBVSxNQUFNLFFBQVEsTUFBTTtBQUN2RCx3QkFBZ0IsT0FBTyxXQUFXLGVBQWUsYUFBYTtBQUU5RCxjQUFNLE1BQU0sYUFBYTtBQUV6QixhQUFLLGFBQWE7QUFDbEIsZUFBTyxLQUFLLGtCQUFrQixJQUFJO0FBQUEsTUFDcEM7QUFBQSxNQUVBLElBQUksV0FBWTtBQUNkLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxLQUFLLFdBQVc7QUFBQSxNQUN6QjtBQUFBLE1BRUEsSUFBSSxPQUFRO0FBQ1YsZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxlQUFPLEtBQUssV0FBVztBQUFBLE1BQ3pCO0FBQUEsTUFFQSxJQUFJLFNBQVU7QUFDWixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBRWxDLGVBQU8sS0FBSyxXQUFXO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBR0EsUUFBTSxhQUFOLE1BQU0sb0JBQW1CLE1BQU07QUFBQSxNQUM3QjtBQUFBLE1BRUEsWUFBYSxNQUFNLGVBQWU7QUFDaEMsY0FBTSxTQUFTO0FBQ2YsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLE1BQU07QUFFL0MsY0FBTSxNQUFNLGFBQWE7QUFDekIsZUFBTyxLQUFLLGtCQUFrQixJQUFJO0FBRWxDLGVBQU8sT0FBTyxXQUFXLFVBQVUsTUFBTSxRQUFRLE1BQU07QUFDdkQsd0JBQWdCLE9BQU8sV0FBVyxlQUFlLGlCQUFpQixDQUFDLENBQUM7QUFFcEUsYUFBSyxhQUFhO0FBQUEsTUFDcEI7QUFBQSxNQUVBLElBQUksVUFBVztBQUNiLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxLQUFLLFdBQVc7QUFBQSxNQUN6QjtBQUFBLE1BRUEsSUFBSSxXQUFZO0FBQ2QsZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxlQUFPLEtBQUssV0FBVztBQUFBLE1BQ3pCO0FBQUEsTUFFQSxJQUFJLFNBQVU7QUFDWixlQUFPLFdBQVcsTUFBTSxXQUFVO0FBRWxDLGVBQU8sS0FBSyxXQUFXO0FBQUEsTUFDekI7QUFBQSxNQUVBLElBQUksUUFBUztBQUNYLGVBQU8sV0FBVyxNQUFNLFdBQVU7QUFFbEMsZUFBTyxLQUFLLFdBQVc7QUFBQSxNQUN6QjtBQUFBLE1BRUEsSUFBSSxRQUFTO0FBQ1gsZUFBTyxXQUFXLE1BQU0sV0FBVTtBQUVsQyxlQUFPLEtBQUssV0FBVztBQUFBLE1BQ3pCO0FBQUEsSUFDRjtBQUVBLFdBQU8saUJBQWlCLGFBQWEsV0FBVztBQUFBLE1BQzlDLENBQUMsT0FBTyxXQUFXLEdBQUc7QUFBQSxRQUNwQixPQUFPO0FBQUEsUUFDUCxjQUFjO0FBQUEsTUFDaEI7QUFBQSxNQUNBLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLGFBQWE7QUFBQSxNQUNiLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLGtCQUFrQjtBQUFBLElBQ3BCLENBQUM7QUFFRCxXQUFPLGlCQUFpQixXQUFXLFdBQVc7QUFBQSxNQUM1QyxDQUFDLE9BQU8sV0FBVyxHQUFHO0FBQUEsUUFDcEIsT0FBTztBQUFBLFFBQ1AsY0FBYztBQUFBLE1BQ2hCO0FBQUEsTUFDQSxRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsTUFDTixVQUFVO0FBQUEsSUFDWixDQUFDO0FBRUQsV0FBTyxpQkFBaUIsV0FBVyxXQUFXO0FBQUEsTUFDNUMsQ0FBQyxPQUFPLFdBQVcsR0FBRztBQUFBLFFBQ3BCLE9BQU87QUFBQSxRQUNQLGNBQWM7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsUUFBUTtBQUFBLE1BQ1IsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLElBQ1QsQ0FBQztBQUVELFdBQU8sV0FBVyxjQUFjLE9BQU8sbUJBQW1CLFdBQVc7QUFFckUsV0FBTyxXQUFXLHVCQUF1QixJQUFJLE9BQU87QUFBQSxNQUNsRCxPQUFPLFdBQVc7QUFBQSxJQUNwQjtBQUVBLFFBQU0sWUFBWTtBQUFBLE1BQ2hCO0FBQUEsUUFDRSxLQUFLO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVztBQUFBLFFBQzdCLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVc7QUFBQSxRQUM3QixjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsY0FBYyxNQUFNO0FBQUEsTUFDdEI7QUFBQSxJQUNGO0FBRUEsV0FBTyxXQUFXLG1CQUFtQixPQUFPLG9CQUFvQjtBQUFBLE1BQzlELEdBQUc7QUFBQSxNQUNIO0FBQUEsUUFDRSxLQUFLO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVztBQUFBLFFBQzdCLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVc7QUFBQSxRQUM3QixjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsY0FBYyxNQUFNO0FBQUEsTUFDdEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxLQUFLO0FBQUE7QUFBQTtBQUFBLFFBR0wsV0FBVyxPQUFPLGtCQUFrQixPQUFPLFdBQVcsV0FBVztBQUFBLFFBQ2pFLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVcsdUJBQXVCO0FBQUEsUUFDcEQsY0FBYyxNQUFNLElBQUksTUFBTSxDQUFDO0FBQUEsTUFDakM7QUFBQSxJQUNGLENBQUM7QUFFRCxXQUFPLFdBQVcsaUJBQWlCLE9BQU8sb0JBQW9CO0FBQUEsTUFDNUQsR0FBRztBQUFBLE1BQ0g7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsY0FBYyxNQUFNO0FBQUEsTUFDdEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxLQUFLO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVyxnQkFBZ0I7QUFBQSxRQUM3QyxjQUFjLE1BQU07QUFBQSxNQUN0QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsY0FBYyxNQUFNO0FBQUEsTUFDdEI7QUFBQSxJQUNGLENBQUM7QUFFRCxXQUFPLFdBQVcsaUJBQWlCLE9BQU8sb0JBQW9CO0FBQUEsTUFDNUQsR0FBRztBQUFBLE1BQ0g7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsY0FBYyxNQUFNO0FBQUEsTUFDdEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxLQUFLO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVztBQUFBLFFBQzdCLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVcsZUFBZTtBQUFBLFFBQzVDLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVcsZUFBZTtBQUFBLFFBQzVDLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLFdBQVc7QUFBQSxNQUMvQjtBQUFBLElBQ0YsQ0FBQztBQUVELFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDeFVBLElBQUFDLHFCQUFBO0FBQUE7QUFBQTtBQU1BLFFBQU0sTUFBTTtBQUdaLFFBQU0sNEJBQTRCO0FBQUEsTUFDaEMsWUFBWTtBQUFBLE1BQ1osVUFBVTtBQUFBLE1BQ1YsY0FBYztBQUFBLElBQ2hCO0FBRUEsUUFBTSxTQUFTO0FBQUEsTUFDYixZQUFZO0FBQUEsTUFDWixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxRQUFRO0FBQUEsSUFDVjtBQUVBLFFBQU0sc0JBQXNCO0FBQUEsTUFDMUIsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLE1BQ1osTUFBTTtBQUFBLElBQ1I7QUFFQSxRQUFNLFVBQVU7QUFBQSxNQUNkLGNBQWM7QUFBQSxNQUNkLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxJQUNSO0FBRUEsUUFBTSxtQkFBbUIsS0FBSyxLQUFLO0FBRW5DLFFBQU0sZUFBZTtBQUFBLE1BQ25CLE1BQU07QUFBQSxNQUNOLGtCQUFrQjtBQUFBLE1BQ2xCLGtCQUFrQjtBQUFBLE1BQ2xCLFdBQVc7QUFBQSxJQUNiO0FBRUEsUUFBTSxjQUFjLE9BQU8sWUFBWSxDQUFDO0FBRXhDLFFBQU0sWUFBWTtBQUFBLE1BQ2hCLFFBQVE7QUFBQSxNQUNSLFlBQVk7QUFBQSxNQUNaLGFBQWE7QUFBQSxNQUNiLE1BQU07QUFBQSxJQUNSO0FBRUEsV0FBTyxVQUFVO0FBQUEsTUFDZjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ2pFQSxJQUFBQyxtQkFBQTtBQUFBO0FBQUE7QUFFQSxXQUFPLFVBQVU7QUFBQSxNQUNmLGVBQWUsT0FBTyxLQUFLO0FBQUEsTUFDM0IsYUFBYSxPQUFPLGFBQWE7QUFBQSxNQUNqQyxhQUFhLE9BQU8sWUFBWTtBQUFBLE1BQ2hDLFdBQVcsT0FBTyxVQUFVO0FBQUEsTUFDNUIsYUFBYSxPQUFPLGFBQWE7QUFBQSxNQUNqQyxZQUFZLE9BQU8sWUFBWTtBQUFBLE1BQy9CLGdCQUFnQixPQUFPLGdCQUFnQjtBQUFBLE1BQ3ZDLGFBQWEsT0FBTyxhQUFhO0FBQUEsSUFDbkM7QUFBQTtBQUFBOzs7QUNYQSxJQUFBQyxnQkFBQTtBQUFBO0FBQUE7QUFFQSxRQUFNLEVBQUUsYUFBYSxhQUFhLFdBQVcsYUFBYSxjQUFjLElBQUk7QUFDNUUsUUFBTSxFQUFFLFFBQVEsUUFBUSxJQUFJO0FBQzVCLFFBQU0sRUFBRSxZQUFZLHVCQUF1QixJQUFJO0FBQy9DLFFBQU0sRUFBRSxPQUFPLElBQUksVUFBUSxhQUFhO0FBQ3hDLFFBQU0sRUFBRSxrQ0FBa0MscUJBQXFCLElBQUk7QUFRbkUsYUFBUyxhQUFjLElBQUk7QUFHekIsYUFBTyxHQUFHLFdBQVcsTUFBTSxPQUFPO0FBQUEsSUFDcEM7QUFNQSxhQUFTLGNBQWUsSUFBSTtBQUkxQixhQUFPLEdBQUcsV0FBVyxNQUFNLE9BQU87QUFBQSxJQUNwQztBQU1BLGFBQVMsVUFBVyxJQUFJO0FBSXRCLGFBQU8sR0FBRyxXQUFXLE1BQU0sT0FBTztBQUFBLElBQ3BDO0FBTUEsYUFBUyxTQUFVLElBQUk7QUFDckIsYUFBTyxHQUFHLFdBQVcsTUFBTSxPQUFPO0FBQUEsSUFDcEM7QUFTQSxhQUFTLFVBQVcsR0FBRyxRQUFRLGVBQWUsQ0FBQyxNQUFNLFNBQVMsSUFBSSxNQUFNLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEdBQUc7QUFNdkcsWUFBTSxRQUFRLGFBQWEsR0FBRyxhQUFhO0FBTzNDLGFBQU8sY0FBYyxLQUFLO0FBQUEsSUFDNUI7QUFRQSxhQUFTLHlCQUEwQixJQUFJLE1BQU0sTUFBTTtBQUVqRCxVQUFJLEdBQUcsV0FBVyxNQUFNLE9BQU8sTUFBTTtBQUNuQztBQUFBLE1BQ0Y7QUFHQSxVQUFJO0FBRUosVUFBSSxTQUFTLFFBQVEsTUFBTTtBQUd6QixZQUFJO0FBQ0YseUJBQWUsV0FBVyxJQUFJO0FBQUEsUUFDaEMsUUFBUTtBQUNOLGtDQUF3QixJQUFJLHVDQUF1QztBQUNuRTtBQUFBLFFBQ0Y7QUFBQSxNQUNGLFdBQVcsU0FBUyxRQUFRLFFBQVE7QUFDbEMsWUFBSSxHQUFHLFdBQVcsTUFBTSxRQUFRO0FBSTlCLHlCQUFlLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQztBQUFBLFFBQ2hDLE9BQU87QUFJTCx5QkFBZSxjQUFjLElBQUk7QUFBQSxRQUNuQztBQUFBLE1BQ0Y7QUFLQSxnQkFBVSxXQUFXLElBQUksd0JBQXdCO0FBQUEsUUFDL0MsUUFBUSxHQUFHLGFBQWEsRUFBRTtBQUFBLFFBQzFCLE1BQU07QUFBQSxNQUNSLENBQUM7QUFBQSxJQUNIO0FBRUEsYUFBUyxjQUFlLFFBQVE7QUFDOUIsVUFBSSxPQUFPLGVBQWUsT0FBTyxPQUFPLFlBQVk7QUFDbEQsZUFBTyxPQUFPO0FBQUEsTUFDaEI7QUFDQSxhQUFPLE9BQU8sT0FBTyxNQUFNLE9BQU8sWUFBWSxPQUFPLGFBQWEsT0FBTyxVQUFVO0FBQUEsSUFDckY7QUFRQSxhQUFTLG1CQUFvQixVQUFVO0FBT3JDLFVBQUksU0FBUyxXQUFXLEdBQUc7QUFDekIsZUFBTztBQUFBLE1BQ1Q7QUFFQSxlQUFTLElBQUksR0FBRyxJQUFJLFNBQVMsUUFBUSxFQUFFLEdBQUc7QUFDeEMsY0FBTSxPQUFPLFNBQVMsV0FBVyxDQUFDO0FBRWxDLFlBQ0UsT0FBTztBQUFBLFFBQ1AsT0FBTyxPQUNQLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxRQUNULFNBQVMsS0FDVDtBQUNBLGlCQUFPO0FBQUEsUUFDVDtBQUFBLE1BQ0Y7QUFFQSxhQUFPO0FBQUEsSUFDVDtBQU1BLGFBQVMsa0JBQW1CLE1BQU07QUFDaEMsVUFBSSxRQUFRLE9BQVEsT0FBTyxNQUFNO0FBQy9CLGVBQ0UsU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLE1BRWI7QUFFQSxhQUFPLFFBQVEsT0FBUSxRQUFRO0FBQUEsSUFDakM7QUFNQSxhQUFTLHdCQUF5QixJQUFJLFFBQVE7QUFDNUMsWUFBTSxFQUFFLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJO0FBRTdELGlCQUFXLE1BQU07QUFFakIsVUFBSSxVQUFVLFVBQVUsQ0FBQyxTQUFTLE9BQU8sV0FBVztBQUNsRCxpQkFBUyxPQUFPLFFBQVE7QUFBQSxNQUMxQjtBQUVBLFVBQUksUUFBUTtBQUVWLGtCQUFVLFNBQVMsSUFBSSxDQUFDLE1BQU0sU0FBUyxJQUFJLFdBQVcsTUFBTSxJQUFJLEdBQUc7QUFBQSxVQUNqRSxPQUFPLElBQUksTUFBTSxNQUFNO0FBQUEsVUFDdkIsU0FBUztBQUFBLFFBQ1gsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBTUEsYUFBUyxlQUFnQixRQUFRO0FBQy9CLGFBQ0UsV0FBVyxRQUFRLFNBQ25CLFdBQVcsUUFBUSxRQUNuQixXQUFXLFFBQVE7QUFBQSxJQUV2QjtBQUVBLGFBQVMsb0JBQXFCLFFBQVE7QUFDcEMsYUFBTyxXQUFXLFFBQVE7QUFBQSxJQUM1QjtBQUVBLGFBQVMsa0JBQW1CLFFBQVE7QUFDbEMsYUFBTyxXQUFXLFFBQVEsUUFBUSxXQUFXLFFBQVE7QUFBQSxJQUN2RDtBQUVBLGFBQVMsY0FBZSxRQUFRO0FBQzlCLGFBQU8sa0JBQWtCLE1BQU0sS0FBSyxvQkFBb0IsTUFBTSxLQUFLLGVBQWUsTUFBTTtBQUFBLElBQzFGO0FBUUEsYUFBUyxnQkFBaUIsWUFBWTtBQUNwQyxZQUFNLFdBQVcsRUFBRSxVQUFVLEVBQUU7QUFDL0IsWUFBTSxnQkFBZ0Isb0JBQUksSUFBSTtBQUU5QixhQUFPLFNBQVMsV0FBVyxXQUFXLFFBQVE7QUFDNUMsY0FBTSxPQUFPLGlDQUFpQyxLQUFLLFlBQVksUUFBUTtBQUN2RSxjQUFNLENBQUMsTUFBTSxRQUFRLEVBQUUsSUFBSSxLQUFLLE1BQU0sR0FBRztBQUV6QyxzQkFBYztBQUFBLFVBQ1oscUJBQXFCLE1BQU0sTUFBTSxLQUFLO0FBQUEsVUFDdEMscUJBQXFCLE9BQU8sT0FBTyxJQUFJO0FBQUEsUUFDekM7QUFFQSxpQkFBUztBQUFBLE1BQ1g7QUFFQSxhQUFPO0FBQUEsSUFDVDtBQU9BLGFBQVMsd0JBQXlCLE9BQU87QUFFdkMsVUFBSSxNQUFNLFdBQVcsR0FBRztBQUN0QixlQUFPO0FBQUEsTUFDVDtBQUdBLGVBQVMsSUFBSSxHQUFHLElBQUksTUFBTSxRQUFRLEtBQUs7QUFDckMsY0FBTSxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBRS9CLFlBQUksT0FBTyxNQUFRLE9BQU8sSUFBTTtBQUM5QixpQkFBTztBQUFBLFFBQ1Q7QUFBQSxNQUNGO0FBR0EsWUFBTSxNQUFNLE9BQU8sU0FBUyxPQUFPLEVBQUU7QUFDckMsYUFBTyxPQUFPLEtBQUssT0FBTztBQUFBLElBQzVCO0FBR0EsUUFBTSxVQUFVLE9BQU8sUUFBUSxTQUFTLFFBQVE7QUFDaEQsUUFBTSxlQUFlLFVBQVUsSUFBSSxZQUFZLFNBQVMsRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJO0FBTTNFLFFBQU0sYUFBYSxVQUNmLGFBQWEsT0FBTyxLQUFLLFlBQVksSUFDckMsU0FBVSxRQUFRO0FBQ2xCLFVBQUksT0FBTyxNQUFNLEdBQUc7QUFDbEIsZUFBTyxPQUFPLFNBQVMsT0FBTztBQUFBLE1BQ2hDO0FBQ0EsWUFBTSxJQUFJLFVBQVUseUJBQXlCO0FBQUEsSUFDL0M7QUFFRixXQUFPLFVBQVU7QUFBQSxNQUNmO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBO0FBQUE7OztBQ2pVQTtBQUFBO0FBQUE7QUFFQSxRQUFNLEVBQUUsaUJBQWlCLElBQUk7QUFFN0IsUUFBTSxjQUFjO0FBR3BCLFFBQUk7QUFDSixRQUFJLFNBQVM7QUFDYixRQUFJLFNBQVM7QUFFYixRQUFJO0FBQ0YsZUFBUyxVQUFRLGFBQWE7QUFBQSxJQUVoQyxRQUFRO0FBQ04sZUFBUztBQUFBO0FBQUEsUUFFUCxnQkFBZ0IsU0FBUyxlQUFnQkMsU0FBUSxTQUFTLE9BQU87QUFDL0QsbUJBQVMsSUFBSSxHQUFHLElBQUlBLFFBQU8sUUFBUSxFQUFFLEdBQUc7QUFDdEMsWUFBQUEsUUFBTyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTTtBQUFBLFVBQ3BDO0FBQ0EsaUJBQU9BO0FBQUEsUUFDVDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUEsYUFBUyxlQUFnQjtBQUN2QixVQUFJLFdBQVcsYUFBYTtBQUMxQixpQkFBUztBQUNULGVBQU8sZUFBZ0IsV0FBVyxPQUFPLFlBQVksV0FBVyxHQUFJLEdBQUcsV0FBVztBQUFBLE1BQ3BGO0FBQ0EsYUFBTyxDQUFDLE9BQU8sUUFBUSxHQUFHLE9BQU8sUUFBUSxHQUFHLE9BQU8sUUFBUSxHQUFHLE9BQU8sUUFBUSxDQUFDO0FBQUEsSUFDaEY7QUFFQSxRQUFNLHFCQUFOLE1BQXlCO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFJdkIsWUFBYSxNQUFNO0FBQ2pCLGFBQUssWUFBWTtBQUFBLE1BQ25CO0FBQUEsTUFFQSxZQUFhLFFBQVE7QUFDbkIsY0FBTSxZQUFZLEtBQUs7QUFDdkIsY0FBTSxVQUFVLGFBQWE7QUFDN0IsY0FBTSxhQUFhLFdBQVcsY0FBYztBQUc1QyxZQUFJLGdCQUFnQjtBQUNwQixZQUFJLFNBQVM7QUFFYixZQUFJLGFBQWEsa0JBQWtCO0FBQ2pDLG9CQUFVO0FBQ1YsMEJBQWdCO0FBQUEsUUFDbEIsV0FBVyxhQUFhLEtBQUs7QUFDM0Isb0JBQVU7QUFDViwwQkFBZ0I7QUFBQSxRQUNsQjtBQUVBLGNBQU1BLFVBQVMsT0FBTyxZQUFZLGFBQWEsTUFBTTtBQUdyRCxRQUFBQSxRQUFPLENBQUMsSUFBSUEsUUFBTyxDQUFDLElBQUk7QUFDeEIsUUFBQUEsUUFBTyxDQUFDLEtBQUs7QUFDYixRQUFBQSxRQUFPLENBQUMsS0FBS0EsUUFBTyxDQUFDLElBQUksT0FBUTtBQUdqQyxRQUFBQSxRQUFPLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUM5QixRQUFBQSxRQUFPLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUM5QixRQUFBQSxRQUFPLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUM5QixRQUFBQSxRQUFPLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUU5QixRQUFBQSxRQUFPLENBQUMsSUFBSTtBQUVaLFlBQUksa0JBQWtCLEtBQUs7QUFDekIsVUFBQUEsUUFBTyxjQUFjLFlBQVksQ0FBQztBQUFBLFFBQ3BDLFdBQVcsa0JBQWtCLEtBQUs7QUFFaEMsVUFBQUEsUUFBTyxDQUFDLElBQUlBLFFBQU8sQ0FBQyxJQUFJO0FBQ3hCLFVBQUFBLFFBQU8sWUFBWSxZQUFZLEdBQUcsQ0FBQztBQUFBLFFBQ3JDO0FBRUEsUUFBQUEsUUFBTyxDQUFDLEtBQUs7QUFHYixpQkFBUyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsR0FBRztBQUNuQyxVQUFBQSxRQUFPLFNBQVMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDO0FBQUEsUUFDbkQ7QUFFQSxlQUFPQTtBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBRUEsV0FBTyxVQUFVO0FBQUEsTUFDZjtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUMvRkE7QUFBQTtBQUFBO0FBRUEsUUFBTSxFQUFFLEtBQUssUUFBUSxxQkFBcUIsYUFBYSxRQUFRLElBQUk7QUFDbkUsUUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixJQUFJO0FBQ0osUUFBTSxFQUFFLFdBQVcseUJBQXlCLFdBQVcsVUFBVSxlQUFlLGdCQUFnQixJQUFJO0FBQ3BHLFFBQU0sRUFBRSxTQUFTLElBQUk7QUFDckIsUUFBTSxFQUFFLFdBQVcsSUFBSTtBQUN2QixRQUFNLEVBQUUsWUFBWSxJQUFJO0FBQ3hCLFFBQU0sRUFBRSxTQUFTLElBQUk7QUFDckIsUUFBTSxFQUFFLFNBQUFDLFVBQVMsZUFBZSxJQUFJO0FBQ3BDLFFBQU0sRUFBRSxlQUFlLElBQUk7QUFDM0IsUUFBTSxFQUFFLG1CQUFtQixJQUFJO0FBRy9CLFFBQUk7QUFDSixRQUFJO0FBQ0YsZUFBUyxVQUFRLGFBQWE7QUFBQSxJQUVoQyxRQUFRO0FBQUEsSUFFUjtBQVVBLGFBQVMsNkJBQThCLEtBQUssV0FBVyxRQUFRLElBQUksYUFBYSxTQUFTO0FBR3ZGLFlBQU0sYUFBYTtBQUVuQixpQkFBVyxXQUFXLElBQUksYUFBYSxRQUFRLFVBQVU7QUFNekQsWUFBTUMsV0FBVSxZQUFZO0FBQUEsUUFDMUIsU0FBUyxDQUFDLFVBQVU7QUFBQSxRQUNwQjtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFFBQ04sYUFBYTtBQUFBLFFBQ2IsT0FBTztBQUFBLFFBQ1AsVUFBVTtBQUFBLE1BQ1osQ0FBQztBQUdELFVBQUksUUFBUSxTQUFTO0FBQ25CLGNBQU0sY0FBYyxlQUFlLElBQUlELFNBQVEsUUFBUSxPQUFPLENBQUM7QUFFL0QsUUFBQUMsU0FBUSxjQUFjO0FBQUEsTUFDeEI7QUFVQSxZQUFNLFdBQVcsT0FBTyxZQUFZLEVBQUUsRUFBRSxTQUFTLFFBQVE7QUFJekQsTUFBQUEsU0FBUSxZQUFZLE9BQU8scUJBQXFCLFFBQVE7QUFJeEQsTUFBQUEsU0FBUSxZQUFZLE9BQU8seUJBQXlCLElBQUk7QUFLeEQsaUJBQVcsWUFBWSxXQUFXO0FBQ2hDLFFBQUFBLFNBQVEsWUFBWSxPQUFPLDBCQUEwQixRQUFRO0FBQUEsTUFDL0Q7QUFLQSxZQUFNLG9CQUFvQjtBQUkxQixNQUFBQSxTQUFRLFlBQVksT0FBTyw0QkFBNEIsaUJBQWlCO0FBSXhFLFlBQU0sYUFBYSxTQUFTO0FBQUEsUUFDMUIsU0FBQUE7QUFBQSxRQUNBLGtCQUFrQjtBQUFBLFFBQ2xCLFlBQVksUUFBUTtBQUFBLFFBQ3BCLGdCQUFpQixVQUFVO0FBR3pCLGNBQUksU0FBUyxTQUFTLFdBQVcsU0FBUyxXQUFXLEtBQUs7QUFDeEQsb0NBQXdCLElBQUksZ0RBQWdEO0FBQzVFO0FBQUEsVUFDRjtBQU1BLGNBQUksVUFBVSxXQUFXLEtBQUssQ0FBQyxTQUFTLFlBQVksSUFBSSx3QkFBd0IsR0FBRztBQUNqRixvQ0FBd0IsSUFBSSw2Q0FBNkM7QUFDekU7QUFBQSxVQUNGO0FBWUEsY0FBSSxTQUFTLFlBQVksSUFBSSxTQUFTLEdBQUcsWUFBWSxNQUFNLGFBQWE7QUFDdEUsb0NBQXdCLElBQUksbURBQW1EO0FBQy9FO0FBQUEsVUFDRjtBQU1BLGNBQUksU0FBUyxZQUFZLElBQUksWUFBWSxHQUFHLFlBQVksTUFBTSxXQUFXO0FBQ3ZFLG9DQUF3QixJQUFJLG9EQUFvRDtBQUNoRjtBQUFBLFVBQ0Y7QUFTQSxnQkFBTSxjQUFjLFNBQVMsWUFBWSxJQUFJLHNCQUFzQjtBQUNuRSxnQkFBTSxTQUFTLE9BQU8sV0FBVyxNQUFNLEVBQUUsT0FBTyxXQUFXLEdBQUcsRUFBRSxPQUFPLFFBQVE7QUFDL0UsY0FBSSxnQkFBZ0IsUUFBUTtBQUMxQixvQ0FBd0IsSUFBSSx5REFBeUQ7QUFDckY7QUFBQSxVQUNGO0FBU0EsZ0JBQU0sZUFBZSxTQUFTLFlBQVksSUFBSSwwQkFBMEI7QUFDeEUsY0FBSTtBQUVKLGNBQUksaUJBQWlCLE1BQU07QUFDekIseUJBQWEsZ0JBQWdCLFlBQVk7QUFFekMsZ0JBQUksQ0FBQyxXQUFXLElBQUksb0JBQW9CLEdBQUc7QUFDekMsc0NBQXdCLElBQUksaURBQWlEO0FBQzdFO0FBQUEsWUFDRjtBQUFBLFVBQ0Y7QUFPQSxnQkFBTSxjQUFjLFNBQVMsWUFBWSxJQUFJLHdCQUF3QjtBQUVyRSxjQUFJLGdCQUFnQixNQUFNO0FBQ3hCLGtCQUFNLG1CQUFtQixlQUFlLDBCQUEwQkEsU0FBUSxXQUFXO0FBT3JGLGdCQUFJLENBQUMsaUJBQWlCLFNBQVMsV0FBVyxHQUFHO0FBQzNDLHNDQUF3QixJQUFJLGdEQUFnRDtBQUM1RTtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBRUEsbUJBQVMsT0FBTyxHQUFHLFFBQVEsWUFBWTtBQUN2QyxtQkFBUyxPQUFPLEdBQUcsU0FBUyxhQUFhO0FBQ3pDLG1CQUFTLE9BQU8sR0FBRyxTQUFTLGFBQWE7QUFFekMsY0FBSSxTQUFTLEtBQUssZ0JBQWdCO0FBQ2hDLHFCQUFTLEtBQUssUUFBUTtBQUFBLGNBQ3BCLFNBQVMsU0FBUyxPQUFPLFFBQVE7QUFBQSxjQUNqQyxVQUFVO0FBQUEsY0FDVixZQUFZO0FBQUEsWUFDZCxDQUFDO0FBQUEsVUFDSDtBQUVBLHNCQUFZLFVBQVUsVUFBVTtBQUFBLFFBQ2xDO0FBQUEsTUFDRixDQUFDO0FBRUQsYUFBTztBQUFBLElBQ1Q7QUFFQSxhQUFTLHlCQUEwQixJQUFJLE1BQU0sUUFBUSxrQkFBa0I7QUFDckUsVUFBSSxVQUFVLEVBQUUsS0FBSyxTQUFTLEVBQUUsR0FBRztBQUFBLE1BR25DLFdBQVcsQ0FBQyxjQUFjLEVBQUUsR0FBRztBQUk3QixnQ0FBd0IsSUFBSSxrREFBa0Q7QUFDOUUsV0FBRyxXQUFXLElBQUksT0FBTztBQUFBLE1BQzNCLFdBQVcsR0FBRyxVQUFVLE1BQU0sb0JBQW9CLFVBQVU7QUFXMUQsV0FBRyxVQUFVLElBQUksb0JBQW9CO0FBRXJDLGNBQU0sUUFBUSxJQUFJLG1CQUFtQjtBQU9yQyxZQUFJLFNBQVMsVUFBYSxXQUFXLFFBQVc7QUFDOUMsZ0JBQU0sWUFBWSxPQUFPLFlBQVksQ0FBQztBQUN0QyxnQkFBTSxVQUFVLGNBQWMsTUFBTSxDQUFDO0FBQUEsUUFDdkMsV0FBVyxTQUFTLFVBQWEsV0FBVyxRQUFXO0FBR3JELGdCQUFNLFlBQVksT0FBTyxZQUFZLElBQUksZ0JBQWdCO0FBQ3pELGdCQUFNLFVBQVUsY0FBYyxNQUFNLENBQUM7QUFFckMsZ0JBQU0sVUFBVSxNQUFNLFFBQVEsR0FBRyxPQUFPO0FBQUEsUUFDMUMsT0FBTztBQUNMLGdCQUFNLFlBQVk7QUFBQSxRQUNwQjtBQUdBLGNBQU0sU0FBUyxHQUFHLFNBQVMsRUFBRTtBQUU3QixlQUFPLE1BQU0sTUFBTSxZQUFZLFFBQVEsS0FBSyxDQUFDO0FBRTdDLFdBQUcsVUFBVSxJQUFJLG9CQUFvQjtBQUtyQyxXQUFHLFdBQVcsSUFBSSxPQUFPO0FBQUEsTUFDM0IsT0FBTztBQUdMLFdBQUcsV0FBVyxJQUFJLE9BQU87QUFBQSxNQUMzQjtBQUFBLElBQ0Y7QUFLQSxhQUFTLGFBQWMsT0FBTztBQUM1QixVQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsRUFBRSxNQUFNLEtBQUssR0FBRztBQUN0QyxhQUFLLE1BQU07QUFBQSxNQUNiO0FBQUEsSUFDRjtBQU1BLGFBQVMsZ0JBQWlCO0FBQ3hCLFlBQU0sRUFBRSxHQUFHLElBQUk7QUFDZixZQUFNLEVBQUUsQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJO0FBRWxDLGVBQVMsT0FBTyxJQUFJLFFBQVEsWUFBWTtBQUN4QyxlQUFTLE9BQU8sSUFBSSxTQUFTLGFBQWE7QUFDMUMsZUFBUyxPQUFPLElBQUksU0FBUyxhQUFhO0FBSzFDLFlBQU0sV0FBVyxHQUFHLFVBQVUsTUFBTSxvQkFBb0IsUUFBUSxHQUFHLGNBQWM7QUFFakYsVUFBSSxPQUFPO0FBQ1gsVUFBSSxTQUFTO0FBRWIsWUFBTSxTQUFTLEdBQUcsV0FBVyxFQUFFO0FBRS9CLFVBQUksVUFBVSxDQUFDLE9BQU8sT0FBTztBQUMzQixlQUFPLE9BQU8sUUFBUTtBQUN0QixpQkFBUyxPQUFPO0FBQUEsTUFDbEIsV0FBVyxDQUFDLEdBQUcsY0FBYyxHQUFHO0FBTTlCLGVBQU87QUFBQSxNQUNUO0FBR0EsU0FBRyxXQUFXLElBQUksT0FBTztBQWlCekIsZ0JBQVUsU0FBUyxJQUFJLENBQUMsTUFBTSxTQUFTLElBQUksV0FBVyxNQUFNLElBQUksR0FBRztBQUFBLFFBQ2pFO0FBQUEsUUFBVTtBQUFBLFFBQU07QUFBQSxNQUNsQixDQUFDO0FBRUQsVUFBSSxTQUFTLE1BQU0sZ0JBQWdCO0FBQ2pDLGlCQUFTLE1BQU0sUUFBUTtBQUFBLFVBQ3JCLFdBQVc7QUFBQSxVQUNYO0FBQUEsVUFDQTtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBRUEsYUFBUyxjQUFlQyxRQUFPO0FBQzdCLFlBQU0sRUFBRSxHQUFHLElBQUk7QUFFZixTQUFHLFdBQVcsSUFBSSxPQUFPO0FBRXpCLFVBQUksU0FBUyxZQUFZLGdCQUFnQjtBQUN2QyxpQkFBUyxZQUFZLFFBQVFBLE1BQUs7QUFBQSxNQUNwQztBQUVBLFdBQUssUUFBUTtBQUFBLElBQ2Y7QUFFQSxXQUFPLFVBQVU7QUFBQSxNQUNmO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNsWEE7QUFBQTtBQUFBO0FBRUEsUUFBTSxFQUFFLGtCQUFrQixxQkFBcUIsSUFBSSxVQUFRLFdBQVc7QUFDdEUsUUFBTSxFQUFFLHdCQUF3QixJQUFJO0FBQ3BDLFFBQU0sRUFBRSx5QkFBeUIsSUFBSTtBQUVyQyxRQUFNLE9BQU8sT0FBTyxLQUFLLENBQUMsR0FBTSxHQUFNLEtBQU0sR0FBSSxDQUFDO0FBQ2pELFFBQU0sVUFBVSxPQUFPLFNBQVM7QUFDaEMsUUFBTSxVQUFVLE9BQU8sU0FBUztBQUVoQyxRQUFNLG9CQUFOLE1BQXdCO0FBQUE7QUFBQSxNQUV0QjtBQUFBLE1BRUEsV0FBVyxDQUFDO0FBQUEsTUFFWixrQkFBa0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtsQixZQUFhLFlBQVksU0FBUztBQUNoQyxhQUFLLFNBQVMsMEJBQTBCLFdBQVcsSUFBSSw0QkFBNEI7QUFDbkYsYUFBSyxTQUFTLHNCQUFzQixXQUFXLElBQUksd0JBQXdCO0FBRTNFLGFBQUssa0JBQWtCLFFBQVE7QUFBQSxNQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BUUEsV0FBWSxPQUFPLEtBQUssVUFBVTtBQUtoQyxZQUFJLENBQUMsS0FBSyxVQUFVO0FBQ2xCLGNBQUksYUFBYTtBQUVqQixjQUFJLEtBQUssU0FBUyxxQkFBcUI7QUFDckMsZ0JBQUksQ0FBQyx3QkFBd0IsS0FBSyxTQUFTLG1CQUFtQixHQUFHO0FBQy9ELHVCQUFTLElBQUksTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRDtBQUFBLFlBQ0Y7QUFFQSx5QkFBYSxPQUFPLFNBQVMsS0FBSyxTQUFTLG1CQUFtQjtBQUFBLFVBQ2hFO0FBRUEsY0FBSTtBQUNGLGlCQUFLLFdBQVcsaUJBQWlCLEVBQUUsV0FBVyxDQUFDO0FBQUEsVUFDakQsU0FBUyxLQUFLO0FBQ1oscUJBQVMsR0FBRztBQUNaO0FBQUEsVUFDRjtBQUNBLGVBQUssU0FBUyxPQUFPLElBQUksQ0FBQztBQUMxQixlQUFLLFNBQVMsT0FBTyxJQUFJO0FBRXpCLGVBQUssU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTO0FBQ2pDLGlCQUFLLFNBQVMsT0FBTyxLQUFLLEtBQUs7QUFFL0IsZ0JBQUksS0FBSyxrQkFBa0IsS0FBSyxLQUFLLFNBQVMsT0FBTyxJQUFJLEtBQUssaUJBQWlCO0FBQzdFLHVCQUFTLElBQUkseUJBQXlCLENBQUM7QUFDdkMsbUJBQUssU0FBUyxtQkFBbUI7QUFDakMsbUJBQUssV0FBVztBQUNoQjtBQUFBLFlBQ0Y7QUFFQSxpQkFBSyxTQUFTLE9BQU8sRUFBRSxLQUFLLElBQUk7QUFBQSxVQUNsQyxDQUFDO0FBRUQsZUFBSyxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVE7QUFDakMsaUJBQUssV0FBVztBQUNoQixxQkFBUyxHQUFHO0FBQUEsVUFDZCxDQUFDO0FBQUEsUUFDSDtBQUVBLGFBQUssU0FBUyxNQUFNLEtBQUs7QUFDekIsWUFBSSxLQUFLO0FBQ1AsZUFBSyxTQUFTLE1BQU0sSUFBSTtBQUFBLFFBQzFCO0FBRUEsYUFBSyxTQUFTLE1BQU0sTUFBTTtBQUN4QixjQUFJLENBQUMsS0FBSyxVQUFVO0FBQ2xCO0FBQUEsVUFDRjtBQUVBLGdCQUFNLE9BQU8sT0FBTyxPQUFPLEtBQUssU0FBUyxPQUFPLEdBQUcsS0FBSyxTQUFTLE9BQU8sQ0FBQztBQUV6RSxlQUFLLFNBQVMsT0FBTyxFQUFFLFNBQVM7QUFDaEMsZUFBSyxTQUFTLE9BQU8sSUFBSTtBQUV6QixtQkFBUyxNQUFNLElBQUk7QUFBQSxRQUNyQixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFFQSxXQUFPLFVBQVUsRUFBRSxrQkFBa0I7QUFBQTtBQUFBOzs7QUNuR3JDO0FBQUE7QUFBQTtBQUVBLFFBQU0sRUFBRSxTQUFTLElBQUksVUFBUSxhQUFhO0FBQzFDLFFBQU1DLFVBQVMsVUFBUSxhQUFhO0FBQ3BDLFFBQU0sRUFBRSxjQUFjLFNBQVMsUUFBUSxhQUFhLG9CQUFvQixJQUFJO0FBQzVFLFFBQU0sRUFBRSxhQUFhLFlBQVksV0FBVyxlQUFlLElBQUk7QUFDL0QsUUFBTSxFQUFFLFNBQVMsSUFBSTtBQUNyQixRQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSixRQUFNLEVBQUUsbUJBQW1CLElBQUk7QUFDL0IsUUFBTSxFQUFFLHlCQUF5QixJQUFJO0FBQ3JDLFFBQU0sRUFBRSxrQkFBa0IsSUFBSTtBQUM5QixRQUFNLEVBQUUseUJBQXlCLElBQUk7QUFPckMsUUFBTSxhQUFOLGNBQXlCLFNBQVM7QUFBQSxNQUNoQyxXQUFXLENBQUM7QUFBQSxNQUNaLGtCQUFrQjtBQUFBLE1BQ2xCLGNBQWM7QUFBQSxNQUNkLFFBQVE7QUFBQSxNQUVSLFNBQVMsYUFBYTtBQUFBLE1BRXRCLFFBQVEsQ0FBQztBQUFBLE1BQ1QsYUFBYSxDQUFDO0FBQUE7QUFBQSxNQUdkO0FBQUE7QUFBQSxNQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BT0EsWUFBYSxJQUFJLFlBQVksVUFBVSxDQUFDLEdBQUc7QUFDekMsY0FBTTtBQUVOLGFBQUssS0FBSztBQUNWLGFBQUssY0FBYyxjQUFjLE9BQU8sb0JBQUksSUFBSSxJQUFJO0FBQ3BELGFBQUssa0JBQWtCLFFBQVEsa0JBQWtCO0FBRWpELFlBQUksS0FBSyxZQUFZLElBQUksb0JBQW9CLEdBQUc7QUFDOUMsZUFBSyxZQUFZLElBQUksc0JBQXNCLElBQUksa0JBQWtCLFlBQVksT0FBTyxDQUFDO0FBQUEsUUFDdkY7QUFBQSxNQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQU1BLE9BQVEsT0FBTyxHQUFHLFVBQVU7QUFDMUIsYUFBSyxTQUFTLEtBQUssS0FBSztBQUN4QixhQUFLLGVBQWUsTUFBTTtBQUMxQixhQUFLLFFBQVE7QUFFYixhQUFLLElBQUksUUFBUTtBQUFBLE1BQ25CO0FBQUEsTUFFQSx5QkFBMEI7QUFDeEIsWUFDRSxLQUFLLGtCQUFrQixLQUN2QixDQUFDLGVBQWUsS0FBSyxNQUFNLE1BQU0sS0FDakMsS0FBSyxNQUFNLGdCQUFnQixLQUFLLGlCQUNoQztBQUNBLGtDQUF3QixLQUFLLElBQUksMkNBQTJDO0FBQzVFLGlCQUFPO0FBQUEsUUFDVDtBQUVBLGVBQU87QUFBQSxNQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BT0EsSUFBSyxVQUFVO0FBQ2IsZUFBTyxLQUFLLE9BQU87QUFDakIsY0FBSSxLQUFLLFdBQVcsYUFBYSxNQUFNO0FBRXJDLGdCQUFJLEtBQUssY0FBYyxHQUFHO0FBQ3hCLHFCQUFPLFNBQVM7QUFBQSxZQUNsQjtBQUVBLGtCQUFNLFNBQVMsS0FBSyxRQUFRLENBQUM7QUFDN0Isa0JBQU0sT0FBTyxPQUFPLENBQUMsSUFBSSxTQUFVO0FBQ25DLGtCQUFNLFNBQVMsT0FBTyxDQUFDLElBQUk7QUFDM0Isa0JBQU0sVUFBVSxPQUFPLENBQUMsSUFBSSxTQUFVO0FBRXRDLGtCQUFNLGFBQWEsQ0FBQyxPQUFPLFdBQVcsUUFBUTtBQUM5QyxrQkFBTSxnQkFBZ0IsT0FBTyxDQUFDLElBQUk7QUFFbEMsa0JBQU0sT0FBTyxPQUFPLENBQUMsSUFBSTtBQUN6QixrQkFBTSxPQUFPLE9BQU8sQ0FBQyxJQUFJO0FBQ3pCLGtCQUFNLE9BQU8sT0FBTyxDQUFDLElBQUk7QUFFekIsZ0JBQUksQ0FBQyxjQUFjLE1BQU0sR0FBRztBQUMxQixzQ0FBd0IsS0FBSyxJQUFJLHlCQUF5QjtBQUMxRCxxQkFBTyxTQUFTO0FBQUEsWUFDbEI7QUFFQSxnQkFBSSxRQUFRO0FBQ1Ysc0NBQXdCLEtBQUssSUFBSSx3QkFBd0I7QUFDekQscUJBQU8sU0FBUztBQUFBLFlBQ2xCO0FBV0EsZ0JBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxZQUFZLElBQUksb0JBQW9CLEdBQUc7QUFDN0Qsc0NBQXdCLEtBQUssSUFBSSw0QkFBNEI7QUFDN0Q7QUFBQSxZQUNGO0FBRUEsZ0JBQUksU0FBUyxLQUFLLFNBQVMsR0FBRztBQUM1QixzQ0FBd0IsS0FBSyxJQUFJLGdDQUFnQztBQUNqRTtBQUFBLFlBQ0Y7QUFFQSxnQkFBSSxjQUFjLENBQUMsa0JBQWtCLE1BQU0sR0FBRztBQUU1QyxzQ0FBd0IsS0FBSyxJQUFJLG9DQUFvQztBQUNyRTtBQUFBLFlBQ0Y7QUFJQSxnQkFBSSxrQkFBa0IsTUFBTSxLQUFLLEtBQUssV0FBVyxTQUFTLEdBQUc7QUFDM0Qsc0NBQXdCLEtBQUssSUFBSSw2QkFBNkI7QUFDOUQ7QUFBQSxZQUNGO0FBRUEsZ0JBQUksS0FBSyxNQUFNLGNBQWMsWUFBWTtBQUV2QyxzQ0FBd0IsS0FBSyxJQUFJLHNDQUFzQztBQUN2RTtBQUFBLFlBQ0Y7QUFJQSxpQkFBSyxnQkFBZ0IsT0FBTyxlQUFlLGVBQWUsTUFBTSxHQUFHO0FBQ2pFLHNDQUF3QixLQUFLLElBQUksOENBQThDO0FBQy9FO0FBQUEsWUFDRjtBQUVBLGdCQUFJLG9CQUFvQixNQUFNLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxDQUFDLEtBQUssTUFBTSxZQUFZO0FBQ3pGLHNDQUF3QixLQUFLLElBQUksK0JBQStCO0FBQ2hFO0FBQUEsWUFDRjtBQUVBLGdCQUFJLGlCQUFpQixLQUFLO0FBQ3hCLG1CQUFLLE1BQU0sZ0JBQWdCO0FBQzNCLG1CQUFLLFNBQVMsYUFBYTtBQUUzQixrQkFBSSxDQUFDLEtBQUssdUJBQXVCLEdBQUc7QUFDbEM7QUFBQSxjQUNGO0FBQUEsWUFDRixXQUFXLGtCQUFrQixLQUFLO0FBQ2hDLG1CQUFLLFNBQVMsYUFBYTtBQUFBLFlBQzdCLFdBQVcsa0JBQWtCLEtBQUs7QUFDaEMsbUJBQUssU0FBUyxhQUFhO0FBQUEsWUFDN0I7QUFFQSxnQkFBSSxrQkFBa0IsTUFBTSxHQUFHO0FBQzdCLG1CQUFLLE1BQU0sYUFBYTtBQUN4QixtQkFBSyxNQUFNLGFBQWEsU0FBUztBQUFBLFlBQ25DO0FBRUEsaUJBQUssTUFBTSxTQUFTO0FBQ3BCLGlCQUFLLE1BQU0sU0FBUztBQUNwQixpQkFBSyxNQUFNLE1BQU07QUFDakIsaUJBQUssTUFBTSxhQUFhO0FBQUEsVUFDMUIsV0FBVyxLQUFLLFdBQVcsYUFBYSxrQkFBa0I7QUFDeEQsZ0JBQUksS0FBSyxjQUFjLEdBQUc7QUFDeEIscUJBQU8sU0FBUztBQUFBLFlBQ2xCO0FBRUEsa0JBQU0sU0FBUyxLQUFLLFFBQVEsQ0FBQztBQUU3QixpQkFBSyxNQUFNLGdCQUFnQixPQUFPLGFBQWEsQ0FBQztBQUNoRCxpQkFBSyxTQUFTLGFBQWE7QUFFM0IsZ0JBQUksQ0FBQyxLQUFLLHVCQUF1QixHQUFHO0FBQ2xDO0FBQUEsWUFDRjtBQUFBLFVBQ0YsV0FBVyxLQUFLLFdBQVcsYUFBYSxrQkFBa0I7QUFDeEQsZ0JBQUksS0FBSyxjQUFjLEdBQUc7QUFDeEIscUJBQU8sU0FBUztBQUFBLFlBQ2xCO0FBRUEsa0JBQU0sU0FBUyxLQUFLLFFBQVEsQ0FBQztBQUM3QixrQkFBTSxRQUFRLE9BQU8sYUFBYSxDQUFDO0FBQ25DLGtCQUFNLFFBQVEsT0FBTyxhQUFhLENBQUM7QUFRbkMsZ0JBQUksVUFBVSxLQUFLLFFBQVEsS0FBSyxLQUFLLEdBQUc7QUFDdEMsc0NBQXdCLEtBQUssSUFBSSx1Q0FBdUM7QUFDeEU7QUFBQSxZQUNGO0FBRUEsaUJBQUssTUFBTSxnQkFBZ0I7QUFDM0IsaUJBQUssU0FBUyxhQUFhO0FBRTNCLGdCQUFJLENBQUMsS0FBSyx1QkFBdUIsR0FBRztBQUNsQztBQUFBLFlBQ0Y7QUFBQSxVQUNGLFdBQVcsS0FBSyxXQUFXLGFBQWEsV0FBVztBQUNqRCxnQkFBSSxLQUFLLGNBQWMsS0FBSyxNQUFNLGVBQWU7QUFDL0MscUJBQU8sU0FBUztBQUFBLFlBQ2xCO0FBRUEsa0JBQU0sT0FBTyxLQUFLLFFBQVEsS0FBSyxNQUFNLGFBQWE7QUFFbEQsZ0JBQUksZUFBZSxLQUFLLE1BQU0sTUFBTSxHQUFHO0FBQ3JDLG1CQUFLLFFBQVEsS0FBSyxrQkFBa0IsSUFBSTtBQUN4QyxtQkFBSyxTQUFTLGFBQWE7QUFBQSxZQUM3QixPQUFPO0FBQ0wsa0JBQUksQ0FBQyxLQUFLLE1BQU0sWUFBWTtBQUMxQixxQkFBSyxlQUFlLElBQUk7QUFFeEIsb0JBQUksS0FBSyxrQkFBa0IsS0FBSyxLQUFLLGtCQUFrQixLQUFLLGlCQUFpQjtBQUMzRSwwQ0FBd0IsS0FBSyxJQUFJLElBQUkseUJBQXlCLEVBQUUsT0FBTztBQUN2RTtBQUFBLGdCQUNGO0FBTUEsb0JBQUksQ0FBQyxLQUFLLE1BQU0sY0FBYyxLQUFLLE1BQU0sS0FBSztBQUM1QywyQ0FBeUIsS0FBSyxJQUFJLEtBQUssTUFBTSxZQUFZLEtBQUssaUJBQWlCLENBQUM7QUFBQSxnQkFDbEY7QUFFQSxxQkFBSyxTQUFTLGFBQWE7QUFBQSxjQUM3QixPQUFPO0FBQ0wscUJBQUssWUFBWSxJQUFJLG9CQUFvQixFQUFFO0FBQUEsa0JBQ3pDO0FBQUEsa0JBQ0EsS0FBSyxNQUFNO0FBQUEsa0JBQ1gsQ0FBQ0MsUUFBTyxTQUFTO0FBQ2Ysd0JBQUlBLFFBQU87QUFDVCw4Q0FBd0IsS0FBSyxJQUFJQSxPQUFNLE9BQU87QUFDOUM7QUFBQSxvQkFDRjtBQUVBLHlCQUFLLGVBQWUsSUFBSTtBQUV4Qix3QkFBSSxLQUFLLGtCQUFrQixLQUFLLEtBQUssa0JBQWtCLEtBQUssaUJBQWlCO0FBQzNFLDhDQUF3QixLQUFLLElBQUksSUFBSSx5QkFBeUIsRUFBRSxPQUFPO0FBQ3ZFO0FBQUEsb0JBQ0Y7QUFFQSx3QkFBSSxDQUFDLEtBQUssTUFBTSxLQUFLO0FBQ25CLDJCQUFLLFNBQVMsYUFBYTtBQUMzQiwyQkFBSyxRQUFRO0FBQ2IsMkJBQUssSUFBSSxRQUFRO0FBQ2pCO0FBQUEsb0JBQ0Y7QUFFQSw2Q0FBeUIsS0FBSyxJQUFJLEtBQUssTUFBTSxZQUFZLEtBQUssaUJBQWlCLENBQUM7QUFFaEYseUJBQUssUUFBUTtBQUNiLHlCQUFLLFNBQVMsYUFBYTtBQUMzQix5QkFBSyxJQUFJLFFBQVE7QUFBQSxrQkFDbkI7QUFBQSxnQkFDRjtBQUVBLHFCQUFLLFFBQVE7QUFDYjtBQUFBLGNBQ0Y7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BT0EsUUFBUyxHQUFHO0FBQ1YsWUFBSSxJQUFJLEtBQUssYUFBYTtBQUN4QixnQkFBTSxJQUFJLE1BQU0sMkNBQTJDO0FBQUEsUUFDN0QsV0FBVyxNQUFNLEdBQUc7QUFDbEIsaUJBQU87QUFBQSxRQUNUO0FBRUEsWUFBSSxLQUFLLFNBQVMsQ0FBQyxFQUFFLFdBQVcsR0FBRztBQUNqQyxlQUFLLGVBQWUsS0FBSyxTQUFTLENBQUMsRUFBRTtBQUNyQyxpQkFBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLFFBQzdCO0FBRUEsY0FBTSxTQUFTLE9BQU8sWUFBWSxDQUFDO0FBQ25DLFlBQUksU0FBUztBQUViLGVBQU8sV0FBVyxHQUFHO0FBQ25CLGdCQUFNLE9BQU8sS0FBSyxTQUFTLENBQUM7QUFDNUIsZ0JBQU0sRUFBRSxPQUFPLElBQUk7QUFFbkIsY0FBSSxTQUFTLFdBQVcsR0FBRztBQUN6QixtQkFBTyxJQUFJLEtBQUssU0FBUyxNQUFNLEdBQUcsTUFBTTtBQUN4QztBQUFBLFVBQ0YsV0FBVyxTQUFTLFNBQVMsR0FBRztBQUM5QixtQkFBTyxJQUFJLEtBQUssU0FBUyxHQUFHLElBQUksTUFBTSxHQUFHLE1BQU07QUFDL0MsaUJBQUssU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksTUFBTTtBQUMzQztBQUFBLFVBQ0YsT0FBTztBQUNMLG1CQUFPLElBQUksS0FBSyxTQUFTLE1BQU0sR0FBRyxNQUFNO0FBQ3hDLHNCQUFVLEtBQUs7QUFBQSxVQUNqQjtBQUFBLFFBQ0Y7QUFFQSxhQUFLLGVBQWU7QUFFcEIsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUVBLGVBQWdCLFVBQVU7QUFDeEIsYUFBSyxtQkFBbUIsU0FBUztBQUNqQyxhQUFLLFdBQVcsS0FBSyxRQUFRO0FBQUEsTUFDL0I7QUFBQSxNQUVBLG1CQUFvQjtBQUNsQixjQUFNLFlBQVksS0FBSztBQUV2QixZQUFJLFVBQVUsV0FBVyxHQUFHO0FBQzFCLGVBQUssa0JBQWtCO0FBQ3ZCLGlCQUFPLFVBQVUsTUFBTTtBQUFBLFFBQ3pCO0FBRUEsY0FBTSxTQUFTLE9BQU8sT0FBTyxXQUFXLEtBQUssZUFBZTtBQUM1RCxhQUFLLGFBQWEsQ0FBQztBQUNuQixhQUFLLGtCQUFrQjtBQUV2QixlQUFPO0FBQUEsTUFDVDtBQUFBLE1BRUEsZUFBZ0IsTUFBTTtBQUNwQixRQUFBRCxRQUFPLEtBQUssV0FBVyxDQUFDO0FBSXhCLFlBQUk7QUFFSixZQUFJLEtBQUssVUFBVSxHQUFHO0FBSXBCLGlCQUFPLEtBQUssYUFBYSxDQUFDO0FBQUEsUUFDNUI7QUFFQSxZQUFJLFNBQVMsVUFBYSxDQUFDLGtCQUFrQixJQUFJLEdBQUc7QUFDbEQsaUJBQU8sRUFBRSxNQUFNLE1BQU0sUUFBUSx1QkFBdUIsT0FBTyxLQUFLO0FBQUEsUUFDbEU7QUFJQSxZQUFJLFNBQVMsS0FBSyxTQUFTLENBQUM7QUFHNUIsWUFBSSxPQUFPLENBQUMsTUFBTSxPQUFRLE9BQU8sQ0FBQyxNQUFNLE9BQVEsT0FBTyxDQUFDLE1BQU0sS0FBTTtBQUNsRSxtQkFBUyxPQUFPLFNBQVMsQ0FBQztBQUFBLFFBQzVCO0FBRUEsWUFBSTtBQUNGLG1CQUFTLFdBQVcsTUFBTTtBQUFBLFFBQzVCLFFBQVE7QUFDTixpQkFBTyxFQUFFLE1BQU0sTUFBTSxRQUFRLGlCQUFpQixPQUFPLEtBQUs7QUFBQSxRQUM1RDtBQUVBLGVBQU8sRUFBRSxNQUFNLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDdEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsa0JBQW1CLE1BQU07QUFDdkIsY0FBTSxFQUFFLFFBQVEsY0FBYyxJQUFJLEtBQUs7QUFFdkMsWUFBSSxXQUFXLFFBQVEsT0FBTztBQUM1QixjQUFJLGtCQUFrQixHQUFHO0FBQ3ZCLG9DQUF3QixLQUFLLElBQUksMENBQTBDO0FBQzNFLG1CQUFPO0FBQUEsVUFDVDtBQUVBLGVBQUssTUFBTSxZQUFZLEtBQUssZUFBZSxJQUFJO0FBRS9DLGNBQUksS0FBSyxNQUFNLFVBQVUsT0FBTztBQUM5QixrQkFBTSxFQUFFLE1BQU0sT0FBTyxJQUFJLEtBQUssTUFBTTtBQUVwQyxxQ0FBeUIsS0FBSyxJQUFJLE1BQU0sUUFBUSxPQUFPLE1BQU07QUFDN0Qsb0NBQXdCLEtBQUssSUFBSSxNQUFNO0FBQ3ZDLG1CQUFPO0FBQUEsVUFDVDtBQUVBLGNBQUksS0FBSyxHQUFHLFVBQVUsTUFBTSxvQkFBb0IsTUFBTTtBQUtwRCxnQkFBSUUsUUFBTztBQUNYLGdCQUFJLEtBQUssTUFBTSxVQUFVLE1BQU07QUFDN0IsY0FBQUEsUUFBTyxPQUFPLFlBQVksQ0FBQztBQUMzQixjQUFBQSxNQUFLLGNBQWMsS0FBSyxNQUFNLFVBQVUsTUFBTSxDQUFDO0FBQUEsWUFDakQ7QUFDQSxrQkFBTSxhQUFhLElBQUksbUJBQW1CQSxLQUFJO0FBRTlDLGlCQUFLLEdBQUcsU0FBUyxFQUFFLE9BQU87QUFBQSxjQUN4QixXQUFXLFlBQVksUUFBUSxLQUFLO0FBQUEsY0FDcEMsQ0FBQyxRQUFRO0FBQ1Asb0JBQUksQ0FBQyxLQUFLO0FBQ1IsdUJBQUssR0FBRyxVQUFVLElBQUksb0JBQW9CO0FBQUEsZ0JBQzVDO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGO0FBS0EsZUFBSyxHQUFHLFdBQVcsSUFBSSxPQUFPO0FBQzlCLGVBQUssR0FBRyxjQUFjLElBQUk7QUFFMUIsaUJBQU87QUFBQSxRQUNULFdBQVcsV0FBVyxRQUFRLE1BQU07QUFNbEMsY0FBSSxDQUFDLEtBQUssR0FBRyxjQUFjLEdBQUc7QUFDNUIsa0JBQU0sUUFBUSxJQUFJLG1CQUFtQixJQUFJO0FBRXpDLGlCQUFLLEdBQUcsU0FBUyxFQUFFLE9BQU8sTUFBTSxNQUFNLFlBQVksUUFBUSxJQUFJLENBQUM7QUFFL0QsZ0JBQUksU0FBUyxLQUFLLGdCQUFnQjtBQUNoQyx1QkFBUyxLQUFLLFFBQVE7QUFBQSxnQkFDcEIsU0FBUztBQUFBLGNBQ1gsQ0FBQztBQUFBLFlBQ0g7QUFBQSxVQUNGO0FBQUEsUUFDRixXQUFXLFdBQVcsUUFBUSxNQUFNO0FBS2xDLGNBQUksU0FBUyxLQUFLLGdCQUFnQjtBQUNoQyxxQkFBUyxLQUFLLFFBQVE7QUFBQSxjQUNwQixTQUFTO0FBQUEsWUFDWCxDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0Y7QUFFQSxlQUFPO0FBQUEsTUFDVDtBQUFBLE1BRUEsSUFBSSxjQUFlO0FBQ2pCLGVBQU8sS0FBSyxNQUFNO0FBQUEsTUFDcEI7QUFBQSxJQUNGO0FBRUEsV0FBTyxVQUFVO0FBQUEsTUFDZjtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUN6ZUE7QUFBQTtBQUFBO0FBRUEsUUFBTSxFQUFFLG1CQUFtQixJQUFJO0FBQy9CLFFBQU0sRUFBRSxTQUFTLFVBQVUsSUFBSTtBQUMvQixRQUFNLGFBQWE7QUFHbkIsUUFBTSxhQUFhLE9BQU8sT0FBTyxPQUFPO0FBU3hDLFFBQU0sWUFBTixNQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BSWQsU0FBUyxJQUFJLFdBQVc7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUt4QixXQUFXO0FBQUE7QUFBQSxNQUdYO0FBQUEsTUFFQSxZQUFhLFFBQVE7QUFDbkIsYUFBSyxVQUFVO0FBQUEsTUFDakI7QUFBQSxNQUVBLElBQUssTUFBTSxJQUFJLE1BQU07QUFDbkIsWUFBSSxTQUFTLFVBQVUsTUFBTTtBQUMzQixnQkFBTSxRQUFRLFlBQVksTUFBTSxJQUFJO0FBQ3BDLGNBQUksQ0FBQyxLQUFLLFVBQVU7QUFFbEIsaUJBQUssUUFBUSxNQUFNLE9BQU8sRUFBRTtBQUFBLFVBQzlCLE9BQU87QUFFTCxrQkFBTUMsUUFBTztBQUFBLGNBQ1gsU0FBUztBQUFBLGNBQ1QsVUFBVTtBQUFBLGNBQ1Y7QUFBQSxZQUNGO0FBQ0EsaUJBQUssT0FBTyxLQUFLQSxLQUFJO0FBQUEsVUFDdkI7QUFDQTtBQUFBLFFBQ0Y7QUFHQSxjQUFNLE9BQU87QUFBQSxVQUNYLFNBQVMsS0FBSyxZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU87QUFDdkMsaUJBQUssVUFBVTtBQUNmLGlCQUFLLFFBQVEsWUFBWSxJQUFJLElBQUk7QUFBQSxVQUNuQyxDQUFDO0FBQUEsVUFDRCxVQUFVO0FBQUEsVUFDVixPQUFPO0FBQUEsUUFDVDtBQUVBLGFBQUssT0FBTyxLQUFLLElBQUk7QUFFckIsWUFBSSxDQUFDLEtBQUssVUFBVTtBQUNsQixlQUFLLEtBQUs7QUFBQSxRQUNaO0FBQUEsTUFDRjtBQUFBLE1BRUEsTUFBTSxPQUFRO0FBQ1osYUFBSyxXQUFXO0FBQ2hCLGNBQU0sUUFBUSxLQUFLO0FBQ25CLGVBQU8sQ0FBQyxNQUFNLFFBQVEsR0FBRztBQUN2QixnQkFBTSxPQUFPLE1BQU0sTUFBTTtBQUV6QixjQUFJLEtBQUssWUFBWSxNQUFNO0FBQ3pCLGtCQUFNLEtBQUs7QUFBQSxVQUNiO0FBRUEsZUFBSyxRQUFRLE1BQU0sS0FBSyxPQUFPLEtBQUssUUFBUTtBQUU1QyxlQUFLLFdBQVcsS0FBSyxRQUFRO0FBQUEsUUFDL0I7QUFDQSxhQUFLLFdBQVc7QUFBQSxNQUNsQjtBQUFBLElBQ0Y7QUFFQSxhQUFTLFlBQWEsTUFBTSxNQUFNO0FBQ2hDLGFBQU8sSUFBSSxtQkFBbUIsU0FBUyxNQUFNLElBQUksQ0FBQyxFQUFFLFlBQVksU0FBUyxVQUFVLFNBQVMsUUFBUSxPQUFPLFFBQVEsTUFBTTtBQUFBLElBQzNIO0FBRUEsYUFBUyxTQUFVLE1BQU0sTUFBTTtBQUM3QixjQUFRLE1BQU07QUFBQSxRQUNaLEtBQUssVUFBVTtBQUNiLGlCQUFPLE9BQU8sS0FBSyxJQUFJO0FBQUEsUUFDekIsS0FBSyxVQUFVO0FBQUEsUUFDZixLQUFLLFVBQVU7QUFDYixpQkFBTyxJQUFJLFdBQVcsSUFBSTtBQUFBLFFBQzVCLEtBQUssVUFBVTtBQUNiLGlCQUFPLElBQUksV0FBVyxLQUFLLFFBQVEsS0FBSyxZQUFZLEtBQUssVUFBVTtBQUFBLE1BQ3ZFO0FBQUEsSUFDRjtBQUVBLFdBQU8sVUFBVSxFQUFFLFVBQVU7QUFBQTtBQUFBOzs7QUN2RzdCO0FBQUE7QUFBQTtBQUVBLFFBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBTSxFQUFFLGNBQWMsSUFBSTtBQUMxQixRQUFNLEVBQUUsMEJBQTBCLElBQUk7QUFDdEMsUUFBTSxFQUFFLDJCQUEyQixRQUFRLHFCQUFxQixVQUFVLElBQUk7QUFDOUUsUUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSixRQUFNO0FBQUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSixRQUFNLEVBQUUsOEJBQThCLHlCQUF5QixJQUFJO0FBQ25FLFFBQU0sRUFBRSxXQUFXLElBQUk7QUFDdkIsUUFBTSxFQUFFLHFCQUFxQixXQUFXLElBQUk7QUFDNUMsUUFBTSxFQUFFLG9CQUFvQixJQUFJO0FBQ2hDLFFBQU0sRUFBRSxPQUFBQyxPQUFNLElBQUksVUFBUSxXQUFXO0FBQ3JDLFFBQU0sRUFBRSxZQUFZLFdBQVcsSUFBSTtBQUNuQyxRQUFNLEVBQUUsVUFBVSxJQUFJO0FBR3RCLFFBQU0sWUFBTixNQUFNLG1CQUFrQixZQUFZO0FBQUEsTUFDbEMsVUFBVTtBQUFBLFFBQ1IsTUFBTTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUVBLGtCQUFrQjtBQUFBLE1BQ2xCLFlBQVk7QUFBQSxNQUNaLGNBQWM7QUFBQTtBQUFBLE1BR2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsWUFBYSxLQUFLLFlBQVksQ0FBQyxHQUFHO0FBQ2hDLGNBQU07QUFFTixlQUFPLEtBQUssa0JBQWtCLElBQUk7QUFFbEMsY0FBTSxTQUFTO0FBQ2YsZUFBTyxvQkFBb0IsV0FBVyxHQUFHLE1BQU07QUFFL0MsY0FBTSxVQUFVLE9BQU8sV0FBVyxtREFBbUQsRUFBRSxXQUFXLFFBQVEsU0FBUztBQUVuSCxjQUFNLE9BQU8sV0FBVyxVQUFVLEtBQUssUUFBUSxLQUFLO0FBQ3BELG9CQUFZLFFBQVE7QUFHcEIsY0FBTSxVQUFVLDBCQUEwQixlQUFlO0FBR3pELFlBQUk7QUFFSixZQUFJO0FBQ0Ysc0JBQVksSUFBSSxJQUFJLEtBQUssT0FBTztBQUFBLFFBQ2xDLFNBQVMsR0FBRztBQUVWLGdCQUFNLElBQUksYUFBYSxHQUFHLGFBQWE7QUFBQSxRQUN6QztBQUdBLFlBQUksVUFBVSxhQUFhLFNBQVM7QUFDbEMsb0JBQVUsV0FBVztBQUFBLFFBQ3ZCLFdBQVcsVUFBVSxhQUFhLFVBQVU7QUFFMUMsb0JBQVUsV0FBVztBQUFBLFFBQ3ZCO0FBR0EsWUFBSSxVQUFVLGFBQWEsU0FBUyxVQUFVLGFBQWEsUUFBUTtBQUNqRSxnQkFBTSxJQUFJO0FBQUEsWUFDUix3Q0FBd0MsVUFBVSxRQUFRO0FBQUEsWUFDMUQ7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUlBLFlBQUksVUFBVSxRQUFRLFVBQVUsS0FBSyxTQUFTLEdBQUcsR0FBRztBQUNsRCxnQkFBTSxJQUFJLGFBQWEsZ0JBQWdCLGFBQWE7QUFBQSxRQUN0RDtBQUlBLFlBQUksT0FBTyxjQUFjLFVBQVU7QUFDakMsc0JBQVksQ0FBQyxTQUFTO0FBQUEsUUFDeEI7QUFNQSxZQUFJLFVBQVUsV0FBVyxJQUFJLElBQUksVUFBVSxJQUFJLE9BQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU07QUFDMUUsZ0JBQU0sSUFBSSxhQUFhLHdDQUF3QyxhQUFhO0FBQUEsUUFDOUU7QUFFQSxZQUFJLFVBQVUsU0FBUyxLQUFLLENBQUMsVUFBVSxNQUFNLE9BQUssbUJBQW1CLENBQUMsQ0FBQyxHQUFHO0FBQ3hFLGdCQUFNLElBQUksYUFBYSx3Q0FBd0MsYUFBYTtBQUFBLFFBQzlFO0FBR0EsYUFBSyxhQUFhLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSTtBQUc1QyxjQUFNLFNBQVMsMEJBQTBCO0FBTXpDLGFBQUssV0FBVyxJQUFJO0FBQUEsVUFDbEI7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBLENBQUMsVUFBVSxlQUFlLEtBQUsseUJBQXlCLFVBQVUsVUFBVTtBQUFBLFVBQzVFO0FBQUEsUUFDRjtBQUtBLGFBQUssV0FBVyxJQUFJLFdBQVU7QUFFOUIsYUFBSyxVQUFVLElBQUksb0JBQW9CO0FBUXZDLGFBQUssV0FBVyxJQUFJO0FBQUEsTUFDdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFPQSxNQUFPLE9BQU8sUUFBVyxTQUFTLFFBQVc7QUFDM0MsZUFBTyxXQUFXLE1BQU0sVUFBUztBQUVqQyxjQUFNLFNBQVM7QUFFZixZQUFJLFNBQVMsUUFBVztBQUN0QixpQkFBTyxPQUFPLFdBQVcsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLFFBQVEsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUFBLFFBQ2xGO0FBRUEsWUFBSSxXQUFXLFFBQVc7QUFDeEIsbUJBQVMsT0FBTyxXQUFXLFVBQVUsUUFBUSxRQUFRLFFBQVE7QUFBQSxRQUMvRDtBQUtBLFlBQUksU0FBUyxRQUFXO0FBQ3RCLGNBQUksU0FBUyxRQUFTLE9BQU8sT0FBUSxPQUFPLE9BQU87QUFDakQsa0JBQU0sSUFBSSxhQUFhLGdCQUFnQixvQkFBb0I7QUFBQSxVQUM3RDtBQUFBLFFBQ0Y7QUFFQSxZQUFJLG1CQUFtQjtBQUd2QixZQUFJLFdBQVcsUUFBVztBQUl4Qiw2QkFBbUIsT0FBTyxXQUFXLE1BQU07QUFFM0MsY0FBSSxtQkFBbUIsS0FBSztBQUMxQixrQkFBTSxJQUFJO0FBQUEsY0FDUixnREFBZ0QsZ0JBQWdCO0FBQUEsY0FDaEU7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFHQSxpQ0FBeUIsTUFBTSxNQUFNLFFBQVEsZ0JBQWdCO0FBQUEsTUFDL0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsS0FBTSxNQUFNO0FBQ1YsZUFBTyxXQUFXLE1BQU0sVUFBUztBQUVqQyxjQUFNLFNBQVM7QUFDZixlQUFPLG9CQUFvQixXQUFXLEdBQUcsTUFBTTtBQUUvQyxlQUFPLE9BQU8sV0FBVyxrQkFBa0IsTUFBTSxRQUFRLE1BQU07QUFJL0QsWUFBSSxhQUFhLElBQUksR0FBRztBQUN0QixnQkFBTSxJQUFJLGFBQWEsMEJBQTBCLG1CQUFtQjtBQUFBLFFBQ3RFO0FBTUEsWUFBSSxDQUFDLGNBQWMsSUFBSSxLQUFLLFVBQVUsSUFBSSxHQUFHO0FBQzNDO0FBQUEsUUFDRjtBQUdBLFlBQUksT0FBTyxTQUFTLFVBQVU7QUFZNUIsZ0JBQU0sU0FBUyxPQUFPLFdBQVcsSUFBSTtBQUVyQyxlQUFLLG1CQUFtQjtBQUN4QixlQUFLLFdBQVcsSUFBSSxNQUFNLE1BQU07QUFDOUIsaUJBQUssbUJBQW1CO0FBQUEsVUFDMUIsR0FBRyxVQUFVLE1BQU07QUFBQSxRQUNyQixXQUFXQSxPQUFNLGNBQWMsSUFBSSxHQUFHO0FBYXBDLGVBQUssbUJBQW1CLEtBQUs7QUFDN0IsZUFBSyxXQUFXLElBQUksTUFBTSxNQUFNO0FBQzlCLGlCQUFLLG1CQUFtQixLQUFLO0FBQUEsVUFDL0IsR0FBRyxVQUFVLFdBQVc7QUFBQSxRQUMxQixXQUFXLFlBQVksT0FBTyxJQUFJLEdBQUc7QUFhbkMsZUFBSyxtQkFBbUIsS0FBSztBQUM3QixlQUFLLFdBQVcsSUFBSSxNQUFNLE1BQU07QUFDOUIsaUJBQUssbUJBQW1CLEtBQUs7QUFBQSxVQUMvQixHQUFHLFVBQVUsVUFBVTtBQUFBLFFBQ3pCLFdBQVcsV0FBVyxJQUFJLEdBQUc7QUFZM0IsZUFBSyxtQkFBbUIsS0FBSztBQUM3QixlQUFLLFdBQVcsSUFBSSxNQUFNLE1BQU07QUFDOUIsaUJBQUssbUJBQW1CLEtBQUs7QUFBQSxVQUMvQixHQUFHLFVBQVUsSUFBSTtBQUFBLFFBQ25CO0FBQUEsTUFDRjtBQUFBLE1BRUEsSUFBSSxhQUFjO0FBQ2hCLGVBQU8sV0FBVyxNQUFNLFVBQVM7QUFHakMsZUFBTyxLQUFLLFdBQVc7QUFBQSxNQUN6QjtBQUFBLE1BRUEsSUFBSSxpQkFBa0I7QUFDcEIsZUFBTyxXQUFXLE1BQU0sVUFBUztBQUVqQyxlQUFPLEtBQUs7QUFBQSxNQUNkO0FBQUEsTUFFQSxJQUFJLE1BQU87QUFDVCxlQUFPLFdBQVcsTUFBTSxVQUFTO0FBR2pDLGVBQU8sY0FBYyxLQUFLLGFBQWEsQ0FBQztBQUFBLE1BQzFDO0FBQUEsTUFFQSxJQUFJLGFBQWM7QUFDaEIsZUFBTyxXQUFXLE1BQU0sVUFBUztBQUVqQyxlQUFPLEtBQUs7QUFBQSxNQUNkO0FBQUEsTUFFQSxJQUFJLFdBQVk7QUFDZCxlQUFPLFdBQVcsTUFBTSxVQUFTO0FBRWpDLGVBQU8sS0FBSztBQUFBLE1BQ2Q7QUFBQSxNQUVBLElBQUksU0FBVTtBQUNaLGVBQU8sV0FBVyxNQUFNLFVBQVM7QUFFakMsZUFBTyxLQUFLLFFBQVE7QUFBQSxNQUN0QjtBQUFBLE1BRUEsSUFBSSxPQUFRLElBQUk7QUFDZCxlQUFPLFdBQVcsTUFBTSxVQUFTO0FBRWpDLFlBQUksS0FBSyxRQUFRLE1BQU07QUFDckIsZUFBSyxvQkFBb0IsUUFBUSxLQUFLLFFBQVEsSUFBSTtBQUFBLFFBQ3BEO0FBRUEsWUFBSSxPQUFPLE9BQU8sWUFBWTtBQUM1QixlQUFLLFFBQVEsT0FBTztBQUNwQixlQUFLLGlCQUFpQixRQUFRLEVBQUU7QUFBQSxRQUNsQyxPQUFPO0FBQ0wsZUFBSyxRQUFRLE9BQU87QUFBQSxRQUN0QjtBQUFBLE1BQ0Y7QUFBQSxNQUVBLElBQUksVUFBVztBQUNiLGVBQU8sV0FBVyxNQUFNLFVBQVM7QUFFakMsZUFBTyxLQUFLLFFBQVE7QUFBQSxNQUN0QjtBQUFBLE1BRUEsSUFBSSxRQUFTLElBQUk7QUFDZixlQUFPLFdBQVcsTUFBTSxVQUFTO0FBRWpDLFlBQUksS0FBSyxRQUFRLE9BQU87QUFDdEIsZUFBSyxvQkFBb0IsU0FBUyxLQUFLLFFBQVEsS0FBSztBQUFBLFFBQ3REO0FBRUEsWUFBSSxPQUFPLE9BQU8sWUFBWTtBQUM1QixlQUFLLFFBQVEsUUFBUTtBQUNyQixlQUFLLGlCQUFpQixTQUFTLEVBQUU7QUFBQSxRQUNuQyxPQUFPO0FBQ0wsZUFBSyxRQUFRLFFBQVE7QUFBQSxRQUN2QjtBQUFBLE1BQ0Y7QUFBQSxNQUVBLElBQUksVUFBVztBQUNiLGVBQU8sV0FBVyxNQUFNLFVBQVM7QUFFakMsZUFBTyxLQUFLLFFBQVE7QUFBQSxNQUN0QjtBQUFBLE1BRUEsSUFBSSxRQUFTLElBQUk7QUFDZixlQUFPLFdBQVcsTUFBTSxVQUFTO0FBRWpDLFlBQUksS0FBSyxRQUFRLE9BQU87QUFDdEIsZUFBSyxvQkFBb0IsU0FBUyxLQUFLLFFBQVEsS0FBSztBQUFBLFFBQ3REO0FBRUEsWUFBSSxPQUFPLE9BQU8sWUFBWTtBQUM1QixlQUFLLFFBQVEsUUFBUTtBQUNyQixlQUFLLGlCQUFpQixTQUFTLEVBQUU7QUFBQSxRQUNuQyxPQUFPO0FBQ0wsZUFBSyxRQUFRLFFBQVE7QUFBQSxRQUN2QjtBQUFBLE1BQ0Y7QUFBQSxNQUVBLElBQUksWUFBYTtBQUNmLGVBQU8sV0FBVyxNQUFNLFVBQVM7QUFFakMsZUFBTyxLQUFLLFFBQVE7QUFBQSxNQUN0QjtBQUFBLE1BRUEsSUFBSSxVQUFXLElBQUk7QUFDakIsZUFBTyxXQUFXLE1BQU0sVUFBUztBQUVqQyxZQUFJLEtBQUssUUFBUSxTQUFTO0FBQ3hCLGVBQUssb0JBQW9CLFdBQVcsS0FBSyxRQUFRLE9BQU87QUFBQSxRQUMxRDtBQUVBLFlBQUksT0FBTyxPQUFPLFlBQVk7QUFDNUIsZUFBSyxRQUFRLFVBQVU7QUFDdkIsZUFBSyxpQkFBaUIsV0FBVyxFQUFFO0FBQUEsUUFDckMsT0FBTztBQUNMLGVBQUssUUFBUSxVQUFVO0FBQUEsUUFDekI7QUFBQSxNQUNGO0FBQUEsTUFFQSxJQUFJLGFBQWM7QUFDaEIsZUFBTyxXQUFXLE1BQU0sVUFBUztBQUVqQyxlQUFPLEtBQUssV0FBVztBQUFBLE1BQ3pCO0FBQUEsTUFFQSxJQUFJLFdBQVksTUFBTTtBQUNwQixlQUFPLFdBQVcsTUFBTSxVQUFTO0FBRWpDLFlBQUksU0FBUyxVQUFVLFNBQVMsZUFBZTtBQUM3QyxlQUFLLFdBQVcsSUFBSTtBQUFBLFFBQ3RCLE9BQU87QUFDTCxlQUFLLFdBQVcsSUFBSTtBQUFBLFFBQ3RCO0FBQUEsTUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS0EseUJBQTBCLFVBQVUsa0JBQWtCO0FBR3BELGFBQUssU0FBUyxJQUFJO0FBRWxCLGNBQU0saUJBQWlCLEtBQUssV0FBVyxHQUFHLFlBQVksa0JBQWtCO0FBRXhFLGNBQU1DLFVBQVMsSUFBSSxXQUFXLE1BQU0sa0JBQWtCO0FBQUEsVUFDcEQ7QUFBQSxRQUNGLENBQUM7QUFDRCxRQUFBQSxRQUFPLEdBQUcsU0FBUyxhQUFhO0FBQ2hDLFFBQUFBLFFBQU8sR0FBRyxTQUFTLGNBQWMsS0FBSyxJQUFJLENBQUM7QUFFM0MsaUJBQVMsT0FBTyxLQUFLO0FBQ3JCLGFBQUssV0FBVyxJQUFJQTtBQUVwQixhQUFLLGFBQWEsSUFBSSxVQUFVLFNBQVMsTUFBTTtBQUcvQyxhQUFLLFdBQVcsSUFBSSxPQUFPO0FBSzNCLGNBQU0sYUFBYSxTQUFTLFlBQVksSUFBSSwwQkFBMEI7QUFFdEUsWUFBSSxlQUFlLE1BQU07QUFDdkIsZUFBSyxjQUFjO0FBQUEsUUFDckI7QUFLQSxjQUFNLFdBQVcsU0FBUyxZQUFZLElBQUksd0JBQXdCO0FBRWxFLFlBQUksYUFBYSxNQUFNO0FBQ3JCLGVBQUssWUFBWTtBQUFBLFFBQ25CO0FBR0Esa0JBQVUsUUFBUSxJQUFJO0FBQUEsTUFDeEI7QUFBQSxJQUNGO0FBR0EsY0FBVSxhQUFhLFVBQVUsVUFBVSxhQUFhLE9BQU87QUFFL0QsY0FBVSxPQUFPLFVBQVUsVUFBVSxPQUFPLE9BQU87QUFFbkQsY0FBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLE9BQU87QUFFekQsY0FBVSxTQUFTLFVBQVUsVUFBVSxTQUFTLE9BQU87QUFFdkQsV0FBTyxpQkFBaUIsVUFBVSxXQUFXO0FBQUEsTUFDM0MsWUFBWTtBQUFBLE1BQ1osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLE1BQ1IsS0FBSztBQUFBLE1BQ0wsWUFBWTtBQUFBLE1BQ1osZ0JBQWdCO0FBQUEsTUFDaEIsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsT0FBTztBQUFBLE1BQ1AsV0FBVztBQUFBLE1BQ1gsWUFBWTtBQUFBLE1BQ1osTUFBTTtBQUFBLE1BQ04sWUFBWTtBQUFBLE1BQ1osVUFBVTtBQUFBLE1BQ1YsQ0FBQyxPQUFPLFdBQVcsR0FBRztBQUFBLFFBQ3BCLE9BQU87QUFBQSxRQUNQLFVBQVU7QUFBQSxRQUNWLFlBQVk7QUFBQSxRQUNaLGNBQWM7QUFBQSxNQUNoQjtBQUFBLElBQ0YsQ0FBQztBQUVELFdBQU8saUJBQWlCLFdBQVc7QUFBQSxNQUNqQyxZQUFZO0FBQUEsTUFDWixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxRQUFRO0FBQUEsSUFDVixDQUFDO0FBRUQsV0FBTyxXQUFXLHFCQUFxQixJQUFJLE9BQU87QUFBQSxNQUNoRCxPQUFPLFdBQVc7QUFBQSxJQUNwQjtBQUVBLFdBQU8sV0FBVyxrQ0FBa0MsSUFBSSxTQUFVLEdBQUcsUUFBUSxVQUFVO0FBQ3JGLFVBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxNQUFNLFlBQVksT0FBTyxZQUFZLEdBQUc7QUFDNUQsZUFBTyxPQUFPLFdBQVcscUJBQXFCLEVBQUUsQ0FBQztBQUFBLE1BQ25EO0FBRUEsYUFBTyxPQUFPLFdBQVcsVUFBVSxHQUFHLFFBQVEsUUFBUTtBQUFBLElBQ3hEO0FBR0EsV0FBTyxXQUFXLGdCQUFnQixPQUFPLG9CQUFvQjtBQUFBLE1BQzNEO0FBQUEsUUFDRSxLQUFLO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVyxrQ0FBa0M7QUFBQSxRQUMvRCxjQUFjLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFBQSxNQUNqQztBQUFBLE1BQ0E7QUFBQSxRQUNFLEtBQUs7QUFBQSxRQUNMLFdBQVcsT0FBTyxXQUFXO0FBQUEsUUFDN0IsY0FBYyxNQUFNLG9CQUFvQjtBQUFBLE1BQzFDO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBLFFBQ0wsV0FBVyxPQUFPLGtCQUFrQixPQUFPLFdBQVcsV0FBVztBQUFBLE1BQ25FO0FBQUEsSUFDRixDQUFDO0FBRUQsV0FBTyxXQUFXLG1EQUFtRCxJQUFJLFNBQVUsR0FBRztBQUNwRixVQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsTUFBTSxZQUFZLEVBQUUsT0FBTyxZQUFZLElBQUk7QUFDL0QsZUFBTyxPQUFPLFdBQVcsY0FBYyxDQUFDO0FBQUEsTUFDMUM7QUFFQSxhQUFPLEVBQUUsV0FBVyxPQUFPLFdBQVcsa0NBQWtDLEVBQUUsQ0FBQyxFQUFFO0FBQUEsSUFDL0U7QUFFQSxXQUFPLFdBQVcsb0JBQW9CLFNBQVUsR0FBRztBQUNqRCxVQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsTUFBTSxVQUFVO0FBQ3BDLFlBQUksV0FBVyxDQUFDLEdBQUc7QUFDakIsaUJBQU8sT0FBTyxXQUFXLEtBQUssR0FBRyxFQUFFLFFBQVEsTUFBTSxDQUFDO0FBQUEsUUFDcEQ7QUFFQSxZQUFJLFlBQVksT0FBTyxDQUFDLEtBQUtELE9BQU0sY0FBYyxDQUFDLEdBQUc7QUFDbkQsaUJBQU8sT0FBTyxXQUFXLGFBQWEsQ0FBQztBQUFBLFFBQ3pDO0FBQUEsTUFDRjtBQUVBLGFBQU8sT0FBTyxXQUFXLFVBQVUsQ0FBQztBQUFBLElBQ3RDO0FBRUEsYUFBUyxnQkFBaUI7QUFDeEIsV0FBSyxHQUFHLFNBQVMsRUFBRSxPQUFPLE9BQU87QUFBQSxJQUNuQztBQUVBLGFBQVMsY0FBZSxLQUFLO0FBQzNCLFVBQUk7QUFDSixVQUFJO0FBRUosVUFBSSxlQUFlLFlBQVk7QUFDN0Isa0JBQVUsSUFBSTtBQUNkLGVBQU8sSUFBSTtBQUFBLE1BQ2IsT0FBTztBQUNMLGtCQUFVLElBQUk7QUFBQSxNQUNoQjtBQUVBLGdCQUFVLFNBQVMsTUFBTSxNQUFNLElBQUksV0FBVyxTQUFTLEVBQUUsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0FBRS9FLCtCQUF5QixNQUFNLElBQUk7QUFBQSxJQUNyQztBQUVBLFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDL2tCQSxJQUFBRSxnQkFBQTtBQUFBO0FBQUE7QUFPQSxhQUFTLG1CQUFvQixPQUFPO0FBRWxDLGFBQU8sTUFBTSxRQUFRLElBQVEsTUFBTTtBQUFBLElBQ3JDO0FBT0EsYUFBUyxjQUFlLE9BQU87QUFDN0IsVUFBSSxNQUFNLFdBQVc7QUFBRyxlQUFPO0FBQy9CLGVBQVMsSUFBSSxHQUFHLElBQUksTUFBTSxRQUFRLEtBQUs7QUFDckMsWUFBSSxNQUFNLFdBQVcsQ0FBQyxJQUFJLE1BQVEsTUFBTSxXQUFXLENBQUMsSUFBSTtBQUFNLGlCQUFPO0FBQUEsTUFDdkU7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUdBLGFBQVMsTUFBTyxJQUFJO0FBQ2xCLGFBQU8sSUFBSSxRQUFRLENBQUNDLGFBQVk7QUFDOUIsbUJBQVdBLFVBQVMsRUFBRSxFQUFFLE1BQU07QUFBQSxNQUNoQyxDQUFDO0FBQUEsSUFDSDtBQUVBLFdBQU8sVUFBVTtBQUFBLE1BQ2Y7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUNwQ0E7QUFBQTtBQUFBO0FBQ0EsUUFBTSxFQUFFLFVBQVUsSUFBSSxVQUFRLGFBQWE7QUFDM0MsUUFBTSxFQUFFLGVBQWUsbUJBQW1CLElBQUk7QUFLOUMsUUFBTSxNQUFNLENBQUMsS0FBTSxLQUFNLEdBQUk7QUFJN0IsUUFBTSxLQUFLO0FBSVgsUUFBTSxLQUFLO0FBSVgsUUFBTSxRQUFRO0FBSWQsUUFBTSxRQUFRO0FBbUJkLFFBQU0sb0JBQU4sY0FBZ0MsVUFBVTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BSXhDLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTVIsV0FBVztBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS1gsWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BS1osZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLaEIsU0FBUztBQUFBLE1BRVQsTUFBTTtBQUFBLE1BRU4sUUFBUTtBQUFBLFFBQ04sTUFBTTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsSUFBSTtBQUFBLFFBQ0osT0FBTztBQUFBLE1BQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFPQSxZQUFhLFVBQVUsQ0FBQyxHQUFHO0FBR3pCLGdCQUFRLHFCQUFxQjtBQUU3QixjQUFNLE9BQU87QUFFYixhQUFLLFFBQVEsUUFBUSx1QkFBdUIsQ0FBQztBQUM3QyxZQUFJLFFBQVEsTUFBTTtBQUNoQixlQUFLLE9BQU8sUUFBUTtBQUFBLFFBQ3RCO0FBQUEsTUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BUUEsV0FBWSxPQUFPLFdBQVcsVUFBVTtBQUN0QyxZQUFJLE1BQU0sV0FBVyxHQUFHO0FBQ3RCLG1CQUFTO0FBQ1Q7QUFBQSxRQUNGO0FBT0EsWUFBSSxLQUFLLFFBQVE7QUFDZixlQUFLLFNBQVMsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLEtBQUssQ0FBQztBQUFBLFFBQ2xELE9BQU87QUFDTCxlQUFLLFNBQVM7QUFBQSxRQUNoQjtBQUlBLFlBQUksS0FBSyxVQUFVO0FBQ2pCLGtCQUFRLEtBQUssT0FBTyxRQUFRO0FBQUEsWUFDMUIsS0FBSztBQUVILGtCQUFJLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUc7QUFFN0IseUJBQVM7QUFDVDtBQUFBLGNBQ0Y7QUFHQSxtQkFBSyxXQUFXO0FBR2hCLHVCQUFTO0FBQ1Q7QUFBQSxZQUNGLEtBQUs7QUFHSCxrQkFDRSxLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUN4QixLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUN4QjtBQUdBLHlCQUFTO0FBQ1Q7QUFBQSxjQUNGO0FBSUEsbUJBQUssV0FBVztBQUNoQjtBQUFBLFlBQ0YsS0FBSztBQUdILGtCQUNFLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQ3hCLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQ3hCLEtBQUssT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQ3hCO0FBRUEscUJBQUssU0FBUyxPQUFPLE1BQU0sQ0FBQztBQUc1QixxQkFBSyxXQUFXO0FBR2hCLHlCQUFTO0FBQ1Q7QUFBQSxjQUNGO0FBRUEsbUJBQUssV0FBVztBQUNoQjtBQUFBLFlBQ0Y7QUFHRSxrQkFDRSxLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUN4QixLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUN4QixLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUN4QjtBQUVBLHFCQUFLLFNBQVMsS0FBSyxPQUFPLFNBQVMsQ0FBQztBQUFBLGNBQ3RDO0FBR0EsbUJBQUssV0FBVztBQUNoQjtBQUFBLFVBQ0o7QUFBQSxRQUNGO0FBRUEsZUFBTyxLQUFLLE1BQU0sS0FBSyxPQUFPLFFBQVE7QUFHcEMsY0FBSSxLQUFLLGVBQWU7QUFPdEIsZ0JBQUksS0FBSyxXQUFXO0FBR2xCLGtCQUFJLEtBQUssT0FBTyxLQUFLLEdBQUcsTUFBTSxJQUFJO0FBQ2hDLHFCQUFLLFNBQVMsS0FBSyxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUM7QUFDL0MscUJBQUssTUFBTTtBQUNYLHFCQUFLLFlBQVk7QUFXakI7QUFBQSxjQUNGO0FBQ0EsbUJBQUssWUFBWTtBQUFBLFlBQ25CO0FBRUEsZ0JBQUksS0FBSyxPQUFPLEtBQUssR0FBRyxNQUFNLE1BQU0sS0FBSyxPQUFPLEtBQUssR0FBRyxNQUFNLElBQUk7QUFLaEUsa0JBQUksS0FBSyxPQUFPLEtBQUssR0FBRyxNQUFNLElBQUk7QUFDaEMscUJBQUssWUFBWTtBQUFBLGNBQ25CO0FBRUEsbUJBQUssU0FBUyxLQUFLLE9BQU8sU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUMvQyxtQkFBSyxNQUFNO0FBQ1gsa0JBQ0UsS0FBSyxNQUFNLFNBQVMsVUFBYSxLQUFLLE1BQU0sU0FBUyxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sT0FBTztBQUN4RixxQkFBSyxhQUFhLEtBQUssS0FBSztBQUFBLGNBQzlCO0FBQ0EsbUJBQUssV0FBVztBQUNoQjtBQUFBLFlBQ0Y7QUFHQSxpQkFBSyxnQkFBZ0I7QUFDckI7QUFBQSxVQUNGO0FBSUEsY0FBSSxLQUFLLE9BQU8sS0FBSyxHQUFHLE1BQU0sTUFBTSxLQUFLLE9BQU8sS0FBSyxHQUFHLE1BQU0sSUFBSTtBQUloRSxnQkFBSSxLQUFLLE9BQU8sS0FBSyxHQUFHLE1BQU0sSUFBSTtBQUNoQyxtQkFBSyxZQUFZO0FBQUEsWUFDbkI7QUFJQSxpQkFBSyxVQUFVLEtBQUssT0FBTyxTQUFTLEdBQUcsS0FBSyxHQUFHLEdBQUcsS0FBSyxLQUFLO0FBRzVELGlCQUFLLFNBQVMsS0FBSyxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUM7QUFFL0MsaUJBQUssTUFBTTtBQUlYLGlCQUFLLGdCQUFnQjtBQUNyQjtBQUFBLFVBQ0Y7QUFFQSxlQUFLO0FBQUEsUUFDUDtBQUVBLGlCQUFTO0FBQUEsTUFDWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFNQSxVQUFXLE1BQU0sT0FBTztBQUl0QixZQUFJLEtBQUssV0FBVyxHQUFHO0FBQ3JCO0FBQUEsUUFDRjtBQUlBLGNBQU0sZ0JBQWdCLEtBQUssUUFBUSxLQUFLO0FBQ3hDLFlBQUksa0JBQWtCLEdBQUc7QUFDdkI7QUFBQSxRQUNGO0FBRUEsWUFBSSxRQUFRO0FBQ1osWUFBSSxRQUFRO0FBR1osWUFBSSxrQkFBa0IsSUFBSTtBQU14QixrQkFBUSxLQUFLLFNBQVMsR0FBRyxhQUFhLEVBQUUsU0FBUyxNQUFNO0FBS3ZELGNBQUksYUFBYSxnQkFBZ0I7QUFDakMsY0FBSSxLQUFLLFVBQVUsTUFBTSxPQUFPO0FBQzlCLGNBQUU7QUFBQSxVQUNKO0FBSUEsa0JBQVEsS0FBSyxTQUFTLFVBQVUsRUFBRSxTQUFTLE1BQU07QUFBQSxRQUluRCxPQUFPO0FBR0wsa0JBQVEsS0FBSyxTQUFTLE1BQU07QUFDNUIsa0JBQVE7QUFBQSxRQUNWO0FBSUEsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUNILGdCQUFJLE1BQU0sS0FBSyxNQUFNLFFBQVc7QUFDOUIsb0JBQU0sS0FBSyxJQUFJO0FBQUEsWUFDakIsT0FBTztBQUNMLG9CQUFNLEtBQUssS0FBSztBQUFBLEVBQUssS0FBSztBQUFBLFlBQzVCO0FBQ0E7QUFBQSxVQUNGLEtBQUs7QUFDSCxnQkFBSSxjQUFjLEtBQUssR0FBRztBQUN4QixvQkFBTSxLQUFLLElBQUk7QUFBQSxZQUNqQjtBQUNBO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksbUJBQW1CLEtBQUssR0FBRztBQUM3QixvQkFBTSxLQUFLLElBQUk7QUFBQSxZQUNqQjtBQUNBO0FBQUEsVUFDRixLQUFLO0FBQ0gsZ0JBQUksTUFBTSxTQUFTLEdBQUc7QUFDcEIsb0JBQU0sS0FBSyxJQUFJO0FBQUEsWUFDakI7QUFDQTtBQUFBLFFBQ0o7QUFBQSxNQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFLQSxhQUFjLE9BQU87QUFDbkIsWUFBSSxNQUFNLFNBQVMsY0FBYyxNQUFNLEtBQUssR0FBRztBQUM3QyxlQUFLLE1BQU0sbUJBQW1CLFNBQVMsTUFBTSxPQUFPLEVBQUU7QUFBQSxRQUN4RDtBQUVBLFlBQUksTUFBTSxNQUFNLG1CQUFtQixNQUFNLEVBQUUsR0FBRztBQUM1QyxlQUFLLE1BQU0sY0FBYyxNQUFNO0FBQUEsUUFDakM7QUFHQSxZQUFJLE1BQU0sU0FBUyxRQUFXO0FBQzVCLGVBQUssS0FBSztBQUFBLFlBQ1IsTUFBTSxNQUFNLFNBQVM7QUFBQSxZQUNyQixTQUFTO0FBQUEsY0FDUCxNQUFNLE1BQU07QUFBQSxjQUNaLGFBQWEsS0FBSyxNQUFNO0FBQUEsY0FDeEIsUUFBUSxLQUFLLE1BQU07QUFBQSxZQUNyQjtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsTUFFQSxhQUFjO0FBQ1osYUFBSyxRQUFRO0FBQUEsVUFDWCxNQUFNO0FBQUEsVUFDTixPQUFPO0FBQUEsVUFDUCxJQUFJO0FBQUEsVUFDSixPQUFPO0FBQUEsUUFDVDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBRUEsV0FBTyxVQUFVO0FBQUEsTUFDZjtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUM3WUE7QUFBQTtBQUFBO0FBRUEsUUFBTSxFQUFFLFNBQVMsSUFBSSxVQUFRLGFBQWE7QUFDMUMsUUFBTSxFQUFFLFNBQVMsSUFBSTtBQUNyQixRQUFNLEVBQUUsWUFBWSxJQUFJO0FBQ3hCLFFBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBTSxFQUFFLGtCQUFrQixJQUFJO0FBQzlCLFFBQU0sRUFBRSxjQUFjLElBQUk7QUFDMUIsUUFBTSxFQUFFLHVCQUF1QixJQUFJO0FBQ25DLFFBQU0sRUFBRSxlQUFlLElBQUk7QUFDM0IsUUFBTSxFQUFFLE1BQU0sSUFBSTtBQUNsQixRQUFNLEVBQUUsb0JBQW9CLElBQUk7QUFDaEMsUUFBTSxFQUFFLDBCQUEwQixJQUFJO0FBRXRDLFFBQUkscUJBQXFCO0FBWXpCLFFBQU0sMEJBQTBCO0FBY2hDLFFBQU0sYUFBYTtBQU9uQixRQUFNLE9BQU87QUFNYixRQUFNLFNBQVM7QUFNZixRQUFNLFlBQVk7QUFNbEIsUUFBTSxrQkFBa0I7QUFVeEIsUUFBTSxjQUFOLE1BQU0scUJBQW9CLFlBQVk7QUFBQSxNQUNwQyxVQUFVO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxTQUFTO0FBQUEsTUFDWDtBQUFBLE1BRUEsT0FBTztBQUFBLE1BQ1AsbUJBQW1CO0FBQUEsTUFFbkIsY0FBYztBQUFBLE1BRWQsV0FBVztBQUFBLE1BQ1gsY0FBYztBQUFBLE1BRWQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFRQSxZQUFhLEtBQUssc0JBQXNCLENBQUMsR0FBRztBQUUxQyxjQUFNO0FBRU4sZUFBTyxLQUFLLGtCQUFrQixJQUFJO0FBRWxDLGNBQU0sU0FBUztBQUNmLGVBQU8sb0JBQW9CLFdBQVcsR0FBRyxNQUFNO0FBRS9DLFlBQUksQ0FBQyxvQkFBb0I7QUFDdkIsK0JBQXFCO0FBQ3JCLGtCQUFRLFlBQVksbUVBQW1FO0FBQUEsWUFDckYsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxjQUFNLE9BQU8sV0FBVyxVQUFVLEtBQUssUUFBUSxLQUFLO0FBQ3BELDhCQUFzQixPQUFPLFdBQVcsb0JBQW9CLHFCQUFxQixRQUFRLHFCQUFxQjtBQUU5RyxhQUFLLGNBQWMsb0JBQW9CO0FBQ3ZDLGFBQUssU0FBUztBQUFBLFVBQ1osYUFBYTtBQUFBLFVBQ2Isa0JBQWtCO0FBQUEsUUFDcEI7QUFJQSxjQUFNLFdBQVc7QUFFakIsWUFBSTtBQUVKLFlBQUk7QUFFRixzQkFBWSxJQUFJLElBQUksS0FBSyxTQUFTLGVBQWUsT0FBTztBQUN4RCxlQUFLLE9BQU8sU0FBUyxVQUFVO0FBQUEsUUFDakMsU0FBUyxHQUFHO0FBRVYsZ0JBQU0sSUFBSSxhQUFhLEdBQUcsYUFBYTtBQUFBLFFBQ3pDO0FBR0EsYUFBSyxPQUFPLFVBQVU7QUFHdEIsWUFBSSxxQkFBcUI7QUFLekIsWUFBSSxvQkFBb0IsaUJBQWlCO0FBQ3ZDLCtCQUFxQjtBQUNyQixlQUFLLG1CQUFtQjtBQUFBLFFBQzFCO0FBSUEsY0FBTSxjQUFjO0FBQUEsVUFDbEIsVUFBVTtBQUFBLFVBQ1YsV0FBVztBQUFBO0FBQUEsVUFFWCxNQUFNO0FBQUEsVUFDTixhQUFhLHVCQUF1QixjQUNoQyxnQkFDQTtBQUFBLFVBQ0osVUFBVTtBQUFBLFFBQ1o7QUFHQSxvQkFBWSxTQUFTLDBCQUEwQjtBQUcvQyxvQkFBWSxjQUFjLENBQUMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxVQUFVLE9BQU8sb0JBQW9CLENBQUMsQ0FBQztBQUdyRixvQkFBWSxRQUFRO0FBR3BCLG9CQUFZLFlBQVk7QUFFeEIsb0JBQVksVUFBVSxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQztBQUd6QyxhQUFLLFdBQVcsWUFBWSxXQUFXO0FBRXZDLGFBQUssU0FBUztBQUFBLE1BQ2hCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFRQSxJQUFJLGFBQWM7QUFDaEIsZUFBTyxLQUFLO0FBQUEsTUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQU9BLElBQUksTUFBTztBQUNULGVBQU8sS0FBSztBQUFBLE1BQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsSUFBSSxrQkFBbUI7QUFDckIsZUFBTyxLQUFLO0FBQUEsTUFDZDtBQUFBLE1BRUEsV0FBWTtBQUNWLFlBQUksS0FBSyxnQkFBZ0I7QUFBUTtBQUVqQyxhQUFLLGNBQWM7QUFFbkIsY0FBTSxjQUFjO0FBQUEsVUFDbEIsU0FBUyxLQUFLO0FBQUEsVUFDZCxZQUFZLEtBQUs7QUFBQSxRQUNuQjtBQUdBLGNBQU0sOEJBQThCLENBQUMsYUFBYTtBQUNoRCxjQUFJLGVBQWUsUUFBUSxHQUFHO0FBQzVCLGlCQUFLLGNBQWMsSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUNyQyxpQkFBSyxNQUFNO0FBQUEsVUFDYjtBQUVBLGVBQUssV0FBVztBQUFBLFFBQ2xCO0FBR0Esb0JBQVksMkJBQTJCO0FBR3ZDLG9CQUFZLGtCQUFrQixDQUFDLGFBQWE7QUFHMUMsY0FBSSxlQUFlLFFBQVEsR0FBRztBQU81QixnQkFBSSxTQUFTLFNBQVM7QUFDcEIsbUJBQUssTUFBTTtBQUNYLG1CQUFLLGNBQWMsSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUNyQztBQUFBLFlBSUYsT0FBTztBQUNMLG1CQUFLLFdBQVc7QUFDaEI7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUlBLGdCQUFNLGNBQWMsU0FBUyxZQUFZLElBQUksZ0JBQWdCLElBQUk7QUFDakUsZ0JBQU0sV0FBVyxnQkFBZ0IsT0FBTyxjQUFjLFdBQVcsSUFBSTtBQUNyRSxnQkFBTSxtQkFBbUIsYUFBYSxhQUFhLFNBQVMsWUFBWTtBQUN4RSxjQUNFLFNBQVMsV0FBVyxPQUNwQixxQkFBcUIsT0FDckI7QUFDQSxpQkFBSyxNQUFNO0FBQ1gsaUJBQUssY0FBYyxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBQ3JDO0FBQUEsVUFDRjtBQVVBLGVBQUssY0FBYztBQUNuQixlQUFLLGNBQWMsSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxlQUFLLE9BQU8sU0FBUyxTQUFTLFFBQVEsU0FBUyxRQUFRLFNBQVMsQ0FBQyxFQUFFO0FBRW5FLGdCQUFNLG9CQUFvQixJQUFJLGtCQUFrQjtBQUFBLFlBQzlDLHFCQUFxQixLQUFLO0FBQUEsWUFDMUIsTUFBTSxDQUFDLFVBQVU7QUFDZixtQkFBSyxjQUFjO0FBQUEsZ0JBQ2pCLE1BQU07QUFBQSxnQkFDTixNQUFNO0FBQUEsY0FDUixDQUFDO0FBQUEsWUFDSDtBQUFBLFVBQ0YsQ0FBQztBQUVEO0FBQUEsWUFBUyxTQUFTLEtBQUs7QUFBQSxZQUNyQjtBQUFBLFlBQ0EsQ0FBQ0MsV0FBVTtBQUNULGtCQUNFQSxRQUFPLFlBQVksT0FDbkI7QUFDQSxxQkFBSyxNQUFNO0FBQ1gscUJBQUssY0FBYyxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUEsY0FDdkM7QUFBQSxZQUNGO0FBQUEsVUFBQztBQUFBLFFBQ0w7QUFFQSxhQUFLLGNBQWMsU0FBUyxXQUFXO0FBQUEsTUFDekM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTUEsTUFBTSxhQUFjO0FBU2xCLFlBQUksS0FBSyxnQkFBZ0I7QUFBUTtBQUdqQyxhQUFLLGNBQWM7QUFHbkIsYUFBSyxjQUFjLElBQUksTUFBTSxPQUFPLENBQUM7QUFHckMsY0FBTSxNQUFNLEtBQUssT0FBTyxnQkFBZ0I7QUFNeEMsWUFBSSxLQUFLLGdCQUFnQjtBQUFZO0FBU3JDLFlBQUksS0FBSyxPQUFPLFlBQVksUUFBUTtBQUNsQyxlQUFLLFNBQVMsWUFBWSxJQUFJLGlCQUFpQixLQUFLLE9BQU8sYUFBYSxJQUFJO0FBQUEsUUFDOUU7QUFHQSxhQUFLLFNBQVM7QUFBQSxNQUNoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFNQSxRQUFTO0FBQ1AsZUFBTyxXQUFXLE1BQU0sWUFBVztBQUVuQyxZQUFJLEtBQUssZ0JBQWdCO0FBQVE7QUFDakMsYUFBSyxjQUFjO0FBQ25CLGFBQUssWUFBWSxNQUFNO0FBQ3ZCLGFBQUssV0FBVztBQUFBLE1BQ2xCO0FBQUEsTUFFQSxJQUFJLFNBQVU7QUFDWixlQUFPLEtBQUssUUFBUTtBQUFBLE1BQ3RCO0FBQUEsTUFFQSxJQUFJLE9BQVEsSUFBSTtBQUNkLFlBQUksS0FBSyxRQUFRLE1BQU07QUFDckIsZUFBSyxvQkFBb0IsUUFBUSxLQUFLLFFBQVEsSUFBSTtBQUFBLFFBQ3BEO0FBRUEsWUFBSSxPQUFPLE9BQU8sWUFBWTtBQUM1QixlQUFLLFFBQVEsT0FBTztBQUNwQixlQUFLLGlCQUFpQixRQUFRLEVBQUU7QUFBQSxRQUNsQyxPQUFPO0FBQ0wsZUFBSyxRQUFRLE9BQU87QUFBQSxRQUN0QjtBQUFBLE1BQ0Y7QUFBQSxNQUVBLElBQUksWUFBYTtBQUNmLGVBQU8sS0FBSyxRQUFRO0FBQUEsTUFDdEI7QUFBQSxNQUVBLElBQUksVUFBVyxJQUFJO0FBQ2pCLFlBQUksS0FBSyxRQUFRLFNBQVM7QUFDeEIsZUFBSyxvQkFBb0IsV0FBVyxLQUFLLFFBQVEsT0FBTztBQUFBLFFBQzFEO0FBRUEsWUFBSSxPQUFPLE9BQU8sWUFBWTtBQUM1QixlQUFLLFFBQVEsVUFBVTtBQUN2QixlQUFLLGlCQUFpQixXQUFXLEVBQUU7QUFBQSxRQUNyQyxPQUFPO0FBQ0wsZUFBSyxRQUFRLFVBQVU7QUFBQSxRQUN6QjtBQUFBLE1BQ0Y7QUFBQSxNQUVBLElBQUksVUFBVztBQUNiLGVBQU8sS0FBSyxRQUFRO0FBQUEsTUFDdEI7QUFBQSxNQUVBLElBQUksUUFBUyxJQUFJO0FBQ2YsWUFBSSxLQUFLLFFBQVEsT0FBTztBQUN0QixlQUFLLG9CQUFvQixTQUFTLEtBQUssUUFBUSxLQUFLO0FBQUEsUUFDdEQ7QUFFQSxZQUFJLE9BQU8sT0FBTyxZQUFZO0FBQzVCLGVBQUssUUFBUSxRQUFRO0FBQ3JCLGVBQUssaUJBQWlCLFNBQVMsRUFBRTtBQUFBLFFBQ25DLE9BQU87QUFDTCxlQUFLLFFBQVEsUUFBUTtBQUFBLFFBQ3ZCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxRQUFNLCtCQUErQjtBQUFBLE1BQ25DLFlBQVk7QUFBQSxRQUNWLFdBQVc7QUFBQSxRQUNYLGNBQWM7QUFBQSxRQUNkLFlBQVk7QUFBQSxRQUNaLE9BQU87QUFBQSxRQUNQLFVBQVU7QUFBQSxNQUNaO0FBQUEsTUFDQSxNQUFNO0FBQUEsUUFDSixXQUFXO0FBQUEsUUFDWCxjQUFjO0FBQUEsUUFDZCxZQUFZO0FBQUEsUUFDWixPQUFPO0FBQUEsUUFDUCxVQUFVO0FBQUEsTUFDWjtBQUFBLE1BQ0EsUUFBUTtBQUFBLFFBQ04sV0FBVztBQUFBLFFBQ1gsY0FBYztBQUFBLFFBQ2QsWUFBWTtBQUFBLFFBQ1osT0FBTztBQUFBLFFBQ1AsVUFBVTtBQUFBLE1BQ1o7QUFBQSxJQUNGO0FBRUEsV0FBTyxpQkFBaUIsYUFBYSw0QkFBNEI7QUFDakUsV0FBTyxpQkFBaUIsWUFBWSxXQUFXLDRCQUE0QjtBQUUzRSxXQUFPLGlCQUFpQixZQUFZLFdBQVc7QUFBQSxNQUM3QyxPQUFPO0FBQUEsTUFDUCxTQUFTO0FBQUEsTUFDVCxXQUFXO0FBQUEsTUFDWCxRQUFRO0FBQUEsTUFDUixZQUFZO0FBQUEsTUFDWixLQUFLO0FBQUEsTUFDTCxpQkFBaUI7QUFBQSxJQUNuQixDQUFDO0FBRUQsV0FBTyxXQUFXLHNCQUFzQixPQUFPLG9CQUFvQjtBQUFBLE1BQ2pFO0FBQUEsUUFDRSxLQUFLO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVztBQUFBLFFBQzdCLGNBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsS0FBSztBQUFBO0FBQUEsUUFDTCxXQUFXLE9BQU8sV0FBVztBQUFBLE1BQy9CO0FBQUEsSUFDRixDQUFDO0FBRUQsV0FBTyxVQUFVO0FBQUEsTUFDZjtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDL2RBO0FBQUE7QUFBQTtBQUVBLFFBQU0sU0FBUztBQUNmLFFBQU0sYUFBYTtBQUNuQixRQUFNLE9BQU87QUFDYixRQUFNLGVBQWU7QUFDckIsUUFBTSxRQUFRO0FBQ2QsUUFBTUMsY0FBYTtBQUNuQixRQUFNLG9CQUFvQjtBQUMxQixRQUFNLGFBQWE7QUFDbkIsUUFBTSxTQUFTO0FBQ2YsUUFBTSxPQUFPO0FBQ2IsUUFBTSxFQUFFLHFCQUFxQixJQUFJO0FBQ2pDLFFBQU0sTUFBTTtBQUNaLFFBQU0saUJBQWlCO0FBQ3ZCLFFBQU0sYUFBYTtBQUNuQixRQUFNLFlBQVk7QUFDbEIsUUFBTSxXQUFXO0FBQ2pCLFFBQU0sYUFBYTtBQUNuQixRQUFNLGVBQWU7QUFDckIsUUFBTSxFQUFFLHFCQUFxQixvQkFBb0IsSUFBSTtBQUNyRCxRQUFNLG1CQUFtQjtBQUN6QixRQUFNLGtCQUFrQjtBQUN4QixRQUFNLDRCQUE0QjtBQUVsQyxXQUFPLE9BQU8sV0FBVyxXQUFXLEdBQUc7QUFFdkMsV0FBTyxRQUFRLGFBQWE7QUFDNUIsV0FBTyxRQUFRLFNBQVM7QUFDeEIsV0FBTyxRQUFRLE9BQU87QUFDdEIsV0FBTyxRQUFRLGVBQWU7QUFDOUIsV0FBTyxRQUFRLFFBQVE7QUFDdkIsV0FBTyxRQUFRLGFBQWFBO0FBQzVCLFdBQU8sUUFBUSxvQkFBb0I7QUFDbkMsV0FBTyxRQUFRLGFBQWE7QUFDNUIsV0FBTyxRQUFRLGVBQWU7QUFFOUIsV0FBTyxRQUFRLG1CQUFtQjtBQUNsQyxXQUFPLFFBQVEsa0JBQWtCO0FBQ2pDLFdBQU8sUUFBUSw0QkFBNEI7QUFDM0MsV0FBTyxRQUFRLGVBQWU7QUFBQSxNQUM1QixVQUFVO0FBQUEsTUFDVixPQUFPO0FBQUEsTUFDUCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsSUFDUDtBQUVBLFdBQU8sUUFBUSxpQkFBaUI7QUFDaEMsV0FBTyxRQUFRLFNBQVM7QUFDeEIsV0FBTyxRQUFRLE9BQU87QUFBQSxNQUNwQixjQUFjLEtBQUs7QUFBQSxNQUNuQixvQkFBb0IsS0FBSztBQUFBLElBQzNCO0FBRUEsYUFBUyxlQUFnQixJQUFJO0FBQzNCLGFBQU8sQ0FBQyxLQUFLLE1BQU1DLGFBQVk7QUFDN0IsWUFBSSxPQUFPLFNBQVMsWUFBWTtBQUM5QixVQUFBQSxXQUFVO0FBQ1YsaUJBQU87QUFBQSxRQUNUO0FBRUEsWUFBSSxDQUFDLE9BQVEsT0FBTyxRQUFRLFlBQVksT0FBTyxRQUFRLFlBQVksRUFBRSxlQUFlLE1BQU87QUFDekYsZ0JBQU0sSUFBSSxxQkFBcUIsYUFBYTtBQUFBLFFBQzlDO0FBRUEsWUFBSSxRQUFRLFFBQVEsT0FBTyxTQUFTLFVBQVU7QUFDNUMsZ0JBQU0sSUFBSSxxQkFBcUIsY0FBYztBQUFBLFFBQy9DO0FBRUEsWUFBSSxRQUFRLEtBQUssUUFBUSxNQUFNO0FBQzdCLGNBQUksT0FBTyxLQUFLLFNBQVMsVUFBVTtBQUNqQyxrQkFBTSxJQUFJLHFCQUFxQixtQkFBbUI7QUFBQSxVQUNwRDtBQUVBLGNBQUlDLFFBQU8sS0FBSztBQUNoQixjQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsR0FBRyxHQUFHO0FBQzlCLFlBQUFBLFFBQU8sSUFBSUEsS0FBSTtBQUFBLFVBQ2pCO0FBRUEsZ0JBQU0sSUFBSSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUUsU0FBU0EsS0FBSTtBQUFBLFFBQ25ELE9BQU87QUFDTCxjQUFJLENBQUMsTUFBTTtBQUNULG1CQUFPLE9BQU8sUUFBUSxXQUFXLE1BQU0sQ0FBQztBQUFBLFVBQzFDO0FBRUEsZ0JBQU0sS0FBSyxTQUFTLEdBQUc7QUFBQSxRQUN6QjtBQUVBLGNBQU0sRUFBRSxPQUFPLGFBQWEsb0JBQW9CLEVBQUUsSUFBSTtBQUV0RCxZQUFJLE9BQU87QUFDVCxnQkFBTSxJQUFJLHFCQUFxQixtREFBbUQ7QUFBQSxRQUNwRjtBQUVBLGVBQU8sR0FBRyxLQUFLLFlBQVk7QUFBQSxVQUN6QixHQUFHO0FBQUEsVUFDSCxRQUFRLElBQUk7QUFBQSxVQUNaLE1BQU0sSUFBSSxTQUFTLEdBQUcsSUFBSSxRQUFRLEdBQUcsSUFBSSxNQUFNLEtBQUssSUFBSTtBQUFBLFVBQ3hELFFBQVEsS0FBSyxXQUFXLEtBQUssT0FBTyxRQUFRO0FBQUEsUUFDOUMsR0FBR0QsUUFBTztBQUFBLE1BQ1o7QUFBQSxJQUNGO0FBRUEsV0FBTyxRQUFRLHNCQUFzQjtBQUNyQyxXQUFPLFFBQVEsc0JBQXNCO0FBRXJDLFFBQU0sWUFBWSxnQkFBMkI7QUFDN0MsV0FBTyxRQUFRLFFBQVEsZUFBZUUsT0FBTyxNQUFNLFVBQVUsUUFBVztBQUN0RSxVQUFJO0FBQ0YsZUFBTyxNQUFNLFVBQVUsTUFBTSxPQUFPO0FBQUEsTUFDdEMsU0FBUyxLQUFLO0FBQ1osWUFBSSxPQUFPLE9BQU8sUUFBUSxVQUFVO0FBQ2xDLGdCQUFNLGtCQUFrQixHQUFHO0FBQUEsUUFDN0I7QUFFQSxjQUFNO0FBQUEsTUFDUjtBQUFBLElBQ0Y7QUFDQSxXQUFPLFFBQVEsVUFBVSxrQkFBbUM7QUFDNUQsV0FBTyxRQUFRLFdBQVcsbUJBQW9DO0FBQzlELFdBQU8sUUFBUSxVQUFVLG1CQUFtQztBQUM1RCxXQUFPLFFBQVEsV0FBVyxtQkFBb0M7QUFDOUQsV0FBTyxRQUFRLE9BQU8sV0FBVyxRQUFRLFVBQVEsYUFBYSxFQUFFO0FBQ2hFLFdBQU8sUUFBUSxhQUFhLHFCQUF3QztBQUVwRSxRQUFNLEVBQUUsaUJBQWlCLGdCQUFnQixJQUFJO0FBRTdDLFdBQU8sUUFBUSxrQkFBa0I7QUFDakMsV0FBTyxRQUFRLGtCQUFrQjtBQUVqQyxRQUFNLEVBQUUsYUFBYSxJQUFJO0FBQ3pCLFFBQU0sRUFBRSxXQUFXLElBQUk7QUFJdkIsV0FBTyxRQUFRLFNBQVMsSUFBSSxhQUFhLFVBQVU7QUFFbkQsUUFBTSxFQUFFLGNBQWMsWUFBWSxlQUFlLFVBQVUsSUFBSTtBQUUvRCxXQUFPLFFBQVEsZUFBZTtBQUM5QixXQUFPLFFBQVEsYUFBYTtBQUM1QixXQUFPLFFBQVEsZ0JBQWdCO0FBQy9CLFdBQU8sUUFBUSxZQUFZO0FBRTNCLFFBQU0sRUFBRSxlQUFlLG1CQUFtQixJQUFJO0FBRTlDLFdBQU8sUUFBUSxnQkFBZ0I7QUFDL0IsV0FBTyxRQUFRLHFCQUFxQjtBQUVwQyxRQUFNLEVBQUUsWUFBWSxZQUFZLGFBQWEsSUFBSTtBQUNqRCxXQUFPLFFBQVEsWUFBWSxvQkFBeUM7QUFDcEUsV0FBTyxRQUFRLGFBQWE7QUFDNUIsV0FBTyxRQUFRLGFBQWE7QUFDNUIsV0FBTyxRQUFRLGVBQWU7QUFFOUIsV0FBTyxRQUFRLFVBQVUsZUFBZSxJQUFJLE9BQU87QUFDbkQsV0FBTyxRQUFRLFNBQVMsZUFBZSxJQUFJLE1BQU07QUFDakQsV0FBTyxRQUFRLFdBQVcsZUFBZSxJQUFJLFFBQVE7QUFDckQsV0FBTyxRQUFRLFVBQVUsZUFBZSxJQUFJLE9BQU87QUFDbkQsV0FBTyxRQUFRLFVBQVUsZUFBZSxJQUFJLE9BQU87QUFFbkQsV0FBTyxRQUFRLGFBQWE7QUFDNUIsV0FBTyxRQUFRLFdBQVc7QUFDMUIsV0FBTyxRQUFRLFlBQVk7QUFDM0IsV0FBTyxRQUFRLGFBQWE7QUFFNUIsUUFBTSxFQUFFLFlBQVksSUFBSTtBQUV4QixXQUFPLFFBQVEsY0FBYztBQUFBO0FBQUE7Ozs7Ozs7QUM1SDdCLFlBQUEsU0FBQUM7QUFnQ0EsWUFBQSxRQUFBQztBQXRFQSxRQUFNLGNBQWM7QUFDcEIsUUFBTSxlQUFlO0FBS3JCLFFBQU0sZUFBZTtBQVNyQixRQUFNLGNBQ0o7QUFLRixRQUFNLGNBQThCLE1BQUs7QUFDdkMsWUFBTSxJQUFJLFdBQUE7TUFBYTtBQUN2QixRQUFFLFlBQVksdUJBQU8sT0FBTyxJQUFJO0FBQ2hDLGFBQU87SUFDVCxHQUFFO0FBYUYsYUFBZ0JELFFBQU8sS0FBeUI7QUFDOUMsWUFBTSxFQUFFLE1BQU0sV0FBVSxJQUFLO0FBRTdCLFVBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLElBQUksR0FBRztBQUNwQyxjQUFNLElBQUksVUFBVSxpQkFBaUIsSUFBSSxFQUFFO01BQzdDO0FBRUEsVUFBSSxTQUFTO0FBRWIsVUFBSSxZQUFZO0FBQ2QsbUJBQVcsU0FBUyxPQUFPLEtBQUssVUFBVSxHQUFHO0FBQzNDLGNBQUksQ0FBQyxhQUFhLEtBQUssS0FBSyxHQUFHO0FBQzdCLGtCQUFNLElBQUksVUFBVSwyQkFBMkIsS0FBSyxFQUFFO1VBQ3hEO0FBRUEsb0JBQVUsS0FBSyxLQUFLLElBQUksUUFBUSxXQUFXLEtBQUssQ0FBQyxDQUFDO1FBQ3BEO01BQ0Y7QUFFQSxhQUFPO0lBQ1Q7QUFZQSxhQUFnQkMsT0FBTSxRQUFnQixTQUFzQjtBQUMxRCxZQUFNLE1BQU0sT0FBTztBQUNuQixVQUFJLFFBQVEsUUFBUSxRQUFRLEdBQUcsR0FBRztBQUVsQyxZQUFNLGFBQWE7QUFDbkIsY0FBUSxVQUFVLFFBQVEsT0FBTyxHQUFHO0FBQ3BDLFlBQU0sV0FBVyxZQUFZLFFBQVEsWUFBWSxLQUFLO0FBQ3RELFlBQU0sT0FBTyxPQUFPLE1BQU0sWUFBWSxRQUFRLEVBQUUsWUFBVztBQUMzRCxZQUFNLGFBQ0osU0FBUyxlQUFlLFFBQ3BCLElBQUksV0FBVSxJQUNkLGdCQUFnQixRQUFRLE9BQU8sR0FBRztBQUV4QyxhQUFPLEVBQUUsTUFBTSxXQUFVO0lBQzNCO0FBRUEsUUFBTSxLQUFLO0FBQ1gsUUFBTSxPQUFPO0FBQ2IsUUFBTSxPQUFPO0FBQ2IsUUFBTSxLQUFLO0FBQ1gsUUFBTSxTQUFTO0FBQ2YsUUFBTSxTQUFTO0FBS2YsYUFBUyxnQkFDUCxRQUNBLE9BQ0EsS0FBVztBQUVYLFlBQU0sYUFBcUMsSUFBSSxXQUFVO0FBRXpEO0FBQVcsZUFBTyxRQUFRLEtBQUs7QUFDN0Isa0JBQVEsUUFBUSxRQUFRLFFBQVEsR0FBcUIsR0FBRztBQUV4RCxnQkFBTSxXQUFXO0FBRWpCLGlCQUFPLFFBQVEsS0FBSztBQUNsQixrQkFBTSxPQUFPLE9BQU8sV0FBVyxLQUFLO0FBQ3BDLGdCQUFJLFNBQVM7QUFBTSx1QkFBUztBQUU1QixnQkFBSSxTQUFTLElBQUk7QUFDZixvQkFBTSxTQUFTLFlBQVksUUFBUSxVQUFVLEtBQUs7QUFDbEQsb0JBQU0sTUFBTSxPQUFPLE1BQU0sVUFBVSxNQUFNLEVBQUUsWUFBVztBQUV0RCxzQkFBUSxRQUFRLFFBQVEsUUFBUSxHQUFHLEdBQUc7QUFFdEMsa0JBQUksUUFBUSxPQUFPLE9BQU8sV0FBVyxLQUFLLE1BQU0sUUFBUTtBQUN0RDtBQUVBLG9CQUFJLFFBQVE7QUFDWix1QkFBTyxRQUFRLEtBQUs7QUFDbEIsd0JBQU1DLFFBQU8sT0FBTyxXQUFXLE9BQU87QUFDdEMsc0JBQUlBLFVBQVMsUUFBUTtBQUNuQiw0QkFBUSxVQUFVLFFBQVEsT0FBTyxHQUFHO0FBQ3BDLHdCQUFJLFdBQVcsR0FBRyxNQUFNO0FBQVcsaUNBQVcsR0FBRyxJQUFJO0FBQ3JEO2tCQUNGO0FBRUEsc0JBQUlBLFVBQVMsVUFBVSxRQUFRLEtBQUs7QUFDbEMsNkJBQVMsT0FBTyxPQUFPO0FBQ3ZCO2tCQUNGO0FBRUEsMkJBQVMsT0FBTyxhQUFhQSxLQUFJO2dCQUNuQztBQUVBLHlCQUFTO2NBQ1g7QUFFQSxvQkFBTSxhQUFhO0FBQ25CLHNCQUFRLFVBQVUsUUFBUSxPQUFPLEdBQUc7QUFFcEMsa0JBQUksV0FBVyxHQUFHLE1BQU0sUUFBVztBQUNqQyxzQkFBTSxXQUFXLFlBQVksUUFBUSxZQUFZLEtBQUs7QUFDdEQsMkJBQVcsR0FBRyxJQUFJLE9BQU8sTUFBTSxZQUFZLFFBQVE7Y0FDckQ7QUFFQSx1QkFBUztZQUNYO0FBRUE7VUFDRjtRQUNGO0FBRUEsYUFBTztJQUNUO0FBS0EsYUFBUyxVQUFVLEtBQWEsT0FBZSxLQUFXO0FBQ3hELGFBQU8sUUFBUSxLQUFLO0FBQ2xCLGNBQU0sT0FBTyxJQUFJLFdBQVcsS0FBSztBQUNqQyxZQUFJLFNBQVM7QUFBTTtBQUNuQjtNQUNGO0FBQ0EsYUFBTztJQUNUO0FBT0EsYUFBUyxRQUFRLFFBQWdCLE9BQWUsS0FBVztBQUN6RCxhQUFPLFFBQVEsS0FBSztBQUNsQixjQUFNLE9BQU8sT0FBTyxXQUFXLEtBQUs7QUFDcEMsWUFBSSxTQUFTLE1BQU0sU0FBUztBQUFNO0FBQ2xDO01BQ0Y7QUFDQSxhQUFPO0lBQ1Q7QUFPQSxhQUFTLFlBQVksUUFBZ0IsT0FBZSxLQUFXO0FBQzdELGFBQU8sTUFBTSxPQUFPO0FBQ2xCLGNBQU0sT0FBTyxPQUFPLFdBQVcsTUFBTSxDQUFDO0FBQ3RDLFlBQUksU0FBUyxNQUFNLFNBQVM7QUFBTTtBQUNsQztNQUNGO0FBQ0EsYUFBTztJQUNUO0FBS0EsYUFBUyxRQUFRLEtBQVc7QUFDMUIsVUFBSSxhQUFhLEtBQUssR0FBRztBQUFHLGVBQU87QUFDbkMsVUFBSSxZQUFZLEtBQUssR0FBRztBQUFHLGVBQU8sSUFBSSxJQUFJLFFBQVEsY0FBYyxNQUFNLENBQUM7QUFFdkUsWUFBTSxJQUFJLFVBQVUsNEJBQTRCLEdBQUcsRUFBRTtJQUN2RDs7Ozs7Ozs7O0FDck5BLFlBQUEsY0FBQUM7QUEyQkEsWUFBQSxjQUFBO0FBM0JBLGFBQWdCQSxhQUFZLFFBQVc7QUFDckMsWUFBTSxXQUFXLE9BQU8sYUFBYTtBQUVyQyxVQUFJLFlBQVksTUFBTSxHQUFHO0FBQ3ZCLGVBQU87TUFDVDtBQUVBLFlBQU0sWUFBWSxNQUFLO0FBQ3JCLFlBQUksVUFBVTtBQUNaLGlCQUFPLFFBQVEsSUFBSSxhQUFhLEtBQUssUUFBUSxJQUFJLGFBQWE7UUFDaEUsT0FBTztBQUNMLGlCQUFPLFFBQVEsSUFBSSxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVk7UUFDOUQ7TUFDRixHQUFFO0FBRUYsVUFBSSxVQUFVO0FBQ1osWUFBSTtBQUNGLGlCQUFPLElBQUksV0FBVyxRQUFRO1FBQ2hDLFNBQUVDLEtBQU07QUFDTixjQUFJLENBQUMsU0FBUyxXQUFXLFNBQVMsS0FBSyxDQUFDLFNBQVMsV0FBVyxVQUFVO0FBQ3BFLG1CQUFPLElBQUksV0FBVyxVQUFVLFFBQVEsRUFBRTtRQUM5QztNQUNGLE9BQU87QUFDTCxlQUFPO01BQ1Q7SUFDRjtBQUVBLGFBQWdCLFlBQVksUUFBVztBQUNyQyxVQUFJLENBQUMsT0FBTyxVQUFVO0FBQ3BCLGVBQU87TUFDVDtBQUVBLFlBQU0sVUFBVSxPQUFPO0FBQ3ZCLFVBQUksa0JBQWtCLE9BQU8sR0FBRztBQUM5QixlQUFPO01BQ1Q7QUFFQSxZQUFNLFVBQVUsUUFBUSxJQUFJLFVBQVUsS0FBSyxRQUFRLElBQUksVUFBVSxLQUFLO0FBQ3RFLFVBQUksQ0FBQyxTQUFTO0FBQ1osZUFBTztNQUNUO0FBR0EsVUFBSTtBQUNKLFVBQUksT0FBTyxNQUFNO0FBQ2Ysa0JBQVUsT0FBTyxPQUFPLElBQUk7TUFDOUIsV0FBVyxPQUFPLGFBQWEsU0FBUztBQUN0QyxrQkFBVTtNQUNaLFdBQVcsT0FBTyxhQUFhLFVBQVU7QUFDdkMsa0JBQVU7TUFDWjtBQUdBLFlBQU0sZ0JBQWdCLENBQUMsT0FBTyxTQUFTLFlBQVcsQ0FBRTtBQUNwRCxVQUFJLE9BQU8sWUFBWSxVQUFVO0FBQy9CLHNCQUFjLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRTtNQUNyRDtBQUdBLGlCQUFXLG9CQUFvQixRQUM1QixNQUFNLEdBQUcsRUFDVCxJQUFJLE9BQUssRUFBRSxLQUFJLEVBQUcsWUFBVyxDQUFFLEVBQy9CLE9BQU8sT0FBSyxDQUFDLEdBQUc7QUFDakIsWUFDRSxxQkFBcUIsT0FDckIsY0FBYyxLQUNaLE9BQ0UsTUFBTSxvQkFDTixFQUFFLFNBQVMsSUFBSSxnQkFBZ0IsRUFBRSxLQUNoQyxpQkFBaUIsV0FBVyxHQUFHLEtBQzlCLEVBQUUsU0FBUyxHQUFHLGdCQUFnQixFQUFFLENBQUUsR0FFeEM7QUFDQSxpQkFBTztRQUNUO01BQ0Y7QUFFQSxhQUFPO0lBQ1Q7QUFFQSxhQUFTLGtCQUFrQixNQUFZO0FBQ3JDLFlBQU0sWUFBWSxLQUFLLFlBQVc7QUFDbEMsYUFDRSxjQUFjLGVBQ2QsVUFBVSxXQUFXLE1BQU0sS0FDM0IsVUFBVSxXQUFXLE9BQU8sS0FDNUIsVUFBVSxXQUFXLG1CQUFtQjtJQUU1QztBQUVBLFFBQU0sYUFBTixjQUF5QixJQUFHO01BSTFCLFlBQVksS0FBbUIsTUFBbUI7QUFDaEQsY0FBTSxLQUFLLElBQUk7QUFDZixhQUFLLG1CQUFtQixtQkFBbUIsTUFBTSxRQUFRO0FBQ3pELGFBQUssbUJBQW1CLG1CQUFtQixNQUFNLFFBQVE7TUFDM0Q7TUFFQSxJQUFJLFdBQVE7QUFDVixlQUFPLEtBQUs7TUFDZDtNQUVBLElBQUksV0FBUTtBQUNWLGVBQU8sS0FBSztNQUNkOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckRGLFlBQUEsY0FBQUM7QUFvRUEsWUFBQSxVQUFBO0FBdkhBLFFBQUEsT0FBQSxhQUFBLFVBQUEsTUFBQSxDQUFBO0FBQ0EsUUFBQSxRQUFBLGFBQUEsVUFBQSxPQUFBLENBQUE7QUFHQSxRQUFBLEtBQUEsYUFBQSxlQUFBO0FBQ0EsUUFBQUMsVUFBQSxhQUFBLGlCQUFBO0FBQ0EsUUFBQSxXQUFBO0FBRUEsUUFBWUM7QUFBWixLQUFBLFNBQVlBLFlBQVM7QUFDbkIsTUFBQUEsV0FBQUEsV0FBQSxJQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxpQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsa0JBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGVBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFVBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGFBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFVBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGFBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLG1CQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxtQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsWUFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsY0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsaUJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFdBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFVBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGtCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxlQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSw2QkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsZ0JBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFVBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLE1BQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLGlCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxxQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUFBLFdBQUFBLFdBQUEsZ0JBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLFlBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBQSxXQUFBQSxXQUFBLG9CQUFBLElBQUEsR0FBQSxJQUFBO0FB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O0FBQUEsUUFDcko7QUFBQSxNQUNEO0FBQUEsSUFDRCxHQUFHO0FBTUgsWUFBUSxTQUFTO0FBQUEsTUFDaEI7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNEO0FBV0EsYUFBUyxZQUFZO0FBSXBCLFVBQUksT0FBTyxXQUFXLGVBQWUsT0FBTyxZQUFZLE9BQU8sUUFBUSxTQUFTLGNBQWMsT0FBTyxR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QUNyRTs7QUFHRixRQUFhLGFBQWIsY0FBZ0MsS0FBSTtNQUNsQyxVQUFPO0FBQ0wsZUFBTztVQUNMO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNOztNQUV0QjtNQUVBLFNBQU07QUFDSixlQUFPO1VBQ0wsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEO1VBRUgsSUFBSSxlQUNGLE1BQ0E7WUFDRTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUM1RDtXQUNEOztNQUdQO01BRUEsS0FBSyxPQUFjO0FBQ2pCLGVBQU8sU0FBUyxNQUFNLFVBQVUsaUJBQWlCO01BQ25EOztBQXpMRixZQUFBLGFBQUE7QUE0TEEsUUFBYSxhQUFiLGNBQWdDLEtBQUk7TUFDbEMsVUFBTztBQUNMLGVBQU87VUFDTDtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTs7TUFFdEI7TUFFQSxTQUFNO0FBQ0osZUFBTztVQUNMLElBQUksZUFDRixNQUNBO1lBQ0U7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7V0FDRDtVQUVILElBQUksZUFDRixNQUNBO1lBQ0U7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7V0FDRDtVQUVILElBQUksZUFDRixNQUNBO1lBQ0U7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7V0FDRDtVQUVILElBQUksZUFDRixNQUNBO1lBQ0U7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFDNUQ7V0FDRDs7TUFHUDtNQUVBLEtBQUssS0FBWTtBQUNmLGVBQU8sT0FBTyxJQUFJLFVBQVUsaUJBQWlCO01BQy9DOztBQS9GRixZQUFBLGFBQUE7QUFrR0EsUUFBYSxhQUFiLGNBQWdDLEtBQUk7TUFDbEMsVUFBTztBQUNMLGVBQU87VUFDTDtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTs7TUFFdEI7TUFFQSxTQUFNO0FBQ0osZUFBTztVQUNMO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEOztNQUVKO01BRUEsT0FBSTtBQUNGLGVBQU87TUFDVDtNQUVBLFdBQVE7QUFDTixlQUFPO01BQ1Q7O0FBakRGLFlBQUEsYUFBQTtBQW9EQSxRQUFhLGFBQWIsY0FBZ0MsS0FBSTtNQUNsQyxVQUFPO0FBQ0wsZUFBTztVQUNMO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNOztNQUV0QjtNQUVBLFNBQU07QUFDSixlQUFPO1VBQ0w7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7O01BRUo7TUFFQSxPQUFJO0FBQ0YsZUFBTztNQUNUO01BRUEsV0FBUTtBQUNOLGVBQU87TUFDVDs7QUFqREYsWUFBQSxhQUFBO0FBb0RBLFFBQWEsYUFBYixjQUFnQyxLQUFJO01BQ2xDLFVBQU87QUFDTCxlQUFPO1VBQ0w7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07O01BRXRCO01BRUEsU0FBTTtBQUNKLGVBQU87VUFDTDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDs7TUFFSjtNQUVBLEtBQUssS0FBWTtBQUNmLGVBQU8sT0FBTyxJQUFJLFVBQVUsaUJBQWlCO01BQy9DO01BRUEsV0FBUTtBQUNOLGVBQU87TUFDVDs7QUFqREYsWUFBQSxhQUFBO0FBb0RBLFFBQWEsYUFBYixjQUFnQyxLQUFJO01BQ2xDLFVBQU87QUFDTCxlQUFPO1VBQ0w7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07O01BRXRCO01BRUEsU0FBTTtBQUNKLGVBQU87VUFDTCxJQUFJLGVBQ0YsTUFDQTtZQUNFO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1dBQ0Q7VUFFSCxJQUFJLGVBQ0YsTUFDQTtZQUNFO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1lBQVU7WUFBVTtZQUFVO1lBQVU7WUFBVTtZQUFVO1lBQzVEO1dBQ0Q7O01BR1A7TUFFQSxLQUFLLEtBQVk7QUFDZixlQUFPLE9BQU8sSUFBSSxVQUFVLGlCQUFpQjtNQUMvQztNQUVBLFdBQVE7QUFDTixlQUFPO01BQ1Q7O0FBckVGLFlBQUEsYUFBQTtBQXdFQSxRQUFhLGFBQWIsY0FBZ0MsS0FBSTtNQUNsQyxVQUFPO0FBQ0wsZUFBTztVQUNMO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNOztNQUV0QjtNQUVBLFNBQU07QUFDSixlQUFPO1VBQ0w7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7O01BRUo7TUFFQSxLQUFLLEtBQVk7QUFDZixlQUFPLE9BQU8sSUFBSSxVQUFVLGlCQUFpQjtNQUMvQztNQUVBLFdBQVE7QUFDTixlQUFPO01BQ1Q7O0FBakRGLFlBQUEsYUFBQTtBQW9EQSxRQUFhLGVBQWIsY0FBa0MsS0FBSTtNQUNwQyxVQUFPO0FBQ0wsZUFBTztVQUNMO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNOztNQUV0QjtNQUVBLFNBQU07QUFDSixlQUFPO1VBQ0w7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFDNUQ7O01BRUo7TUFFQSxPQUFJO0FBQ0YsZUFBTztNQUNUO01BRUEsV0FBUTtBQUNOLGVBQU87TUFDVDs7QUFqREYsWUFBQSxlQUFBO0FBb0RBLFFBQWEsZUFBYixjQUFrQyxLQUFJO01BQ3BDLFVBQU87QUFDTCxlQUFPO1VBQ0w7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07O01BRXRCO01BRUEsU0FBTTtBQUNKLGVBQU87VUFDTDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUM1RDs7TUFFSjtNQUVBLE9BQUk7QUFDRixlQUFPO01BQ1Q7TUFFQSxXQUFRO0FBQ04sZUFBTztNQUNUOztBQWpERixZQUFBLGVBQUE7QUFvREEsUUFBYSxTQUFiLGNBQTRCLEtBQUk7TUFDOUIsVUFBTztBQUNMLGVBQU87VUFDTDtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFDbEU7VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQ2xFO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUFNO1VBQU07VUFBTTtVQUNsRTtVQUFNO1VBQU07VUFBTTs7TUFFdEI7TUFFQSxTQUFNO0FBQ0osZUFBTztVQUNMO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEO1VBQVU7VUFBVTtVQUFVO1VBQVU7VUFBVTtVQUFVO1VBQzVEOztNQUVKO01BRUEsT0FBSTtBQUNG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UTtBQUFBLE1BQ1IsUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BRVQsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2Isb0JBQW9CO0FBQUEsTUFDcEIsa0JBQWtCO0FBQUEsTUFDbEIsaUJBQWlCO0FBQUEsTUFDakIsa0JBQWtCO0FBQUEsTUFDbEIsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BRWIsSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osSUFBSTtBQUFBLE1BQ0osS0FBSztBQUFBLE1BRUwsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BRVYsT0FBTztBQUFBLE1BQ1AsUUFBUTtBQUFBLE1BRVIsVUFBVTtBQUFBLE1BRVYsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BRVQsT0FBTztBQUFBLE1BQ1AsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BRVQsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BRVQsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BRVYsTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLE1BRVAsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsV0FBVztBQUFBLE1BRVgsU0FBUztBQUFBLE1BQ1QsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BRWIsS0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BRVAsa0JBQWtCO0FBQUEsTUFDbEIsZUFBZTtBQUFBLE1BQ2YscUJBQXFCO0FBQUEsTUFDckIsVUFBVTtBQUFBLE1BQ1Ysb0JBQW9CO0FBQUEsTUFDcEIsTUFBTTtBQUFBLE1BRU4sTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLE1BQ1IsWUFBWTtBQUFBLE1BRVosU0FBUztBQUFBLE1BQ1QsT0FBTztBQUFBLE1BQ1AsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BRVQsU0FBUztBQUFBLE1BQ1QsT0FBTztBQUFBLE1BQ1AsU0FBUztBQUFBLE1BRVQsY0FBYztBQUFBLE1BRWQsVUFBVTtBQUFBLE1BQ1YsV0FBVztBQUFBLE1BRVgsVUFBVTtBQUFBLE1BQ1YsSUFBSTtBQUFBLE1BRUosbUJBQW1CO0FBQUEsTUFDbkIsZ0JBQWdCO0FBQUEsTUFDaEIsSUFBSTtBQUFBLE1BRUosWUFBWTtBQUFBLE1BQ1osSUFBSTtBQUFBLE1BQ0osUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BRVQsS0FBSztBQUFBLE1BQ0wsYUFBYTtBQUFBLElBQ2Y7QUFBQTtBQUFBOzs7QUNqTEE7QUFBQTtBQUFBO0FBR0EsV0FBTyxVQUFVO0FBQUEsTUFDZixPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxjQUFjO0FBQUEsUUFDWixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsU0FBUztBQUFBLE1BQ1QsZUFBZTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFVBQVU7QUFBQSxNQUNWLGVBQWU7QUFBQSxRQUNiLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxVQUFVO0FBQUEsTUFDVixlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsVUFBVTtBQUFBLE1BQ1YsZUFBZTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFVBQVU7QUFBQSxNQUNWLGVBQWU7QUFBQSxRQUNiLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxVQUFVO0FBQUEsTUFDVixlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsVUFBVTtBQUFBLE1BQ1YsZUFBZTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFVBQVU7QUFBQSxNQUNWLGVBQWU7QUFBQSxRQUNiLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxVQUFVO0FBQUEsTUFDVixlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLFFBQ1YsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFlBQVk7QUFBQSxRQUNWLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxZQUFZO0FBQUEsUUFDVixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsWUFBWTtBQUFBLFFBQ1YsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFlBQVk7QUFBQSxRQUNWLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxZQUFZO0FBQUEsUUFDVixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsWUFBWTtBQUFBLFFBQ1YsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLFlBQVk7QUFBQSxRQUNWLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxZQUFZO0FBQUEsUUFDVixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsYUFBYTtBQUFBLFFBQ1gsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLGFBQWE7QUFBQSxRQUNYLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxhQUFhO0FBQUEsUUFDWCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsYUFBYTtBQUFBLFFBQ1gsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLGFBQWE7QUFBQSxRQUNYLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxhQUFhO0FBQUEsUUFDWCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixZQUFZO0FBQUEsTUFDWixTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixZQUFZO0FBQUEsTUFDWixTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixZQUFZO0FBQUEsTUFDWixTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixZQUFZO0FBQUEsTUFDWixTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixZQUFZO0FBQUEsTUFDWixTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixZQUFZO0FBQUEsTUFDWixTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLE1BQ1YsWUFBWTtBQUFBLE1BQ1osVUFBVTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLGFBQWE7QUFBQSxNQUNiLFVBQVU7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixVQUFVO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsYUFBYTtBQUFBLE1BQ2IsVUFBVTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLGFBQWE7QUFBQSxNQUNiLFVBQVU7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixVQUFVO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsYUFBYTtBQUFBLE1BQ2IsVUFBVTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLGFBQWE7QUFBQSxNQUNiLFVBQVU7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsUUFDYixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsZUFBZTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFlBQVk7QUFBQSxRQUNWLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxjQUFjO0FBQUEsUUFDWixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsWUFBWTtBQUFBLFFBQ1YsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLGNBQWM7QUFBQSxRQUNaLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxXQUFXO0FBQUEsUUFDVCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsY0FBYztBQUFBLFFBQ1osUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLGNBQWM7QUFBQSxRQUNaLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsU0FBUztBQUFBLFFBQ1AsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsWUFBWTtBQUFBLFFBQ1YsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFVBQVU7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxRQUFRO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsbUJBQW1CO0FBQUEsUUFDakIsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLGNBQWM7QUFBQSxRQUNaLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLFlBQVk7QUFBQSxRQUNWLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxZQUFZO0FBQUEsUUFDVixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsWUFBWTtBQUFBLFFBQ1YsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLGFBQWE7QUFBQSxRQUNYLFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxNQUNYO0FBQUEsTUFDQSxTQUFTO0FBQUEsUUFDUCxRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsTUFDWDtBQUFBLE1BQ0EsVUFBVTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsU0FBUztBQUFBLE1BQ1g7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDbGNBO0FBQUE7QUFBQTtBQUNBLFFBQUlFLFVBQVMsZ0JBQXdCO0FBTXJDLFlBQVEsUUFBUTtBQUVoQixRQUFJLGFBQWE7QUFDakIsUUFBSSxlQUFlO0FBQ25CLFFBQUksWUFBWTtBQUNoQixRQUFJ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QUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyxvVEFBcUQ7QUFBQSxNQUM3RCxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFBQU8sZ3ZCQUErSDtBQUFBLE1BQ3ZJLENBQUMsUUFBTyw0WEFBaUU7QUFBQSxNQUN6RSxDQUFDLFFB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LHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLG9UQUFxRDtBQUFBLE1BQzdELENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sc2pCQUFnRztBQUFBLE1BQ3hHLENBQUMsUUFBTyxz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QU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxDQUFDO0FBQUEsTUFDYixDQUFDLFFBQU8sY0FBSTtBQUFBLE1BQ1osQ0FBQyxRQUFPLGNBQUk7QUFBQSxNQUNaLENBQUMsUUFBTyxjQUFJO0FBQUEsTUFDWixDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxJQUFHLFFBQUc7QUFBQSxNQUNsQixDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxDQUFDO0FBQUEsTUFDYixDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxDQUFDO0FBQUEsTUFDYixDQUFDLFFBQU8sVUFBSSxDQUFDO0FBQUEsTUFDYixDQUFDLFFBQU8sY0FBSTtBQUFBLE1BQ1osQ0FBQyxRQUFPLFFBQUc7QUFBQSxNQUNYLENBQUMsUUFBTyxVQUFJLENBQUM7QUFBQSxNQUNiLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxRQUFHO0FBQUEsTUFDWCxDQUFDLFFBQU8sUUFBRztBQUFBLE1BQ1gsQ0FBQyxRQUFPLDBCQUFNO0FBQUEsTUFDZCxDQUFDLFFBQU8sVUFBSSxFQUFFO0FBQUEsTUFDZCxDQUFDLFFBQU8sUUFBRztBQUFBLE1BQ1gsQ0FBQyxRQUFPLFFBQUc7QUFBQSxNQUNYLENBQUMsUUFBTyxvQkFBSztBQUFBLE1BQ2IsQ0FBQyxRQUFPLGdCQUFLLEVBQUU7QUFBQSxNQUNmLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLENBQUM7QUFBQSxNQUNiLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyxVQUFJLEVBQUU7QUFBQSxNQUNkLENBQUMsUUFBTyw0UkFBaUQ7QUFBQSxNQUN6RCxDQUFDLFFBQU8sMEpBQTRCLEdBQUUsc0JBQU0sRUFBRTtBQUFBLE1BQzlDLENBQUMsWUFBVyxRQUFHO0FBQUEsSUFDZjtBQUFBO0FBQUE7OztBQ3ZEQTtBQUFBO0FBQUEsdUJBQUMsUUFBUyxDQUFDLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxLQUFLLEdBQUUsU0FBVSxDQUFDLEdBQUUsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLElBQUcsSUFBRyxJQUFHLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxNQUFLLE1BQUssTUFBSyxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9BQU0sT0FBTSxPQUFNLE9B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LFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLHNqQkFBZ0c7QUFBQSxNQUN4RyxDQUFDLFFBQU8sNFhBQWlFO0FBQUEsTUFDekUsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJBQWdHO0FBQUEsTUFDeEcsQ0FBQyxRQUFPLDRYQUFpRTtBQUFBLE1BQ3pFLENBQUMsUUFBTyxzakJB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LEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFNBQVMsU0FBUyxPQUFPO0FBRTVqRSxJQUFNLDRCQUE0QjtBQUNsQyxJQUFNLDRCQUE0QjtBQUNsQyxJQUFNLGtCQUFrQixDQUFDLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxLQUFLO0FBVWpFLElBQU0sdUJBQXVCO0FBQzdCLElBQU0sdUJBQXVCO0FBQzdCLElBQU0sYUFBYSxDQUFDLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sTUFBTSxNQUFNLE1BQU0sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFB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b0I7QUFBQSxFQUNwQixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxpQkFBaUI7QUFBQSxFQUNqQixTQUFTO0FBQUEsRUFDVCxXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixnQkFBZ0I7QUFBQSxFQUNoQixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixnQkFBZ0I7QUFBQSxFQUNoQixXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxnQkFBZ0I7QUFBQSxFQUNoQixlQUFlO0FBQUEsRUFDZixlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixlQUFlO0FBQUEsRUFDZixTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxlQUFlO0FBQUEsRUFDZixhQUFhO0FBQUEsRUFDYixjQUFjO0FBQUEsRUFDZCxZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixjQUFjO0FBQUEsRUFDZCxNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxrQkFBa0I7QUFBQSxFQUNsQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixjQUFjO0FBQUEsRUFDZCxpQkFBaUI7QUFBQSxFQUNqQixzQkFBc0I7QUFBQSxFQUN0QixrQkFBa0I7QUFBQSxFQUNsQixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixlQUFlO0FBQUEsRUFDZixrQkFBa0I7QUFBQSxFQUNsQix1QkFBdUI7QUFBQSxFQUN2QixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQiwyQkFBMkI7QUFBQSxFQUMzQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixvQkFBb0I7QUFBQSxFQUNwQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQix3QkFBd0I7QUFBQSxFQUN4QixrQkFBa0I7QUFBQSxFQUNsQixrQkFBa0I7QUFBQSxFQUNsQixhQUFhO0FBQUEsRUFDYixnQkFBZ0I7QUFBQSxFQUNoQixxQkFBcUI7QUFBQSxFQUNyQixpQkFBaUI7QUFBQSxFQUNqQixpQkFBaUI7QUFBQSxFQUNqQix5QkFBeUI7QUFBQSxFQUN6QixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixnQkFBZ0I7QUFBQSxFQUNoQiw0QkFBNEI7QUFBQSxFQUM1Qix3QkFBd0I7QUFBQSxFQUN4QixvQkFBb0I7QUFBQSxFQUNwQix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixrQ0FBa0M7QUFBQSxFQUNsQyw0QkFBNEI7QUFBQSxFQUM1QixzQkFBc0I7QUFBQSxFQUN0QixpQkFBaUI7QUFBQSxFQUNqQiw2QkFBNkI7QUFBQSxFQUM3Qix5QkFBeUI7QUFBQSxFQUN6QixxQkFBcUI7QUFBQSxFQUNyQix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixtQ0FBbUM7QUFBQSxFQUNuQyw2QkFBNkI7QUFBQSxFQUM3Qix1QkFBdUI7QUFBQSxFQUN2QixtQkFBbUI7QUFBQSxFQUNuQiwrQkFBK0I7QUFBQSxFQUMvQiwyQkFBMkI7QUFBQSxFQUMzQix1QkFBdUI7QUFBQSxFQUN2QiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixxQ0FBcUM7QUFBQSxFQUNyQyx5QkFBeUI7QUFBQSxFQUN6QiwrQkFBK0I7QUFBQSxFQUMvQixpQkFBaUI7QUFBQSxFQUNqQiw2QkFBNkI7QUFBQSxFQUM3Qix5QkFBeUI7QUFBQSxFQUN6QixxQkFBcUI7QUFBQSxFQUNyQix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixtQ0FBbUM7QUFBQSxFQUNuQyx1QkFBdUI7QUFBQSxFQUN2Qiw2QkFBNkI7QUFBQSxFQUM3QixxQkFBcUI7QUFBQSxFQUNyQixxQ0FBcUM7QUFBQSxFQUNyQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyx5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFB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QSxJQUNGLE9BQU87QUFDTCxNQUFLLFVBQVUsa0JBQWtCLENBQUMsRUFBRTtBQUFBLElBQ3RDO0FBQUEsRUFDRjtBQUNGO0FBRUEsTUFBTSxJQUFJOyIsCiAgIm5hbWVzIjogWyJhc3NlcnQiLCAiaHR0cE92ZXJIdHRwIiwgImh0dHBzT3Zlckh0dHAiLCAiaHR0cE92ZXJIdHRwcyIsICJodHRwc092ZXJIdHRwcyIsICJvcHRpb25zIiwgImRlYnVnIiwgImVycm9yIiwgInNvY2tldCIsICJyZXF1aXJlX3R1bm5lbCIsICJhc3NlcnQiLCAiQmxvYiIsICJwYXRoIiwgImlkeCIsICJzdHJlYW0iLCAiaGFuZGxlciIsICJpdGVyYXRvciIsICJyYW5nZSIsICJyZXF1ZXN0IiwgImVyciIsICJlcnJvciIsICJwYXRoIiwgImFzc2VydCIsICJwYXRoIiwgInF1ZXJ5IiwgImhhbmRsZXIiLCAiZXJyb3IiLCAicmVxdWVzdCIsICJyZXNvbHZlIiwgImVyciIsICJoYW5kbGVyIiwgImFzc2VydCIsICJub29wIiwgInNlc3Npb24iLCAicmVxdWlyZV9jb25zdGFudHMiLCAiRVJST1IiLCAiVFlQRSIsICJGTEFHUyIsICJMRU5JRU5UX0ZMQUdTIiwgIk1FVEhPRFMiLCAiRklOSVNIIiwgIkhFQURFUl9TVEFURSIsICJCdWZmZXIiLCAiQnVmZmVyIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgImFzc2VydCIsICJ0eXBlcyIsICJpbnNwZWN0IiwgImNvbnRleHQiLCAia2V5cyIsICJyZXF1aXJlX3V0aWwiLCAicGVyZm9ybWFuY2UiLCAiYXNzZXJ0IiwgInJlcXVlc3QiLCAicmVzb2x2ZSIsICJyZXF1aXJlX3N5bWJvbHMiLCAiQmxvYiIsICJlbnRyeSIsICJhc3NlcnQiLCAiY2hlY2siLCAiQmxvYiIsICJhc3NlcnQiLCAibm9vcCIsICJlc2NhcGUiLCAiY2h1bmsiLCAiaXRlcmF0b3IiLCAidmFsdWUiLCAiZXJyb3IiLCAiYXNzZXJ0IiwgImtSZXNldCIsICJjb25zdGFudHMiLCAiUGFyc2VyIiwgImV4cG9ydHMiLCAicmVxdWVzdCIsICJwYXJzZXIiLCAiY2xpZW50IiwgInBhdGgiLCAicmVzb2x2ZSIsICJhc3NlcnQiLCAia1Jlc2V0IiwgImNsaWVudCIsICJzb2NrZXQiLCAicmVxdWVzdCIsICJwYXRoIiwgImhlYWRlcnMiLCAiZXJyb3IiLCAicmVzb2x2ZSIsICJhc3NlcnQiLCAiaGFuZGxlciIsICJlcnJvciIsICJwYXRoIiwgImhhbmRsZXIiLCAiYXNzZXJ0IiwgIm5vb3AiLCAiY29ubmVjdCIsICJoYW5kbGVyIiwgInJlcXVlc3QiLCAicmVzb2x2ZSIsICJzb2NrZXQiLCAicmVzb2x2ZSIsICJoYW5kbGVyIiwgIm9yaWdpbiIsICJlcnJvciIsICJwb29sIiwgImRpc3BhdGNoZXIiLCAiaGFuZGxlciIsICJVUkwiLCAibm9vcCIsICJoYW5kbGVyIiwgInBhdGgiLCAiUHJveHlBZ2VudCIsICJvcmlnaW4iLCAicHJvdG9jb2wiLCAib3B0cyIsICJQcm94eUFnZW50IiwgImhhbmRsZXIiLCAiYXNzZXJ0IiwgInJhbmdlIiwgImVyciIsICJoYW5kbGVyIiwgImFzc2VydCIsICJub29wIiwgInJlc29sdmUiLCAiY29uc3VtZSIsICJyZXF1aXJlX3V0aWwiLCAiYXNzZXJ0IiwgImFzc2VydCIsICJBc3luY1Jlc291cmNlIiwgImNvbnRleHQiLCAicmVxdWVzdCIsICJyZXNvbHZlIiwgImFzc2VydCIsICJBc3luY1Jlc291cmNlIiwgImNvbnRleHQiLCAiY2FsbGJhY2siLCAicmVzIiwgIm9wYXF1ZSIsICJyZXNvbHZlIiwgIkFzeW5jUmVzb3VyY2UiLCAiYXNzZXJ0IiwgImhhbmRsZXIiLCAiY29udGV4dCIsICJib2R5IiwgIkFzeW5jUmVzb3VyY2UiLCAiYXNzZXJ0IiwgImNvbnRleHQiLCAicmVzb2x2ZSIsICJhc3NlcnQiLCAiQXN5bmNSZXNvdXJjZSIsICJjb250ZXh0IiwgInJlc29sdmUiLCAiaXNQcm9taXNlIiwgIm1hdGNoIiwgIm1vY2tEaXNwYXRjaCIsICJwYXRoIiwgImdldFJlc3BvbnNlRGF0YSIsICJxdWVyeSIsICJoYW5kbGVyIiwgImVycm9yIiwgImdldFJlc3BvbnNlRGF0YSIsICJyZXBseVBhcmFtZXRlcnMiLCAibmV3TW9ja0Rpc3BhdGNoIiwgImVycm9yIiwgInBhdGgiLCAiaGFuZGxlciIsICJyZXF1aXJlX2dsb2JhbCIsICJoYW5kbGVyIiwgIm9wdHMiLCAiaGFuZGxlciIsICJoYW5kbGVyIiwgImhhbmRsZXIiLCAiaGFuZGxlciIsICJlcnIiLCAiYXNzZXJ0IiwgImV4aXN0cyIsICJpdGVyYXRvciIsICJyaWdodCIsICJsZWZ0IiwgIkhlYWRlcnMiLCAiSGVhZGVycyIsICJhc3NlcnQiLCAidHlwZXMiLCAicmVxdWlyZV9yZXF1ZXN0IiwgIkhlYWRlcnMiLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiLCAiYXNzZXJ0IiwgInJlcXVlc3QiLCAiYmFzZVVybCIsICJ3aW5kb3ciLCAiYXNzZXJ0IiwgImVycm9yIiwgImZldGNoIiwgInJlcXVlc3QiLCAiaXRlcmF0b3IiLCAicmVzb2x2ZSIsICJyZXF1aXJlX3N5bWJvbHMiLCAicmVxdWlyZV91dGlsIiwgInR5cGVzIiwgImJ0b2EiLCAiZXJyb3IiLCAidHlwZSIsICJyZXF1aXJlX3N5bWJvbHMiLCAicmVxdWlyZV91dGlsIiwgImFzc2VydCIsICJhc3NlcnQiLCAicmVxdWVzdCIsICJyZXF1ZXN0IiwgImNhY2hlIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgInJlcXVpcmVfdXRpbCIsICJwYXRoIiwgImFzc2VydCIsICJIZWFkZXJzIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgInJlcXVpcmVfc3ltYm9scyIsICJyZXF1aXJlX3V0aWwiLCAiYnVmZmVyIiwgIkhlYWRlcnMiLCAicmVxdWVzdCIsICJlcnJvciIsICJhc3NlcnQiLCAiZXJyb3IiLCAiYm9keSIsICJub2RlIiwgInR5cGVzIiwgInBhcnNlciIsICJyZXF1aXJlX3V0aWwiLCAicmVzb2x2ZSIsICJlcnJvciIsICJQcm94eUFnZW50IiwgImhhbmRsZXIiLCAicGF0aCIsICJmZXRjaCIsICJmb3JtYXQiLCAicGFyc2UiLCAiY29kZSIsICJnZXRQcm94eVVybCIsICJfYSIsICJnZXRQcm94eVVybCIsICJ0dW5uZWwiLCAiSHR0cENvZGVzIiwgIkhlYWRlcnMiLCAiTWVkaWFUeXBlcyIsICJIdHRwUmVkaXJlY3RDb2RlcyIsICJIdHRwUmVzcG9uc2VSZXRyeUNvZGVzIiwgInJlc29sdmUiLCAiX19hd2FpdGVyIiwgIkh0dHBDbGllbnQiLCAidXNlckFnZW50IiwgImluZm8iLCAiaGFuZGxlciIsICJsb3dlcmNhc2VLZXlzIiwgInByb2Nlc3MiLCAib3MiLCAiZ2V0Q2FsbGVyRmlsZSIsICJzdGFjayIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJkZWJ1ZyIsICJkZWJ1ZyIsICJwYXJzZU9wdGlvbnMiLCAibnVtZXJpYyIsICJkZWJ1ZyIsICJwYXJzZU9wdGlvbnMiLCAibWF0Y2giLCAicmVxdWlyZV9wYXJzZSIsICJwYXJzZSIsICJwYXJzZSIsICJwYXJzZSIsICJwYXJzZSIsICJwYXJzZSIsICJndGUiLCAibHRlIiwgImd0ZSIsICJsdGUiLCAicGFyc2UiLCAibWF0Y2giLCAicGFyc2UiLCAiY29uc3RhbnRzIiwgInJhbmdlIiwgInBhcnNlT3B0aW9ucyIsICJkZWJ1ZyIsICJzZXQiLCAicGFyc2VPcHRpb25zIiwgImRlYnVnIiwgInJhbmdlIiwgInJhbmdlIiwgInJhbmdlIiwgInJhbmdlIiwgInJhbmdlIiwgInJlcXVpcmVfdmFsaWQiLCAicmFuZ2UiLCAibHRlIiwgImd0ZSIsICJyYW5nZSIsICJyYW5nZSIsICJyYW5nZSIsICJyYW5nZSIsICJzZXQiLCAicmVxdWlyZV9zZW12ZXIiLCAiY29uc3RhbnRzIiwgInBhcnNlIiwgImd0ZSIsICJsdGUiLCAicGFyc2UiLCAibWF0Y2giLCAiZW52IiwgImRlYnVnIiwgIm1hdGNoIiwgImZvcm1hdCIsICJsb2FkIiwgIm1hdGNoIiwgImVycm9yIiwgInR0eSIsICJsb2FkIiwgInN1cHBvcnRzQ29sb3IiLCAiZXJyb3IiLCAidXNlQ29sb3JzIiwgImRlYnVnIiwgImJhbGFuY2VkIiwgIm1heWJlTWF0Y2giLCAicmFuZ2UiLCAibGVmdCIsICJyaWdodCIsICJiYWxhbmNlZCIsICJlc2NTbGFzaCIsICJlc2NPcGVuIiwgImVzY0Nsb3NlIiwgImVzY0NvbW1hIiwgImVzY1BlcmlvZCIsICJudW1lcmljIiwgImVzY2FwZUJyYWNlcyIsICJ1bmVzY2FwZUJyYWNlcyIsICJwYXJzZUNvbW1hUGFydHMiLCAiZXhwYW5kIiwgImVtYnJhY2UiLCAiaXNQYWRkZWQiLCAibHRlIiwgImd0ZSIsICJwb3NpeENsYXNzZXMiLCAiYnJhY2VFc2NhcGUiLCAicmVnZXhwRXNjYXBlIiwgInJhbmdlc1RvU3RyaW5nIiwgInBhcnNlQ2xhc3MiLCAiZXNjYXBlIiwgInVuZXNjYXBlIiwgIm1pbmltYXRjaCIsICJhc3NlcnRWYWxpZFBhdHRlcm4iLCAiTWluaW1hdGNoIiwgInN0YXJEb3RFeHRSRSIsICJzdGFyRG90RXh0VGVzdCIsICJleHQiLCAic3RhckRvdEV4dFRlc3REb3QiLCAic3RhckRvdEV4dFRlc3ROb2Nhc2UiLCAic3RhckRvdEV4dFRlc3ROb2Nhc2VEb3QiLCAic3RhckRvdFN0YXJSRSIsICJzdGFyRG90U3RhclRlc3QiLCAic3RhckRvdFN0YXJUZXN0RG90IiwgImRvdFN0YXJSRSIsICJkb3RTdGFyVGVzdCIsICJzdGFyUkUiLCAic3RhclRlc3QiLCAic3RhclRlc3REb3QiLCAicW1hcmtzUkUiLCAicW1hcmtzVGVzdE5vY2FzZSIsICJxbWFya3NUZXN0Tm9FeHQiLCAicW1hcmtzVGVzdE5vY2FzZURvdCIsICJxbWFya3NUZXN0Tm9FeHREb3QiLCAicW1hcmtzVGVzdERvdCIsICJxbWFya3NUZXN0IiwgImRlZmF1bHRQbGF0Zm9ybSIsICJwYXRoIiwgInFtYXJrIiwgInN0YXIiLCAidHdvU3RhckRvdCIsICJ0d29TdGFyTm9Eb3QiLCAic2V0IiwgInJlU3BlY2lhbHMiLCAiZmlsdGVyIiwgImRlZmF1bHRzIiwgImJyYWNlRXhwYW5kIiwgIk1BWF9QQVRURVJOX0xFTkdUSCIsICJtYWtlUmUiLCAibWF0Y2giLCAiZ2xvYk1hZ2ljIiwgInJlZ0V4cEVzY2FwZSIsICJ3aGljaCIsICJhZGRQYXR0ZXJuU3RhcnQiLCAiZGVidWciLCAibWluaW1hdGNoIiwgInBhdGgiLCAiZGVmYXVsdE9wdGlvbnMiLCAicGFyYW1zIiwgImZzIiwgImhhc2hFbGVtZW50IiwgImJhc2VuYW1lIiwgImRpciIsICJvcHRpb25zIiwgImlzRnVuY3Rpb24iLCAiZGlybmFtZSIsICJwcm9taXNlIiwgInJlc29sdmUiLCAiZXJyIiwgInJ1biIsICJIYXNoZWRGb2xkZXIiLCAiSGFzaGVkRmlsZSIsICJyZWdleCIsICJjbGlXaWR0aCIsICJyZXF1aXJlX2xpYiIsICJNdXRlU3RyZWFtIiwgImFyciIsICJzZWFyY2hWYWx1ZSIsICJsZWZ0IiwgInJpZ2h0IiwgInBhcnNlciIsICJkZXRlY3QiLCAiY29udGV4dCIsICJtYXRjaCIsICJyZXNvbHZlIiwgImZzIiwgImhhbmRsZXIiLCAiQnVmZmVyIiwgImhhc093biIsICJtb2R1bGUiLCAiQnVmZmVyIiwgImljb252IiwgIkJ1ZmZlciIsICJpY29udiIsICJCdWZmZXIiLCAiaWNvbnYiLCAiQnVmZmVyIiwgImljb252IiwgImkiLCAiQnVmZmVyIiwgImljb252IiwgIkJ1ZmZlciIsICJpY29udiIsICJpIiwgIkJ1ZmZlciIsICJyZXF1aXJlX2xpYiIsICJCdWZmZXIiLCAic3RyZWFtTW9kdWxlIiwgImFuc2lSZWdleCIsICJzdHJpcEFuc2kiLCAic3RyaW5nV2lkdGgiLCAicGFyYW1zIiwgImNvbnRleHQiLCAibWF0Y2giLCAicGFyc2UiLCAicGFyYW1zIiwgImNvbW1hbmQiLCAiY29tbWFuZCIsICJvcyIsICJIdHRwQ29kZXMiLCAiSGVhZGVycyIsICJNZWRpYVR5cGVzIiwgIkVPTCIsICJfYSIsICJFT0wiLCAiaGVpZ2h0IiwgIm9zIiwgIklTX1dJTkRPV1MiLCAib3MiLCAiRXhpdENvZGUiLCAibmFtZSIsICJtZXRob2QiLCAiaG9vayIsICJlcnJvciIsICJob29rIiwgImRlZmF1bHRzIiwgImNvbnRleHQiLCAiZm9ybWF0IiwgInZhbHVlIiwgImNvbnRleHQiLCAidGV4dCIsICJWRVJTSU9OIiwgImlzUGxhaW5PYmplY3QiLCAiZmV0Y2giLCAiZXJyb3IiLCAid2l0aERlZmF1bHRzIiwgIlZFUlNJT04iLCAicXVlcnkiLCAiYmFzZVVybCIsICJ3aXRoRGVmYXVsdHMiLCAicmVxdWVzdCIsICJlbmRwb2ludCIsICJWRVJTSU9OIiwgIm5vb3AiLCAiVkVSU0lPTiIsICJkZWZhdWx0cyIsICJob29rIiwgImF1dGgiLCAiVkVSU0lPTiIsICJyZXF1ZXN0IiwgInBhdGgiLCAiZXJyb3IiLCAiVkVSU0lPTiIsICJWRVJTSU9OIiwgInBhcmFtcyIsICJlcnJvciIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiZW5kcG9pbnQiLCAiZGVmYXVsdHMiLCAib3B0aW9ucyIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiT2N0b2tpdCIsICJWRVJTSU9OIiwgInJlcXVlc3QiLCAiZXJyb3IiLCAicmVxdWVzdCIsICJyZXF1ZXN0IiwgImF1dGgiLCAiYXV0aDIiLCAicmVzb2x2ZSIsICJyZXF1ZXN0IiwgImVycm9yIiwgImF1dGgiLCAiaG9vayIsICJlbmRwb2ludCIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiYXV0aCIsICJlcnJvciIsICJob29rIiwgInJlcXVlc3QiLCAiZW5kcG9pbnQiLCAiYXV0aCIsICJjb21tb24iLCAiaG9vayIsICJlbmRwb2ludCIsICJlcnJvciIsICJWRVJTSU9OIiwgIml0ZW0iLCAiZXJyb3IiLCAicmVxdWVzdCIsICJhdXRoIiwgInJlZ2V4IiwgImhvb2siLCAiZW5kcG9pbnQiLCAicmVzb2x2ZSIsICJWRVJTSU9OIiwgIkVPTCIsICJwYXRoIiwgIl9hIiwgIl9iIiwgIl9jIiwgImltcG9ydF91bmRpY2kiLCAiX19hd2FpdGVyIiwgImNvbnRleHQiLCAiT2N0b2tpdCIsICJjb250ZXh0IiwgImpvaW4iLCAiY29tbWFuZCIsICJyZXNvbHZlIiwgImVudiIsICJfYSIsICJtYXRjaCIsICJyZWQiLCAiZ3JlZW4iLCAiYmx1ZSIsICJjb2RlIiwgInJlc29sdmUiLCAiRGVmYXVsdFZhbHVlc0ZvclR5cGVLZXkiLCAibWl4aW4iLCAiZGVmYXVsdHMiLCAia2V5IiwgImVycm9yIiwgImFyZ3MiLCAidmFsdWUiLCAidmFsIiwgImFyZ3YiLCAiZW52IiwgImFsaWFzZXMiLCAibWF0Y2giLCAiZ3Vlc3NUeXBlIiwgInJlYWRGaWxlU3luYyIsICJlbnYiLCAicmVxdWlyZSIsICJyZXNvbHZlIiwgInBhdGgiLCAiZGlybmFtZSIsICJyZXNvbHZlIiwgInJlYWRGaWxlU3luYyIsICJzdGF0U3luYyIsICJ3cml0ZUZpbGUiLCAiZm9ybWF0IiwgInJlc29sdmUiLCAieTE4biIsICJ5MThuIiwgImNyZWF0ZVJlcXVpcmUiLCAicmVhZEZpbGVTeW5jIiwgInJlYWRkaXJTeW5jIiwgInJlcXVpcmUiLCAiZGlybmFtZSIsICJyZXNvbHZlIiwgImdldENhbGxlckZpbGUiLCAic2hpbSIsICJjbWQiLCAiZ2xvYmFsIiwgInJlc3VsdCIsICJ1c2FnZSIsICJ2YWxpZGF0aW9uIiwgInNoaW0iLCAiZXh0IiwgImhhbmRsZXIiLCAiY29tbWFuZCIsICJjIiwgImVycm9yIiwgImNvbnRleHQiLCAicGFyc2VPcHRpb25zIiwgImRlZmF1bHRzIiwgImZpbHRlciIsICJzaGltIiwgImZhaWwiLCAiY29tbWFuZCIsICJ1aSIsICJ1c2FnZSIsICJjb250ZXh0IiwgInNlcCIsICJtYXhXaWR0aCIsICJ1c2FnZSIsICJjb21tYW5kIiwgInNoaW0iLCAiX2EiLCAiX2IiLCAiX2MiLCAiZmlsdGVyIiwgImRlc2MiLCAiYXJndiIsICJ1c2FnZSIsICJzaGltIiwgIl9hIiwgImtleSIsICJzaGltIiwgIm1lcmdlRGVlcCIsICJzaGltIiwgImdsb2JhbCIsICJfYSIsICJoYW5kbGVyIiwgImRldGVjdCIsICJyZXNvbHZlIiwgInBhcnNlIiwgInBhcnNlT3B0aW9ucyIsICJ0eXBlIiwgImtleSIsICJ2YWx1ZSIsICJzZXQiLCAiX2IiLCAiX2MiLCAidmFsaWRhdGlvbiIsICJrIiwgImNvbXBsZXRpb24iLCAiTG9nTGV2ZWwiLCAiY2FjaGVkQ29uZmlnIiwgImpvaW4iLCAiR3JhcGhRTFR5cGUiLCAicGFyYW1zIiwgIl9hIiwgIl9iIiwgImNvbnRleHQiLCAiX2MiLCAicGFyYW1zIiwgIl9hIiwgInR5cGVzIiwgIl9jIiwgInJlc29sdmUiLCAiT2N0b2tpdCIsICJwYXJhbXMiLCAiVVJMIiwgImVycm9yIiwgImltcG9ydF9zZW12ZXIiLCAiam9pbiIsICJyZWFkZGlyU3luYyIsICJyZWFkRmlsZVN5bmMiLCAiZXhpc3RzU3luYyIsICJ3cml0ZUZpbGVTeW5jIiwgInJtU3luYyIsICJta2R0ZW1wU3luYyIsICJpbmZvIiwgImZzIiwgIm1hdGNoIiwgImZzIiwgImRpcm5hbWUiLCAiZXh0bmFtZSIsICJyZXNvbHZlIiwgImV4dCIsICJwYXRoIiwgIm1hdGNoIiwgImNvbnRleHQiLCAib3BlbiIsICJiYXNlbmFtZSIsICJpbXBvcnRfc2VtdmVyIiwgImVudiIsICJrZXliaW5kaW5ncyIsICJBc3luY1Jlc291cmNlIiwgInJlbmRlciIsICJBc3luY1Jlc291cmNlIiwgInNldFN0YXRlIiwgInN0eWxlVGV4dCIsICJwcm9jZXNzIiwgInN0eWxlVGV4dCIsICJpc1BsYWluT2JqZWN0IiwgImhhbmRsZXIiLCAiaXNGdWxsV2lkdGgiLCAiaXNGdWxsV2lkdGgiLCAiZGlzdF9kZWZhdWx0IiwgIk5PX1RSVU5DQVRJT04iLCAiZGlzdF9kZWZhdWx0IiwgIkVORF9DT0RFIiwgIkFOU0lfRVNDQVBFX0JFTEwiLCAiQU5TSV9DU0kiLCAiQU5TSV9PU0MiLCAiQU5TSV9TR1JfVEVSTUlOQVRPUiIsICJBTlNJX0VTQ0FQRV9MSU5LIiwgIndyYXBBbnNpQ29kZSIsICJ3cmFwQW5zaUh5cGVybGluayIsICJ3cmFwV29yZCIsICJkaXN0X2RlZmF1bHQiLCAic3RyaW5nVmlzaWJsZVRyaW1TcGFjZXNSaWdodCIsICJleGVjIiwgIndyYXBBbnNpIiwgIndyYXBBbnNpIiwgImNsaVdpZHRoIiwgInJlYWRsaW5lIiwgIkFzeW5jUmVzb3VyY2UiLCAicHJvY2VzcyIsICJnbG9iYWwiLCAiaGFuZGxlciIsICJzdHJpcFZUQ29udHJvbENoYXJhY3RlcnMiLCAiRVNDIiwgInN0cmlwVlRDb250cm9sQ2hhcmFjdGVycyIsICJyZXNvbHZlIiwgInBhdGgiLCAiY29udGV4dCIsICJNdXRlU3RyZWFtIiwgInJlc29sdmUiLCAic2lnbmFsIiwgIkFzeW5jUmVzb3VyY2UiLCAiZXJyb3IiLCAic3R5bGVUZXh0IiwgInN0eWxlVGV4dCIsICJzdHlsZVRleHQiLCAic3R5bGVUZXh0IiwgIm5hbWUiLCAiZGlzdF9kZWZhdWx0IiwgInZhbGlkYXRlIiwgImtleWJpbmRpbmdzIiwgImNoZWNrYm94IiwgInNwYXduU3luYyIsICJyZWFkRmlsZVN5bmMiLCAicGF0aCIsICJvcyIsICJzcGF3blN5bmMiLCAicmVzb2x2ZSIsICJwYXRoIiwgIm9zIiwgInJlYWRGaWxlU3luYyIsICJpY29udiIsICJkaXN0X2RlZmF1bHQiLCAidmFsaWRhdGUiLCAiZXJyb3IiLCAiZGlzdF9kZWZhdWx0IiwgImRpc3RfZGVmYXVsdCIsICJ2YWxpZGF0ZSIsICJ2YWx1ZSIsICJlcnJvciIsICJkaXN0X2RlZmF1bHQiLCAidmFsaWRhdGUiLCAiZXJyb3IiLCAic3R5bGVUZXh0IiwgIm5vcm1hbGl6ZUNob2ljZXMiLCAiZXhwYW5kIiwgImVycm9yIiwgInN0eWxlVGV4dCIsICJub3JtYWxpemVDaG9pY2VzIiwgIm5hbWUiLCAiZGlzdF9kZWZhdWx0IiwgImtleWJpbmRpbmdzIiwgInNlbGVjdGVkQ2hvaWNlIiwgImVycm9yIiwgImRpc3RfZGVmYXVsdCIsICJ2YWxpZGF0ZSIsICJlcnJvciIsICJzdHlsZVRleHQiLCAic3R5bGVUZXh0IiwgImlzU2VsZWN0YWJsZSIsICJub3JtYWxpemVDaG9pY2VzIiwgIm5hbWUiLCAiZGlzdF9kZWZhdWx0IiwgInZhbGlkYXRlIiwgImVycm9yIiwgInN0eWxlVGV4dCIsICJzdHlsZVRleHQiLCAiaXNTZWxlY3RhYmxlIiwgImlzTmF2aWdhYmxlIiwgIm5vcm1hbGl6ZUNob2ljZXMiLCAibmFtZSIsICJkaXN0X2RlZmF1bHQiLCAia2V5YmluZGluZ3MiLCAiaXRlbSIsICJkaXN0X2RlZmF1bHQiLCAibGVmdCIsICJyaWdodCIsICJleHBhbmQiLCAidHlwZXMiLCAiX2EiLCAiaSIsICJhY2MiLCAiZXh0IiwgInN0YXJ0IiwgImZpbmFsIiwgImV4dCIsICJwYXRoIiwgInNlcCIsICJxbWFyayIsICJzdGFyIiwgImRlZmF1bHRzIiwgImV4cGFuZCIsICJyZWdFeHBFc2NhcGUiLCAic2V0IiwgIndoaWNoIiwgImkiLCAib3BlbiIsICJwcm9jZXNzIiwgImpvaW4iLCAiam9pbiIsICJqb2luIiwgImpvaW4iLCAicmVzb2x2ZSIsICJTY29wZVJlcXVpcmVtZW50IiwgIlJlbGVhc2VOb3Rlc0xldmVsIiwgInNldCIsICJlc2NhcGUiLCAiaXNzdWUiLCAicmVnZXgiLCAibWVyZ2UiLCAiTm90ZVNlY3Rpb25zIiwgImV4aXN0c1N5bmMiLCAicmVhZEZpbGVTeW5jIiwgIndyaXRlRmlsZVN5bmMiLCAiam9pbiIsICJzZW12ZXIiLCAicGF0aCIsICJzZW12ZXIiLCAiY29udGV4dCIsICJpbXBvcnRfc2VtdmVyIiwgInNlbXZlciIsICJpbXBvcnRfc2VtdmVyIiwgImltcG9ydF9zZW12ZXIiLCAic2VtdmVyIiwgInNlbXZlciIsICJzZW12ZXIiLCAiYmFzZVVybCIsICJta2R0ZW1wU3luYyIsICJqb2luIiwgIndyaXRlRmlsZVN5bmMiLCAicm1TeW5jIiwgImV4aXN0c1N5bmMiLCAicmVhZGRpclN5bmMiLCAicmVhZEZpbGVTeW5jIl0KfQo=
diff --git a/github-actions/release/publish/package.json b/github-actions/release/publish/package.json
new file mode 100644
index 0000000000..dee698d3bc
--- /dev/null
+++ b/github-actions/release/publish/package.json
@@ -0,0 +1,9 @@
+{
+  "dependencies": {
+    "@actions/core": "3.0.1",
+    "@types/jasmine": "6.0.0",
+    "@types/node": "24.12.4",
+    "@types/semver": "7.7.1",
+    "semver": "7.8.1"
+  }
+}
diff --git a/ng-dev/release/cli.ts b/ng-dev/release/cli.ts
index cf09dc054d..87a52ba5d7 100644
--- a/ng-dev/release/cli.ts
+++ b/ng-dev/release/cli.ts
@@ -12,7 +12,6 @@ import {ReleaseInfoCommandModule} from './info/cli.js';
 import {ReleaseNotesCommandModule} from './notes/cli.js';
 import {ReleasePrecheckCommandModule} from './precheck/cli.js';
 import {ReleasePublishCommandModule} from './publish/cli.js';
-import {ReleasePublishCiCommandModule} from './publish/cli-ci.js';
 import {ReleasePublishSnapshotsCommandModule} from './snapshot-publish/cli.js';
 import {BuildEnvStampCommand} from './stamping/cli.js';
 import {ReleaseNpmDistTagCommand} from './npm-dist-tag/cli.js';
@@ -24,7 +23,6 @@ export function buildReleaseParser(localYargs: Argv) {
     .strict()
     .demandCommand()
     .command(ReleasePublishCommandModule)
-    .command(ReleasePublishCiCommandModule)
     .command(ReleaseBuildCommandModule)
     .command(ReleaseInfoCommandModule)
     .command(ReleaseNpmDistTagCommand)
diff --git a/ng-dev/release/config/BUILD.bazel b/ng-dev/release/config/BUILD.bazel
index af70813806..111f4d3616 100644
--- a/ng-dev/release/config/BUILD.bazel
+++ b/ng-dev/release/config/BUILD.bazel
@@ -7,6 +7,7 @@ ts_project(
     ]),
     visibility = [
         "//.github/local-actions/changelog/lib:__subpackages__",
+        "//github-actions/release/publish:__subpackages__",
         "//ng-dev:__subpackages__",
     ],
     deps = [
diff --git a/ng-dev/release/notes/BUILD.bazel b/ng-dev/release/notes/BUILD.bazel
index 7d003c571d..6af088e1b1 100644
--- a/ng-dev/release/notes/BUILD.bazel
+++ b/ng-dev/release/notes/BUILD.bazel
@@ -8,6 +8,7 @@ ts_project(
     ),
     visibility = [
         "//.github/local-actions/changelog/lib:__subpackages__",
+        "//github-actions/release/publish:__subpackages__",
         "//ng-dev:__subpackages__",
     ],
     deps = [
diff --git a/ng-dev/release/publish/BUILD.bazel b/ng-dev/release/publish/BUILD.bazel
index f888faf722..81b44f61f1 100644
--- a/ng-dev/release/publish/BUILD.bazel
+++ b/ng-dev/release/publish/BUILD.bazel
@@ -5,7 +5,10 @@ ts_project(
     srcs = glob([
         "**/*.ts",
     ]),
-    visibility = ["//ng-dev:__subpackages__"],
+    visibility = [
+        "//github-actions/release/publish:__subpackages__",
+        "//ng-dev:__subpackages__",
+    ],
     deps = [
         "//ng-dev:node_modules/@octokit/rest",
         "//ng-dev:node_modules/@types/ejs",
diff --git a/ng-dev/release/publish/cli-ci.ts b/ng-dev/release/publish/cli-ci.ts
deleted file mode 100644
index 9dc9a28b82..0000000000
--- a/ng-dev/release/publish/cli-ci.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * @license
- * Copyright Google LLC
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
-
-import {Argv, Arguments, CommandModule} from 'yargs';
-
-import {assertValidGithubConfig, getConfig} from '../../utils/config.js';
-import {addGithubTokenOption} from '../../utils/git/github-yargs.js';
-import {assertValidReleaseConfig} from '../config/index.js';
-import {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js';
-import {PublishCiTool} from './index-ci.js';
-import {green, Log} from '../../utils/logging.js';
-
-/** Command line options for the release publish-ci command. */
-export interface ReleasePublishCiOptions {
-  /** Path to the directory containing pre-built packages. */
-  builtPackagesDir: string;
-  /** The expected Git SHA of the release commit. */
-  expectedSha: string;
-  /** Run the publish command in dry-run mode. */
-  dryRun?: boolean;
-}
-
-function builder(argv: Argv): Argv {
-  return addGithubTokenOption(argv)
-    .option('built-packages-dir' as 'builtPackagesDir', {
-      type: 'string',
-      demandOption: true,
-      description: 'Path to the directory containing pre-built packages.',
-    })
-    .option('expected-sha' as 'expectedSha', {
-      type: 'string',
-      demandOption: true,
-      description: 'The expected Git SHA of the release commit.',
-    })
-    .option('dry-run' as 'dryRun', {
-      type: 'boolean',
-      default: false,
-      description:
-        'Run the publish command in dry-run mode, skipping tag/release creation and NPM publishing.',
-    });
-}
-
-async function handler(flags: Arguments) {
-  const git = await AuthenticatedGitClient.get();
-  const config = await getConfig();
-  assertValidReleaseConfig(config);
-  assertValidGithubConfig(config);
-
-  const tool = new PublishCiTool(config, git, git.baseDir, flags);
-
-  try {
-    await tool.run();
-    Log.info(green('Release CI publish completed successfully.'));
-  } catch (e) {
-    if (e instanceof Error) {
-      Log.error(`Release CI publish failed: ${e.message}`);
-      if (e.stack) {
-        Log.debug(e.stack);
-      }
-    } else {
-      Log.error(`Release CI publish failed with unknown error: ${e}`);
-    }
-    process.exitCode = 1;
-  }
-}
-
-/** Yargs command module for the 'publish-ci' command. */
-export const ReleasePublishCiCommandModule: CommandModule<{}, ReleasePublishCiOptions> = {
-  builder,
-  handler,
-  command: 'publish-ci',
-  describe: 'Publish a release from CI.',
-};
diff --git a/ng-dev/release/publish/test/BUILD.bazel b/ng-dev/release/publish/test/BUILD.bazel
index 216d6bcbae..768715f200 100644
--- a/ng-dev/release/publish/test/BUILD.bazel
+++ b/ng-dev/release/publish/test/BUILD.bazel
@@ -5,6 +5,7 @@ ts_project(
     testonly = True,
     srcs = glob(["**/*.ts"]),
     visibility = [
+        "//github-actions/release/publish:__subpackages__",
         "//ng-dev/release/notes:__subpackages__",
     ],
     deps = [
diff --git a/ng-dev/release/versioning/BUILD.bazel b/ng-dev/release/versioning/BUILD.bazel
index 62bf610750..ac63f5973c 100644
--- a/ng-dev/release/versioning/BUILD.bazel
+++ b/ng-dev/release/versioning/BUILD.bazel
@@ -5,7 +5,10 @@ ts_project(
     srcs = glob([
         "**/*.ts",
     ]),
-    visibility = ["//ng-dev:__subpackages__"],
+    visibility = [
+        "//github-actions/release/publish:__subpackages__",
+        "//ng-dev:__subpackages__",
+    ],
     deps = [
         "//ng-dev:node_modules/@types/semver",
         "//ng-dev:node_modules/semver",
diff --git a/ng-dev/utils/BUILD.bazel b/ng-dev/utils/BUILD.bazel
index a4f53f4409..9ab1ef1531 100644
--- a/ng-dev/utils/BUILD.bazel
+++ b/ng-dev/utils/BUILD.bazel
@@ -34,6 +34,7 @@ ts_project(
         "//.github/local-actions/changelog/lib:__subpackages__",
         "//github-actions/google-internal-tests:__subpackages__",
         "//github-actions/labeling/pull-request:__subpackages__",
+        "//github-actions/release/publish:__subpackages__",
         "//github-actions/slash-commands/lib:__subpackages__",
         "//ng-dev:__subpackages__",
     ],
diff --git a/ng-dev/utils/testing/BUILD.bazel b/ng-dev/utils/testing/BUILD.bazel
index 570e90b1ad..fdad1d2379 100644
--- a/ng-dev/utils/testing/BUILD.bazel
+++ b/ng-dev/utils/testing/BUILD.bazel
@@ -8,6 +8,7 @@ ts_project(
     ),
     tsconfig = "//ng-dev:tsconfig_test",
     visibility = [
+        "//github-actions/release/publish:__subpackages__",
         "//ng-dev:__subpackages__",
     ],
     deps = [
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dfd986a5af..8eeadc382d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,7 +12,7 @@ importers:
     dependencies:
       '@angular/compiler-cli':
         specifier: 22.1.0-next.0
-        version: 22.1.0-next.0(@angular/compiler@22.1.0-next.0)(typescript@6.0.3)
+        version: 22.1.0-next.0(@angular/compiler@22.1.0-next.0)(supports-color@10.2.2)(typescript@6.0.3)
       typescript:
         specifier: 6.0.3
         version: 6.0.3
@@ -498,6 +498,24 @@ importers:
         specifier: 24.12.4
         version: 24.12.4
 
+  github-actions/release/publish:
+    dependencies:
+      '@actions/core':
+        specifier: 3.0.1
+        version: 3.0.1
+      '@types/jasmine':
+        specifier: 6.0.0
+        version: 6.0.0
+      '@types/node':
+        specifier: 24.12.4
+        version: 24.12.4
+      '@types/semver':
+        specifier: 7.7.1
+        version: 7.7.1
+      semver:
+        specifier: 7.8.1
+        version: 7.8.1
+
   github-actions/saucelabs:
     dependencies:
       '@actions/core':
@@ -732,7 +750,7 @@ packages:
   '@angular/animations@22.1.0-next.0':
     resolution: {integrity: sha512-Gi3BNfHZEfqs9EZrnd9rAiuh8YKfiijs4YJO0mJWWmJULmgaISJVfrOCv1+iqlSy/VnN3cVtHpNtwvqiMyU0Sg==}
     engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0}
-    deprecated: '@angular/animations is deprecated. Use `animate.enter` and `animate.leave` instead.'
+    deprecated: '@angular/animations is deprecated. Use `animate.enter` and `animate.leave` instead. For more information see: https://v22.angular.dev/guide/animations.'
     peerDependencies:
       '@angular/core': 22.1.0-next.0
 
@@ -6166,10 +6184,10 @@ snapshots:
       rxjs: 7.8.2
       tslib: 2.8.1
 
-  '@angular/compiler-cli@22.1.0-next.0(@angular/compiler@22.1.0-next.0)(typescript@6.0.3)':
+  '@angular/compiler-cli@22.1.0-next.0(@angular/compiler@22.1.0-next.0)(supports-color@10.2.2)(typescript@6.0.3)':
     dependencies:
       '@angular/compiler': 22.1.0-next.0
-      '@babel/core': 7.29.7
+      '@babel/core': 7.29.7(supports-color@10.2.2)
       '@jridgewell/sourcemap-codec': 1.5.5
       chokidar: 5.0.0
       convert-source-map: 1.9.0
@@ -6395,12 +6413,12 @@ snapshots:
 
   '@babel/compat-data@7.29.7': {}
 
-  '@babel/core@7.29.7':
+  '@babel/core@7.29.7(supports-color@10.2.2)':
     dependencies:
       '@babel/code-frame': 7.29.7
       '@babel/generator': 7.29.7
       '@babel/helper-compilation-targets': 7.29.7
-      '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
+      '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
       '@babel/helpers': 7.29.7
       '@babel/parser': 7.29.7
       '@babel/template': 7.29.7
@@ -6440,9 +6458,9 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)':
+  '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))':
     dependencies:
-      '@babel/core': 7.29.7
+      '@babel/core': 7.29.7(supports-color@10.2.2)
       '@babel/helper-module-imports': 7.29.7
       '@babel/helper-validator-identifier': 7.29.7
       '@babel/traverse': 7.29.7
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 17faae3c7b..c61a00e51c 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -23,6 +23,8 @@ packages:
   - github-actions/browserstack
   - github-actions/labeling
   - github-actions/bazel/configure-remote
+  - github-actions/release/publish
+
 # The minimum age of a release to be considered for dependency installation.
 # The value is in minutes (1440 minutes = 1 day).
 minimumReleaseAge: 1440