diff --git a/.github/workflows/build-and-review-pr.yml b/.github/workflows/build-and-review-pr.yml index d507c3a..d26d6d3 100644 --- a/.github/workflows/build-and-review-pr.yml +++ b/.github/workflows/build-and-review-pr.yml @@ -26,6 +26,10 @@ env: COVERAGE_SUMMARY_INPUT_FILE: './test/input-files/coverage-summary.md' TRUNCATE_SUMMARY_INPUT_FILE: './test/input-files/truncate.md' +permissions: + contents: write + pull-requests: write + jobs: build-and-review-pr: # This reusable workflow will check to see if an action's source code has changed based on @@ -39,7 +43,7 @@ jobs: # This workflow assumes: # - The main README.md is at the root of the repo # - The README contains a contribution guidelines and usage examples section - uses: im-open/.github/.github/workflows/reusable-build-and-review-pr.yml@v1 + uses: im-open/.github/.github/workflows/reusable-build-and-review-pr.yml@v2 with: action-name: ${{ github.repository }} default-branch: main @@ -82,7 +86,7 @@ jobs: run: echo "" - name: Setup - Checkout the action - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: '-------------------------------------------------------------------------------------------------------------' run: echo "" @@ -493,7 +497,7 @@ jobs: fi - name: Setup - Checkout the action - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: '-------------------------------------------------------------------------------------------------------------' run: echo "" @@ -529,12 +533,12 @@ jobs: - name: 10e - And the status check should match the inputs if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertStatusCheckExists = require('./test/assert-status-check-exists.js'); - const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.js'); + const assertStatusCheckExists = require('./test/assert-status-check-exists.cjs'); + const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.cjs'); const checkId = '${{ steps.no-failures.outputs.status-check-id }}'; const actualCheck = await assertStatusCheckExists(github, context, core, checkId); @@ -583,12 +587,12 @@ jobs: - name: 11e - And the status check should match the inputs if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertStatusCheckExists = require('./test/assert-status-check-exists.js'); - const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.js'); + const assertStatusCheckExists = require('./test/assert-status-check-exists.cjs'); + const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.cjs'); const checkId = '${{ steps.ignore-failures.outputs.status-check-id }}'; const actualCheck = await assertStatusCheckExists(github, context, core, checkId); @@ -637,12 +641,12 @@ jobs: - name: 12e - And the status check should match the inputs if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertStatusCheckExists = require('./test/assert-status-check-exists.js'); - const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.js'); + const assertStatusCheckExists = require('./test/assert-status-check-exists.cjs'); + const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.cjs'); const checkId = '${{ steps.allow-failures.outputs.status-check-id }}'; const actualCheck = await assertStatusCheckExists(github, context, core, checkId); @@ -691,12 +695,12 @@ jobs: - name: 13e - And the status check should match the inputs if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertStatusCheckExists = require('./test/assert-status-check-exists.js'); - const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.js'); + const assertStatusCheckExists = require('./test/assert-status-check-exists.cjs'); + const assertStatusCheckMatchesExpectations = require('./test/assert-status-check-matches-expectations.cjs'); const checkId = '${{ steps.threshold-0.outputs.status-check-id }}'; const actualCheck = await assertStatusCheckExists(github, context, core, checkId); @@ -718,11 +722,11 @@ jobs: - name: Teardown - Modify failing Status Check conclusion if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const updateFailingStatusCheck = require('./test/update-failing-status-check.js'); + const updateFailingStatusCheck = require('./test/update-failing-status-check.cjs'); await updateFailingStatusCheck(github, context, core, '${{ steps.allow-failures.outputs.status-check-id }}'); @@ -760,19 +764,19 @@ jobs: fi - name: Setup - Checkout the action - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Setup - Delete pre-existing process-code-coverage-summary PR Comments if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | - const deletePrComments = require('./test/delete-pre-existing-comments.js'); + const deletePrComments = require('./test/delete-pre-existing-comments.cjs'); await deletePrComments(github, context, core); - name: Setup - Create a process-code-coverage-summary comment that can be updated if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | await github.rest.issues.createComment({ @@ -825,12 +829,12 @@ jobs: - name: 14e - And the pr-comment should match the match the expected values if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertCommentExists = require('./test/assert-pr-comment-exists.js'); - const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.js'); + const assertCommentExists = require('./test/assert-pr-comment-exists.cjs'); + const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.cjs'); const commentId = '${{ steps.update-with-matching-prefix.outputs.pr-comment-id }}'; const actualComment = await assertCommentExists(github, context, core, commentId); @@ -881,12 +885,12 @@ jobs: - name: 15e - And the pr-comment should match the expected values if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertCommentExists = require('./test/assert-pr-comment-exists.js'); - const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.js'); + const assertCommentExists = require('./test/assert-pr-comment-exists.cjs'); + const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.cjs'); const commentId = '${{ steps.update-without-matching-prefix.outputs.pr-comment-id }}'; const actualComment = await assertCommentExists(github, context, core, commentId); @@ -937,12 +941,12 @@ jobs: - name: 16e - And the pr-comment should match the expected values if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertCommentExists = require('./test/assert-pr-comment-exists.js'); - const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.js'); + const assertCommentExists = require('./test/assert-pr-comment-exists.cjs'); + const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.cjs'); const commentId = '${{ steps.matching-prefix-no-update.outputs.pr-comment-id }}'; const actualComment = await assertCommentExists(github, context, core, commentId); @@ -993,12 +997,12 @@ jobs: - name: 17e - And the pr-comment should match the expected values if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const assertCommentExists = require('./test/assert-pr-comment-exists.js'); - const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.js'); + const assertCommentExists = require('./test/assert-pr-comment-exists.cjs'); + const assertCommentMatchesExpectations = require('./test/assert-pr-comment-matches-expectations.cjs'); const commentId = '${{ steps.truncate.outputs.pr-comment-id }}'; const actualComment = await assertCommentExists(github, context, core, commentId); @@ -1024,11 +1028,11 @@ jobs: - name: Teardown - Delete PR Comments if: always() - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); - const deletePrComment = require('./test/delete-pr-comment.js'); + const deletePrComment = require('./test/delete-pr-comment.cjs'); await deletePrComment(github, context, core, '${{ env.EXISTING_COMMENT_ID }}'); await deletePrComment(github, context, core, '${{ steps.matching-prefix-no-update.outputs.pr-comment-id }}'); diff --git a/.github/workflows/increment-version-on-merge.yml b/.github/workflows/increment-version-on-merge.yml index f6e80f7..312fcab 100644 --- a/.github/workflows/increment-version-on-merge.yml +++ b/.github/workflows/increment-version-on-merge.yml @@ -29,9 +29,12 @@ on: # if this action should be incremented and if new tags should be pushed to the repo based # on the same criteria used in the build-and-review-pr.yml workflow. +permissions: + contents: write + jobs: increment-version: - uses: im-open/.github/.github/workflows/reusable-increment-version-on-merge.yml@v1 + uses: im-open/.github/.github/workflows/reusable-increment-version-on-merge.yml@v2 with: default-branch: main diff --git a/README.md b/README.md index 2e5ff03..44a7c5b 100644 --- a/README.md +++ b/README.md @@ -113,11 +113,11 @@ jobs: runs-on: [ubuntu-20.04] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 # dotnet tests - name: Setup .NET Core - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: ${{ env.DOTNET_VERSION }} @@ -126,7 +126,7 @@ jobs: run: dotnet test './src/MyProj.sln' --logger trx --configuration Release /property:CollectCoverage=True /property:CoverletOutputFormat=opencover - name: ReportGenerator - uses: im-open/code-coverage-report-generator@4 + uses: im-open/code-coverage-report-generator@5 with: reports: '*/**/coverage.opencover.xml' targetdir: './coverage-results' @@ -137,7 +137,7 @@ jobs: - name: Create a status check for the code coverage results id: dotnet-coverage-check # You may also reference just the major or major.minor version - uses: im-open/process-code-coverage-summary@v2.3.1 + uses: im-open/process-code-coverage-summary@v3.0.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} summary-file: './coverage-results/dotnet-summary.md' @@ -158,7 +158,7 @@ jobs: run: npm run test -- --outputFile=jest-results.json - name: create code coverage report - uses: im-open/code-coverage-report-generator@4 + uses: im-open/code-coverage-report-generator@5 with: reports: '*/**/lcov.info' targetdir: ./tests @@ -166,7 +166,7 @@ jobs: - name: create status check/comment for code coverage results id: jest_coverage_check - uses: im-open/process-code-coverage-summary@v2.3.1 + uses: im-open/process-code-coverage-summary@v3.0.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} summary-file: './coverage-results/jest-summary.md' diff --git a/dist/index.js b/dist/index.js index 5553c54..d124dac 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,16628 +1,30262 @@ +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 __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + try { + return (mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports); + } catch (e) { + throw ((mod = 0), e); + } }; +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 + ) +); -// node_modules/@actions/core/lib/utils.js -var require_utils = __commonJS({ - 'node_modules/@actions/core/lib/utils.js'(exports2) { +// node_modules/tunnel/lib/tunnel.js +var require_tunnel = __commonJS({ + 'node_modules/tunnel/lib/tunnel.js'(exports2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.toCommandProperties = exports2.toCommandValue = void 0; - function toCommandValue(input) { - if (input === null || input === void 0) { - return ''; - } else if (typeof input === 'string' || input instanceof String) { - return input; - } - return JSON.stringify(input); + var net = require('net'); + var tls = require('tls'); + var http = require('http'); + var https = require('https'); + var events = require('events'); + var assert = require('assert'); + var util = require('util'); + exports2.httpOverHttp = httpOverHttp2; + exports2.httpsOverHttp = httpsOverHttp2; + exports2.httpOverHttps = httpOverHttps2; + exports2.httpsOverHttps = httpsOverHttps2; + function httpOverHttp2(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; } - exports2.toCommandValue = toCommandValue; - 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 httpsOverHttp2(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; } - exports2.toCommandProperties = toCommandProperties; - } -}); - -// node_modules/@actions/core/lib/command.js -var require_command = __commonJS({ - 'node_modules/@actions/core/lib/command.js'(exports2) { - 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); + 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; } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.issue = exports2.issueCommand = void 0; - var os = __importStar(require('os')); - var utils_1 = require_utils(); - function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); - } - exports2.issueCommand = issueCommand; - function issue(name, message = '') { - issueCommand(name, {}, message); - } - exports2.issue = issue; - var CMD_STRING = '::'; - var Command = class { - constructor(command, properties, message) { - if (!command) { - command = 'missing.command'; - } - this.command = command; - this.properties = properties; - this.message = message; + 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; } - 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)}`; - } - } - } + 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; } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; + 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); } }; - function escapeData(s) { - return utils_1.toCommandValue(s).replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A'); - } - function escapeProperty(s) { - return utils_1 - .toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C'); - } - } -}); - -// node_modules/uuid/dist/rng.js -var require_rng = __commonJS({ - 'node_modules/uuid/dist/rng.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = rng; - var _crypto = _interopRequireDefault(require('crypto')); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; + 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); + }); } - var rnds8Pool = new Uint8Array(256); - var poolPtr = rnds8Pool.length; - function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - poolPtr = 0; + function toOptions(host, port, localAddress) { + if (typeof host === 'string') { + return { + host, + port, + localAddress + }; } - return rnds8Pool.slice(poolPtr, (poolPtr += 16)); + return host; } - } -}); - -// node_modules/uuid/dist/regex.js -var require_regex = __commonJS({ - 'node_modules/uuid/dist/regex.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _default = - /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/validate.js -var require_validate = __commonJS({ - 'node_modules/uuid/dist/validate.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _regex = _interopRequireDefault(require_regex()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; + 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; } - function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); + 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 () {}; } - var _default = validate; - exports2.default = _default; + exports2.debug = debug2; } }); -// node_modules/uuid/dist/stringify.js -var require_stringify = __commonJS({ - 'node_modules/uuid/dist/stringify.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var byteToHex = []; - for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 256).toString(16).substr(1)); - } - function stringify(arr, offset = 0) { - const uuid = ( - byteToHex[arr[offset + 0]] + - byteToHex[arr[offset + 1]] + - byteToHex[arr[offset + 2]] + - byteToHex[arr[offset + 3]] + - '-' + - byteToHex[arr[offset + 4]] + - byteToHex[arr[offset + 5]] + - '-' + - byteToHex[arr[offset + 6]] + - byteToHex[arr[offset + 7]] + - '-' + - byteToHex[arr[offset + 8]] + - byteToHex[arr[offset + 9]] + - '-' + - byteToHex[arr[offset + 10]] + - byteToHex[arr[offset + 11]] + - byteToHex[arr[offset + 12]] + - byteToHex[arr[offset + 13]] + - byteToHex[arr[offset + 14]] + - byteToHex[arr[offset + 15]] - ).toLowerCase(); - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; - } - var _default = stringify; - exports2.default = _default; +// node_modules/tunnel/index.js +var require_tunnel2 = __commonJS({ + 'node_modules/tunnel/index.js'(exports2, module2) { + module2.exports = require_tunnel(); } }); -// node_modules/uuid/dist/v1.js -var require_v1 = __commonJS({ - 'node_modules/uuid/dist/v1.js'(exports2) { +// node_modules/undici/lib/core/symbols.js +var require_symbols = __commonJS({ + 'node_modules/undici/lib/core/symbols.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _rng = _interopRequireDefault(require_rng()); - var _stringify = _interopRequireDefault(require_stringify()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var _nodeId; - var _clockseq; - var _lastMSecs = 0; - var _lastNSecs = 0; - function v1(options, buf, offset) { - let i = (buf && offset) || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - if (node == null) { - node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - if (clockseq == null) { - clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 16383; - } - } - let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); - let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; - if (dt < 0 && options.clockseq === void 0) { - clockseq = (clockseq + 1) & 16383; - } - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { - nsecs = 0; - } - if (nsecs >= 1e4) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - msecs += 122192928e5; - const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; - b[i++] = (tl >>> 24) & 255; - b[i++] = (tl >>> 16) & 255; - b[i++] = (tl >>> 8) & 255; - b[i++] = tl & 255; - const tmh = ((msecs / 4294967296) * 1e4) & 268435455; - b[i++] = (tmh >>> 8) & 255; - b[i++] = tmh & 255; - b[i++] = ((tmh >>> 24) & 15) | 16; - b[i++] = (tmh >>> 16) & 255; - b[i++] = (clockseq >>> 8) | 128; - b[i++] = clockseq & 255; - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - return buf || (0, _stringify.default)(b); - } - var _default = v1; - exports2.default = _default; + module2.exports = { + kClose: /* @__PURE__ */ Symbol('close'), + kDestroy: /* @__PURE__ */ Symbol('destroy'), + kDispatch: /* @__PURE__ */ Symbol('dispatch'), + kUrl: /* @__PURE__ */ Symbol('url'), + kWriting: /* @__PURE__ */ Symbol('writing'), + kResuming: /* @__PURE__ */ Symbol('resuming'), + kQueue: /* @__PURE__ */ Symbol('queue'), + kConnect: /* @__PURE__ */ Symbol('connect'), + kConnecting: /* @__PURE__ */ Symbol('connecting'), + kKeepAliveDefaultTimeout: /* @__PURE__ */ Symbol('default keep alive timeout'), + kKeepAliveMaxTimeout: /* @__PURE__ */ Symbol('max keep alive timeout'), + kKeepAliveTimeoutThreshold: /* @__PURE__ */ Symbol('keep alive timeout threshold'), + kKeepAliveTimeoutValue: /* @__PURE__ */ Symbol('keep alive timeout'), + kKeepAlive: /* @__PURE__ */ Symbol('keep alive'), + kHeadersTimeout: /* @__PURE__ */ Symbol('headers timeout'), + kBodyTimeout: /* @__PURE__ */ Symbol('body timeout'), + kServerName: /* @__PURE__ */ Symbol('server name'), + kLocalAddress: /* @__PURE__ */ Symbol('local address'), + kHost: /* @__PURE__ */ Symbol('host'), + kNoRef: /* @__PURE__ */ Symbol('no ref'), + kBodyUsed: /* @__PURE__ */ Symbol('used'), + kBody: /* @__PURE__ */ Symbol('abstracted request body'), + kRunning: /* @__PURE__ */ Symbol('running'), + kBlocking: /* @__PURE__ */ Symbol('blocking'), + kPending: /* @__PURE__ */ Symbol('pending'), + kSize: /* @__PURE__ */ Symbol('size'), + kBusy: /* @__PURE__ */ Symbol('busy'), + kQueued: /* @__PURE__ */ Symbol('queued'), + kFree: /* @__PURE__ */ Symbol('free'), + kConnected: /* @__PURE__ */ Symbol('connected'), + kClosed: /* @__PURE__ */ Symbol('closed'), + kNeedDrain: /* @__PURE__ */ Symbol('need drain'), + kReset: /* @__PURE__ */ Symbol('reset'), + kDestroyed: /* @__PURE__ */ Symbol.for('nodejs.stream.destroyed'), + kResume: /* @__PURE__ */ Symbol('resume'), + kOnError: /* @__PURE__ */ Symbol('on error'), + kMaxHeadersSize: /* @__PURE__ */ Symbol('max headers size'), + kRunningIdx: /* @__PURE__ */ Symbol('running index'), + kPendingIdx: /* @__PURE__ */ Symbol('pending index'), + kError: /* @__PURE__ */ Symbol('error'), + kClients: /* @__PURE__ */ Symbol('clients'), + kClient: /* @__PURE__ */ Symbol('client'), + kParser: /* @__PURE__ */ Symbol('parser'), + kOnDestroyed: /* @__PURE__ */ Symbol('destroy callbacks'), + kPipelining: /* @__PURE__ */ Symbol('pipelining'), + kSocket: /* @__PURE__ */ Symbol('socket'), + kHostHeader: /* @__PURE__ */ Symbol('host header'), + kConnector: /* @__PURE__ */ Symbol('connector'), + kStrictContentLength: /* @__PURE__ */ Symbol('strict content length'), + kMaxRedirections: /* @__PURE__ */ Symbol('maxRedirections'), + kMaxRequests: /* @__PURE__ */ Symbol('maxRequestsPerClient'), + kProxy: /* @__PURE__ */ Symbol('proxy agent options'), + kCounter: /* @__PURE__ */ Symbol('socket request counter'), + kMaxResponseSize: /* @__PURE__ */ Symbol('max response size'), + kHTTP2Session: /* @__PURE__ */ Symbol('http2Session'), + kHTTP2SessionState: /* @__PURE__ */ Symbol('http2Session state'), + kRetryHandlerDefaultRetry: /* @__PURE__ */ Symbol('retry agent default retry'), + kConstruct: /* @__PURE__ */ Symbol('constructable'), + kListeners: /* @__PURE__ */ Symbol('listeners'), + kHTTPContext: /* @__PURE__ */ Symbol('http context'), + kMaxConcurrentStreams: /* @__PURE__ */ Symbol('max concurrent streams'), + kHostAuthority: /* @__PURE__ */ Symbol('host authority'), + kHTTP2InitialWindowSize: /* @__PURE__ */ Symbol('http2 initial window size'), + kHTTP2ConnectionWindowSize: /* @__PURE__ */ Symbol('http2 connection window size'), + kEnableConnectProtocol: /* @__PURE__ */ Symbol('http2session connect protocol'), + kRemoteSettings: /* @__PURE__ */ Symbol('http2session remote settings'), + kHTTP2Stream: /* @__PURE__ */ Symbol('http2session client stream'), + kPingInterval: /* @__PURE__ */ Symbol('ping interval'), + kNoProxyAgent: /* @__PURE__ */ Symbol('no proxy agent'), + kHttpProxyAgent: /* @__PURE__ */ Symbol('http proxy agent'), + kHttpsProxyAgent: /* @__PURE__ */ Symbol('https proxy agent'), + kSocks5ProxyAgent: /* @__PURE__ */ Symbol('socks5 proxy agent') + }; } }); -// node_modules/uuid/dist/parse.js -var require_parse = __commonJS({ - 'node_modules/uuid/dist/parse.js'(exports2) { +// node_modules/undici/lib/util/timers.js +var require_timers = __commonJS({ + 'node_modules/undici/lib/util/timers.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - let v; - const arr = new Uint8Array(16); - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = (v >>> 16) & 255; - arr[2] = (v >>> 8) & 255; - arr[3] = v & 255; - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 255; - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 255; - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 255; - arr[10] = ((v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776) & 255; - arr[11] = (v / 4294967296) & 255; - arr[12] = (v >>> 24) & 255; - arr[13] = (v >>> 16) & 255; - arr[14] = (v >>> 8) & 255; - arr[15] = v & 255; - return arr; - } - var _default = parse; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/v35.js -var require_v35 = __commonJS({ - 'node_modules/uuid/dist/v35.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = _default; - exports2.URL = exports2.DNS = void 0; - var _stringify = _interopRequireDefault(require_stringify()); - var _parse = _interopRequireDefault(require_parse()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); - const bytes = []; - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - return bytes; - } - var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; - exports2.DNS = DNS; - var URL2 = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; - exports2.URL = URL2; - function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); + var fastNow = 0; + var RESOLUTION_MS = 1e3; + var TICK_MS = (RESOLUTION_MS >> 1) - 1; + var fastNowTimeout; + var kFastTimer = /* @__PURE__ */ 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 (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = (bytes[6] & 15) | version; - bytes[8] = (bytes[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; + if (timer._state === TO_BE_CLEARED) { + timer._state = NOT_IN_LIST; + if (--len !== 0) { + fastTimers[idx] = fastTimers[len]; } - return buf; + } else { + ++idx; } - return (0, _stringify.default)(bytes); } - try { - generateUUID.name = name; - } catch (err) {} - generateUUID.DNS = DNS; - generateUUID.URL = URL2; - return generateUUID; - } - } -}); - -// node_modules/uuid/dist/md5.js -var require_md5 = __commonJS({ - 'node_modules/uuid/dist/md5.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _crypto = _interopRequireDefault(require('crypto')); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); + fastTimers.length = len; + if (fastTimers.length !== 0) { + refreshTimeout(); } - return _crypto.default.createHash('md5').update(bytes).digest(); - } - var _default = md5; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/v3.js -var require_v3 = __commonJS({ - 'node_modules/uuid/dist/v3.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _v = _interopRequireDefault(require_v35()); - var _md = _interopRequireDefault(require_md5()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var v3 = (0, _v.default)('v3', 48, _md.default); - var _default = v3; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/v4.js -var require_v4 = __commonJS({ - 'node_modules/uuid/dist/v4.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _rng = _interopRequireDefault(require_rng()); - var _stringify = _interopRequireDefault(require_stringify()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || _rng.default)(); - rnds[6] = (rnds[6] & 15) | 64; - rnds[8] = (rnds[8] & 63) | 128; - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return (0, _stringify.default)(rnds); - } - var _default = v4; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/sha1.js -var require_sha1 = __commonJS({ - 'node_modules/uuid/dist/sha1.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _crypto = _interopRequireDefault(require('crypto')); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; } - function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); + function refreshTimeout() { + if (fastNowTimeout?.refresh) { + fastNowTimeout.refresh(); + } else { + clearTimeout(fastNowTimeout); + fastNowTimeout = setTimeout(onTick, TICK_MS); + fastNowTimeout?.unref(); } - return _crypto.default.createHash('sha1').update(bytes).digest(); - } - var _default = sha1; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/v5.js -var require_v5 = __commonJS({ - 'node_modules/uuid/dist/v5.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _v = _interopRequireDefault(require_v35()); - var _sha = _interopRequireDefault(require_sha1()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - var v5 = (0, _v.default)('v5', 80, _sha.default); - var _default = v5; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/nil.js -var require_nil = __commonJS({ - 'node_modules/uuid/dist/nil.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _default = '00000000-0000-0000-0000-000000000000'; - exports2.default = _default; - } -}); - -// node_modules/uuid/dist/version.js -var require_version = __commonJS({ - 'node_modules/uuid/dist/version.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - exports2.default = void 0; - var _validate = _interopRequireDefault(require_validate()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; } - function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); + 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; } - return parseInt(uuid.substr(14, 1), 16); - } - var _default = version; - exports2.default = _default; + }; + module2.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 + }; } }); -// node_modules/uuid/dist/index.js -var require_dist = __commonJS({ - 'node_modules/uuid/dist/index.js'(exports2) { +// node_modules/undici/lib/core/errors.js +var require_errors = __commonJS({ + 'node_modules/undici/lib/core/errors.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { - value: true - }); - Object.defineProperty(exports2, 'v1', { - enumerable: true, - get: function () { - return _v.default; + var kUndiciError = /* @__PURE__ */ Symbol.for('undici.error.UND_ERR'); + var UndiciError = class extends Error { + constructor(message, options) { + super(message, options); + this.name = 'UndiciError'; + this.code = 'UND_ERR'; } - }); - Object.defineProperty(exports2, 'v3', { - enumerable: true, - get: function () { - return _v2.default; + static [Symbol.hasInstance](instance) { + return instance && instance[kUndiciError] === true; } - }); - Object.defineProperty(exports2, 'v4', { - enumerable: true, - get: function () { - return _v3.default; + get [kUndiciError]() { + return true; } - }); - Object.defineProperty(exports2, 'v5', { - enumerable: true, - get: function () { - return _v4.default; + }; + var kConnectTimeoutError = /* @__PURE__ */ 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'; } - }); - Object.defineProperty(exports2, 'NIL', { - enumerable: true, - get: function () { - return _nil.default; + static [Symbol.hasInstance](instance) { + return instance && instance[kConnectTimeoutError] === true; } - }); - Object.defineProperty(exports2, 'version', { - enumerable: true, - get: function () { - return _version.default; + get [kConnectTimeoutError]() { + return true; } - }); - Object.defineProperty(exports2, 'validate', { - enumerable: true, - get: function () { - return _validate.default; + }; + var kHeadersTimeoutError = /* @__PURE__ */ 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'; } - }); - Object.defineProperty(exports2, 'stringify', { - enumerable: true, - get: function () { - return _stringify.default; + static [Symbol.hasInstance](instance) { + return instance && instance[kHeadersTimeoutError] === true; } - }); - Object.defineProperty(exports2, 'parse', { - enumerable: true, - get: function () { - return _parse.default; + get [kHeadersTimeoutError]() { + return true; } - }); - var _v = _interopRequireDefault(require_v1()); - var _v2 = _interopRequireDefault(require_v3()); - var _v3 = _interopRequireDefault(require_v4()); - var _v4 = _interopRequireDefault(require_v5()); - var _nil = _interopRequireDefault(require_nil()); - var _version = _interopRequireDefault(require_version()); - var _validate = _interopRequireDefault(require_validate()); - var _stringify = _interopRequireDefault(require_stringify()); - var _parse = _interopRequireDefault(require_parse()); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - } -}); - -// node_modules/@actions/core/lib/file-command.js -var require_file_command = __commonJS({ - 'node_modules/@actions/core/lib/file-command.js'(exports2) { - 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.prepareKeyValueMessage = exports2.issueFileCommand = void 0; - var fs2 = __importStar(require('fs')); - var os = __importStar(require('os')); - var uuid_1 = require_dist(); - var utils_1 = require_utils(); - function issueFileCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); + }; + var kHeadersOverflowError = /* @__PURE__ */ 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'; } - if (!fs2.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); + static [Symbol.hasInstance](instance) { + return instance && instance[kHeadersOverflowError] === true; } - fs2.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: 'utf8' - }); - } - exports2.issueFileCommand = issueFileCommand; - function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - const convertedValue = utils_1.toCommandValue(value); - if (key.includes(delimiter)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + get [kHeadersOverflowError]() { + return true; } - if (convertedValue.includes(delimiter)) { - throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + }; + var kBodyTimeoutError = /* @__PURE__ */ 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'; } - return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; - } - exports2.prepareKeyValueMessage = prepareKeyValueMessage; - } -}); - -// node_modules/@actions/http-client/lib/proxy.js -var require_proxy = __commonJS({ - 'node_modules/@actions/http-client/lib/proxy.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.checkBypass = exports2.getProxyUrl = void 0; - function getProxyUrl(reqUrl) { - const usingSsl = reqUrl.protocol === 'https:'; - if (checkBypass(reqUrl)) { - return void 0; + static [Symbol.hasInstance](instance) { + return instance && instance[kBodyTimeoutError] === true; } - 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) { - return new URL(proxyVar); - } else { - return void 0; + get [kBodyTimeoutError]() { + return true; } - } - exports2.getProxyUrl = getProxyUrl; - function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; + }; + var kInvalidArgumentError = /* @__PURE__ */ 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'; } - const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; - if (!noProxy) { - return false; + static [Symbol.hasInstance](instance) { + return instance && instance[kInvalidArgumentError] === true; } - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } else if (reqUrl.protocol === 'http:') { - reqPort = 80; - } else if (reqUrl.protocol === 'https:') { - reqPort = 443; + get [kInvalidArgumentError]() { + return true; } - const upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === 'number') { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + }; + var kInvalidReturnValueError = /* @__PURE__ */ 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'; } - for (const upperNoProxyItem of noProxy - .split(',') - .map(x => x.trim().toUpperCase()) - .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { - return true; - } + static [Symbol.hasInstance](instance) { + return instance && instance[kInvalidReturnValueError] === true; } - return false; - } - exports2.checkBypass = checkBypass; - } -}); - -// node_modules/tunnel/lib/tunnel.js -var require_tunnel = __commonJS({ - 'node_modules/tunnel/lib/tunnel.js'(exports2) { - 'use strict'; - var net = require('net'); - var tls = require('tls'); - var http = require('http'); - var https = require('https'); - var events = require('events'); - var assert = require('assert'); - var util = require('util'); - exports2.httpOverHttp = httpOverHttp; - exports2.httpsOverHttp = httpsOverHttp; - exports2.httpOverHttps = httpOverHttps; - exports2.httpsOverHttps = httpsOverHttps; - function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; - } - function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; - } - function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; - } - function httpsOverHttps(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; + get [kInvalidReturnValueError]() { + return true; } - 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; + var kAbortError = /* @__PURE__ */ 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'; } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + new Buffer(connectOptions.proxyAuth).toString('base64'); + static [Symbol.hasInstance](instance) { + return instance && instance[kAbortError] === true; } - debug('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; + get [kAbortError]() { + return true; } - function onUpgrade(res, socket, head) { - process.nextTick(function () { - onConnect(res, socket, head); - }); + }; + var kRequestAbortedError = /* @__PURE__ */ 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'; } - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestAbortedError] === true; } - function onError(cause) { - connectReq.removeAllListeners(); - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); + get [kRequestAbortedError]() { + return true; } }; - TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket); - if (pos === -1) { - return; + var kInformationalError = /* @__PURE__ */ Symbol.for('undici.error.UND_ERR_INFO'); + var InformationalError = class extends UndiciError { + constructor(message, options) { + super(message, options); + this.name = 'InformationalError'; + this.message = message || 'Request information'; + this.code = 'UND_ERR_INFO'; } - this.sockets.splice(pos, 1); - var pending = this.requests.shift(); - if (pending) { - this.createSocket(pending, function (socket2) { - pending.request.onSocket(socket2); - }); + static [Symbol.hasInstance](instance) { + return instance && instance[kInformationalError] === true; + } + get [kInformationalError]() { + return true; } }; - 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 - }; + var kRequestContentLengthMismatchError = /* @__PURE__ */ 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'; } - return host; + static [Symbol.hasInstance](instance) { + return instance && instance[kRequestContentLengthMismatchError] === true; + } + get [kRequestContentLengthMismatchError]() { + return true; + } + }; + var kResponseContentLengthMismatchError = /* @__PURE__ */ 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; + } + get [kResponseContentLengthMismatchError]() { + return true; + } + }; + var kClientDestroyedError = /* @__PURE__ */ 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; + } + get [kClientDestroyedError]() { + return true; + } + }; + var kClientClosedError = /* @__PURE__ */ 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; + } + get [kClientClosedError]() { + return true; + } + }; + var kSocketError = /* @__PURE__ */ 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; + } + get [kSocketError]() { + return true; + } + }; + var kNotSupportedError = /* @__PURE__ */ 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; + } + get [kNotSupportedError]() { + return true; + } + }; + var kBalancedPoolMissingUpstreamError = /* @__PURE__ */ 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; + } + get [kBalancedPoolMissingUpstreamError]() { + return true; + } + }; + var kHTTPParserError = /* @__PURE__ */ 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; + } + get [kHTTPParserError]() { + return true; + } + }; + var kResponseExceededMaxSizeError = /* @__PURE__ */ 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; + } + get [kResponseExceededMaxSizeError]() { + return true; + } + }; + var kRequestRetryError = /* @__PURE__ */ 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; + } + get [kRequestRetryError]() { + return true; + } + }; + var kResponseError = /* @__PURE__ */ Symbol.for('undici.error.UND_ERR_RESPONSE'); + var ResponseError = class extends UndiciError { + constructor(message, code, { headers, body }) { + super(message); + this.name = 'ResponseError'; + this.message = message || 'Response error'; + this.code = 'UND_ERR_RESPONSE'; + this.statusCode = code; + this.body = body; + this.headers = headers; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kResponseError] === true; + } + get [kResponseError]() { + return true; + } + }; + var kSecureProxyConnectionError = /* @__PURE__ */ 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; + } + get [kSecureProxyConnectionError]() { + return true; + } + }; + var kMaxOriginsReachedError = /* @__PURE__ */ Symbol.for('undici.error.UND_ERR_MAX_ORIGINS_REACHED'); + var MaxOriginsReachedError = class extends UndiciError { + constructor(message) { + super(message); + this.name = 'MaxOriginsReachedError'; + this.message = message || 'Maximum allowed origins reached'; + this.code = 'UND_ERR_MAX_ORIGINS_REACHED'; + } + static [Symbol.hasInstance](instance) { + return instance && instance[kMaxOriginsReachedError] === true; + } + get [kMaxOriginsReachedError]() { + return true; + } + }; + var Socks5ProxyError = class extends UndiciError { + constructor(message, code) { + super(message); + this.name = 'Socks5ProxyError'; + this.message = message || 'SOCKS5 proxy error'; + this.code = code || 'UND_ERR_SOCKS5'; + } + }; + var kMessageSizeExceededError = /* @__PURE__ */ 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; + } + }; + module2.exports = { + AbortError, + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError, + ResponseError, + SecureProxyConnectionError, + MaxOriginsReachedError, + Socks5ProxyError, + MessageSizeExceededError + }; + } +}); + +// node_modules/undici/lib/core/constants.js +var require_constants = __commonJS({ + 'node_modules/undici/lib/core/constants.js'(exports2, module2) { + 'use strict'; + var wellknownHeaderNames = + /** @type {const} */ + [ + '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' + ]; + var headerNameLowerCasedRecord = {}; + Object.setPrototypeOf(headerNameLowerCasedRecord, null); + for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = wellknownHeaderNames[i]; + const lowerCasedKey = key.toLowerCase(); + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = lowerCasedKey; } - 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]; + module2.exports = { + wellknownHeaderNames, + headerNameLowerCasedRecord + }; + } +}); + +// node_modules/undici/lib/core/tree.js +var require_tree = __commonJS({ + 'node_modules/undici/lib/core/tree.js'(exports2, module2) { + '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 + * @returns {void} + */ + 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; } } } - return target; - } - var debug; - if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; + /** + * @param {Uint8Array} key + * @returns {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 + * @returns {void} + * */ + insert(key, value) { + if (this.node === null) { + this.node = new TstNode(key, value, 0); } else { - args.unshift('TUNNEL:'); + this.node.add(key, value); } - console.error.apply(console, args); - }; - } else { - debug = function () {}; + } + /** + * @param {Uint8Array} key + * @returns {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); } - exports2.debug = debug; - } -}); - -// node_modules/tunnel/index.js -var require_tunnel2 = __commonJS({ - 'node_modules/tunnel/index.js'(exports2, module2) { - module2.exports = require_tunnel(); + module2.exports = { + TernarySearchTree, + tree + }; } }); -// node_modules/@actions/http-client/lib/index.js -var require_lib = __commonJS({ - 'node_modules/@actions/http-client/lib/index.js'(exports2) { +// node_modules/undici/lib/core/util.js +var require_util = __commonJS({ + 'node_modules/undici/lib/core/util.js'(exports2, module2) { 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; + var assert = 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 { stringify } = require('node:querystring'); + var { EventEmitter: EE, addAbortListener: addAbortListenerNative } = require('node:events'); + var timers = require_timers(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var { headerNameLowerCasedRecord } = require_constants(); + var { tree } = require_tree(); + var BodyAsyncIterable = class { + constructor(body) { + this[kBody] = body; + this[kBodyUsed] = false; + } + async *[Symbol.asyncIterator]() { + assert(!this[kBodyUsed], 'disturbed'); + this[kBodyUsed] = true; + yield* this[kBody]; + } + }; + function noop3() {} + function wrapRequestBody(body) { + if (isStream(body)) { + if (bodyLength(body) === 0) { + body.on('data', function () { + assert(false); }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); + if (typeof body.readableDidRead !== 'boolean') { + body[kBodyUsed] = false; + EE.prototype.on.call(body, 'data', function () { + this[kBodyUsed] = true; + }); } - return new (P || (P = Promise))(function (resolve, 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 ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.HttpClient = - exports2.isHttps = - exports2.HttpClientResponse = - exports2.HttpClientError = - exports2.getProxyUrl = - exports2.MediaTypes = - exports2.Headers = - exports2.HttpCodes = - void 0; - var http = __importStar(require('http')); - var https = __importStar(require('https')); - var pm = __importStar(require_proxy()); - var tunnel = __importStar(require_tunnel2()); - 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 = exports2.HttpCodes || (exports2.HttpCodes = {}))); - var Headers; - (function (Headers2) { - Headers2['Accept'] = 'accept'; - Headers2['ContentType'] = 'content-type'; - })((Headers = exports2.Headers || (exports2.Headers = {}))); - var MediaTypes; - (function (MediaTypes2) { - MediaTypes2['ApplicationJson'] = 'application/json'; - })((MediaTypes = exports2.MediaTypes || (exports2.MediaTypes = {}))); - function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; + return body; + } else if (body && typeof body.pipeTo === 'function') { + return new BodyAsyncIterable(body); + } else if (body && isFormDataLike(body)) { + return body; + } else if (body && typeof body !== 'string' && !ArrayBuffer.isView(body) && isIterable(body)) { + return new BodyAsyncIterable(body); + } else { + return body; + } } - exports2.getProxyUrl = getProxyUrl; - var HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect - ]; - var HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout]; - var RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; - var ExponentialBackoffCeiling = 10; - var ExponentialBackoffTimeSlice = 5; - var HttpClientError = class extends Error { - constructor(message, statusCode) { - super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); + function isStream(obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'; + } + function isBlobLike(object) { + return object instanceof Blob; + } + function pathHasQueryOrFragment(url) { + return url.includes('?') || url.includes('#'); + } + function serializePathWithQuery(url, queryParams) { + if (pathHasQueryOrFragment(url)) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".'); } - }; - exports2.HttpClientError = HttpClientError; - var HttpClientResponse = class { - constructor(message) { - this.message = message; + const stringified = stringify(queryParams); + if (stringified) { + url += '?' + stringified; } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise(resolve => - __awaiter(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', () => { - resolve(output.toString()); - }); - }) + 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 path2 = url.path != null ? url.path : `${url.pathname || ''}${url.search || ''}`; + if (origin[origin.length - 1] === '/') { + origin = origin.slice(0, origin.length - 1); + } + if (path2 && path2[0] !== '/') { + path2 = `/${path2}`; + } + return new URL(`${origin}${path2}`); + } + 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(']'); + assert(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; + } + assert(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 hasSafeIterator(obj) { + const prototype = Object.getPrototypeOf(obj); + const ownIterator = Object.hasOwn(obj, Symbol.iterator); + return ( + ownIterator || (prototype != null && prototype !== Object.prototype && typeof obj[Symbol.iterator] === '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); }); } - }; - exports2.HttpClientResponse = HttpClientResponse; - function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; + if (stream2.destroyed !== true) { + stream2[kDestroyed] = true; + } } - exports2.isHttps = isHttps; - var HttpClient = class { - constructor(userAgent, 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 = userAgent; - 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; + var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; + function parseKeepAliveTimeout(val) { + const m = val.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 !== void 0) { + if (!Object.hasOwn(obj, key)) { + const headersValue = + typeof headers[i + 1] === 'string' + ? headers[i + 1] + : Array.isArray(headers[i + 1]) + ? headers[i + 1].map(x => x.toString('latin1')) + : headers[i + 1].toString('latin1'); + if (key === '__proto__') { + Object.defineProperty(obj, key, { + value: headersValue, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = headersValue; + } + } else { + if (typeof val === 'string') { + val = [val]; + obj[key] = val; + } + val.push(headers[i + 1].toString('latin1')); } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; + } else { + const headersValue = + typeof headers[i + 1] === 'string' + ? headers[i + 1] + : Array.isArray(headers[i + 1]) + ? headers[i + 1].map(x => x.toString('latin1')) + : headers[i + 1].toString('latin1'); + obj[key] = headersValue; + } + } + return obj; + } + function parseRawHeaders(headers) { + if (headers == null) { + return []; + } + if (!Array.isArray(headers)) { + const rawHeaders = []; + for (const [name, value] of Object.entries(headers)) { + if (Array.isArray(value)) { + for (const entry of value) { + rawHeaders.push(name, `${entry}`); + } + } else { + rawHeaders.push(name, `${value}`); } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; + } + return rawHeaders; + } + const headersLength = headers.length; + const ret = new Array(headersLength); + let key; + let val; + for (let n = 0; n < headersLength; n += 2) { + key = headers[n]; + val = headers[n + 1]; + typeof key !== 'string' && (key = key.toString()); + typeof val !== 'string' && (val = val.toString('latin1')); + ret[n] = key; + ret[n + 1] = val; + } + return ret; + } + function toRawHeaders(headers) { + const rawHeaders = []; + for (const [name, value] of Object.entries(headers)) { + if (Array.isArray(value)) { + for (const entry of value) { + rawHeaders.push(Buffer.from(name, 'latin1'), Buffer.from(`${entry}`, 'latin1')); } + } else { + rawHeaders.push(Buffer.from(name, 'latin1'), Buffer.from(`${value}`, 'latin1')); } } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - }); - } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - }); + return rawHeaders; + } + function encodeRawHeaders(headers) { + if (!Array.isArray(headers)) { + throw new TypeError('expected headers to be an array'); } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); - }); + return headers.map(x => Buffer.from(x)); + } + function isBuffer(buffer) { + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); + } + function assertRequestHandler(handler2, method, upgrade) { + if (!handler2 || typeof handler2 !== 'object') { + throw new InvalidArgumentError('handler must be an object'); } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('POST', requestUrl, data, additionalHeaders || {}); - }); + if (typeof handler2.onRequestStart !== 'function') { + throw new InvalidArgumentError('invalid onRequestStart method'); } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - }); + if (typeof handler2.onResponseError !== 'function') { + throw new InvalidArgumentError('invalid onResponseError method'); } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); - }); + if (typeof handler2.onBodySent !== 'function' && handler2.onBodySent !== void 0) { + throw new InvalidArgumentError('invalid onBodySent method'); } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); - }); + if (typeof handler2.onRequestSent !== 'function' && handler2.onRequestSent !== void 0) { + throw new InvalidArgumentError('invalid onRequestSent method'); } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); + if (upgrade || method === 'CONNECT') { + if (typeof handler2.onRequestUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onRequestUpgrade method'); + } + } else { + if (typeof handler2.onResponseStart !== 'function') { + throw new InvalidArgumentError('invalid onResponseStart method'); + } + if (typeof handler2.onResponseData !== 'function') { + throw new InvalidArgumentError('invalid onResponseData method'); + } + if (typeof handler2.onResponseEnd !== 'function') { + throw new InvalidArgumentError('invalid onResponseEnd method'); + } } - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + } + function isDisturbed(body) { + return !!(body && (stream.isDisturbed(body) || body[kBodyUsed])); + } + 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({ + start() { + iterator2 = iterable[Symbol.asyncIterator](); + }, + pull(controller) { + return iterator2.next().then(({ done, value }) => { + if (done) { + return queueMicrotask(() => { + controller.close(); + controller.byobRequest?.respond(0); + }); + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); + if (buf.byteLength) { + return controller.enqueue(new Uint8Array(buf)); + } else { + return this.pull(controller); + } + } + }); + }, + cancel() { + return 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 (!signal || 'aborted' in signal) { + return addAbortListenerNative(signal, listener)[Symbol.dispose]; } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + if (typeof signal.addEventListener === 'function') { + signal.addEventListener('abort', listener, { once: true }); + return () => signal.removeEventListener('abort', listener); } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + signal.once('abort', listener); + return () => signal.removeListener('abort', listener); + } + var validTokenChars = new Uint8Array([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 0-15 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 16-31 + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, + // 32-47 (!"#$%&'()*+,-./) + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + // 48-63 (0-9:;<=>?) + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + // 64-79 (@A-O) + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + // 80-95 (P-Z[\]^_) + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + // 96-111 (`a-o) + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + // 112-127 (p-z{|}~) + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 128-143 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 144-159 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 160-175 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 176-191 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 192-207 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 208-223 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 224-239 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + // 240-255 + ]); + function isTokenCharCode(c) { + return validTokenChars[c] === 1; + } + var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; + function isValidHTTPToken(characters) { + if (characters.length >= 12) return tokenRegExp.test(characters); + if (characters.length === 0) return false; + for (let i = 0; i < characters.length; i++) { + if (validTokenChars[characters.charCodeAt(i)] !== 1) { + return false; + } } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson - ); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error('Client has already been disposed.'); + return true; + } + var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + function isValidHeaderValue(characters) { + return !headerCharRegex.test(characters); + } + var rangeHeaderRegex = /^bytes (\d+)-(\d+)\/(\d+|\*)?$/; + function parseRangeHeader(range) { + if (range == null || range === '') return { start: 0, end: null, size: null }; + if (!range) return null; + const m = rangeHeaderRegex.exec(range); + return m + ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] && m[3] !== '*' ? parseInt(m[3]) : null } - const parsedUrl = new URL(requestUrl); - let info = 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(info, data); - if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } else { - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while ( - response.message.statusCode && - HttpRedirectCodes.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]; - } - } - } - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; + : null; + } + function addListener(obj, name, listener) { + const listeners = (obj[kListeners] ??= []); + listeners.push([name, listener]); + obj.on(name, listener); + return obj; + } + function removeAllListeners(obj) { + if (obj[kListeners] != null) { + for (const [name, listener] of obj[kListeners]) { + obj.removeListener(name, listener); + } + obj[kListeners] = null; + } + return obj; + } + function errorRequest(client, request2, err) { + try { + request2.onResponseError(err); + assert(request2.aborted); + } catch (err2) { + client.emit('error', err2); + } + } + var setupConnectTimeout = + process.platform === 'win32' + ? (socketWeakRef, opts) => { + if (!opts.timeout) { + return noop3; } - if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { - return response; + 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; } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); + 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)`; + destroy(socket, new ConnectTimeoutError(message)); + } + function getProtocolFromUrlString(urlString) { + if (urlString[0] === 'h' && urlString[1] === 't' && urlString[2] === 't' && urlString[3] === 'p') { + switch (urlString[4]) { + case ':': + return 'http:'; + case 's': + if (urlString[5] === ':') { + return 'https:'; } - } while (numTries < maxTries); - return response; - }); + } } - dispose() { - if (this._agent) { - this._agent.destroy(); + return urlString.slice(0, urlString.indexOf(':') + 1); + } + var kEnumerableProperty = { + __proto__: null, + 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); + module2.exports = { + kEnumerableProperty, + isDisturbed, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + hasSafeIterator, + isAsyncIterable, + isDestroyed, + headerNameToString, + bufferToLowerCasedHeaderName, + addListener, + removeAllListeners, + errorRequest, + parseRawHeaders, + toRawHeaders, + encodeRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + assertRequestHandler, + getSocketInfo, + isFormDataLike, + pathHasQueryOrFragment, + serializePathWithQuery, + addAbortListener, + isValidHTTPToken, + isValidHeaderValue, + isTokenCharCode, + parseRangeHeader, + normalizedMethodRecordsBase, + normalizedMethodRecords, + isValidPort, + isHttpOrHttpsPrefixed, + safeHTTPMethods: Object.freeze(['GET', 'HEAD', 'OPTIONS', 'TRACE']), + wrapRequestBody, + setupConnectTimeout, + getProtocolFromUrlString + }; + } +}); + +// node_modules/undici/lib/util/stats.js +var require_stats = __commonJS({ + 'node_modules/undici/lib/util/stats.js'(exports2, module2) { + 'use strict'; + var { kConnected, kPending, kRunning, kSize, kFree, kQueued } = require_symbols(); + var ClientStats = class { + constructor(client) { + this.connected = client[kConnected]; + this.pending = client[kPending]; + this.running = client[kRunning]; + this.size = client[kSize]; + } + }; + var PoolStats = class { + constructor(pool) { + this.connected = pool[kConnected]; + this.free = pool[kFree]; + this.pending = pool[kPending]; + this.queued = pool[kQueued]; + this.running = pool[kRunning]; + this.size = pool[kSize]; + } + }; + module2.exports = { ClientStats, PoolStats }; + } +}); + +// node_modules/undici/lib/core/diagnostics.js +var require_diagnostics = __commonJS({ + 'node_modules/undici/lib/core/diagnostics.js'(exports2, module2) { + '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 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'), + bodyChunkSent: diagnosticsChannel.channel('undici:request:bodyChunkSent'), + bodyChunkReceived: diagnosticsChannel.channel('undici:request:bodyChunkReceived'), + 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'), + // ProxyAgent + proxyConnected: diagnosticsChannel.channel('undici:proxy:connected') + }; + var isTrackingClientEvents = false; + function trackClientEvents(debugLog = undiciDebugLog) { + if (isTrackingClientEvents) { + return; + } + if ( + channels.beforeConnect.hasSubscribers || + channels.connected.hasSubscribers || + channels.connectError.hasSubscribers || + channels.sendHeaders.hasSubscribers + ) { + isTrackingClientEvents = true; + return; + } + isTrackingClientEvents = true; + diagnosticsChannel.subscribe('undici:client:beforeConnect', evt => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debugLog('connecting to %s%s using %s%s', host, port ? `:${port}` : '', protocol, version); + }); + diagnosticsChannel.subscribe('undici:client:connected', evt => { + const { + connectParams: { version, protocol, port, host } + } = evt; + debugLog('connected to %s%s using %s%s', host, port ? `:${port}` : '', protocol, version); + }); + diagnosticsChannel.subscribe('undici:client:connectError', 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.subscribe('undici:client:sendHeaders', evt => { + const { + request: { method, path: path2, origin } + } = evt; + debugLog('sending request to %s %s%s', method, origin, path2); + }); + } + var isTrackingRequestEvents = false; + function trackRequestEvents(debugLog = undiciDebugLog) { + if (isTrackingRequestEvents) { + return; + } + if (channels.headers.hasSubscribers || channels.trailers.hasSubscribers || channels.error.hasSubscribers) { + isTrackingRequestEvents = true; + return; + } + isTrackingRequestEvents = true; + diagnosticsChannel.subscribe('undici:request:headers', evt => { + const { + request: { method, path: path2, origin }, + response: { statusCode } + } = evt; + debugLog('received response to %s %s%s - HTTP %d', method, origin, path2, statusCode); + }); + diagnosticsChannel.subscribe('undici:request:trailers', evt => { + const { + request: { method, path: path2, origin } + } = evt; + debugLog('trailers received from %s %s%s', method, origin, path2); + }); + diagnosticsChannel.subscribe('undici:request:error', evt => { + const { + request: { method, path: path2, origin }, + error: error2 + } = evt; + debugLog('request to %s %s%s errored - %s', method, origin, path2, error2.message); + }); + } + var isTrackingWebSocketEvents = false; + function trackWebSocketEvents(debugLog = websocketDebuglog) { + if (isTrackingWebSocketEvents) { + return; + } + if ( + channels.open.hasSubscribers || + channels.close.hasSubscribers || + channels.socketError.hasSubscribers || + channels.ping.hasSubscribers || + channels.pong.hasSubscribers + ) { + isTrackingWebSocketEvents = true; + return; + } + isTrackingWebSocketEvents = true; + diagnosticsChannel.subscribe('undici:websocket:open', evt => { + if (evt.address != null) { + const { address, port } = evt.address; + debugLog('connection opened %s%s', address, port ? `:${port}` : ''); + } else { + debugLog('connection opened'); } - this._disposed = true; + }); + diagnosticsChannel.subscribe('undici:websocket:close', evt => { + const { websocket, code, reason } = evt; + debugLog('closed connection to %s - %s %s', websocket.url, code, reason); + }); + diagnosticsChannel.subscribe('undici:websocket:socket_error', err => { + debugLog('connection errored - %s', err.message); + }); + diagnosticsChannel.subscribe('undici:websocket:ping', evt => { + debugLog('ping received'); + }); + diagnosticsChannel.subscribe('undici:websocket:pong', evt => { + debugLog('pong received'); + }); + } + if (undiciDebugLog.enabled || fetchDebuglog.enabled) { + trackClientEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog); + trackRequestEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog); + } + if (websocketDebuglog.enabled) { + trackClientEvents(undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog); + trackWebSocketEvents(websocketDebuglog); + } + module2.exports = { + channels + }; + } +}); + +// node_modules/undici/lib/core/request.js +var require_request = __commonJS({ + 'node_modules/undici/lib/core/request.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError, NotSupportedError } = require_errors(); + var assert = require('node:assert'); + var { + isValidHTTPToken, + isValidHeaderValue, + isStream, + destroy, + isBuffer, + isFormDataLike, + isIterable, + hasSafeIterator, + isBlobLike, + serializePathWithQuery, + parseHeaders, + assertRequestHandler, + getServerName, + normalizedMethodRecords, + getProtocolFromUrlString + } = require_util(); + var { channels } = require_diagnostics(); + var { headerNameLowerCasedRecord } = require_constants(); + var invalidPathRegex = /[^\u0021-\u00ff]/; + function isValidContentLengthHeaderValue(val) { + if (typeof val !== 'string' || val.length === 0) { + return false; } - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } else if (!res) { - reject(new Error('Unknown error')); - } else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); + for (let i = 0; i < val.length; i++) { + const charCode = val.charCodeAt(i); + if (charCode < 48 || charCode > 57) { + return false; + } } - requestRawWithCallback(info, data, onResult) { - if (typeof data === 'string') { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + return true; + } + var kHandler = /* @__PURE__ */ Symbol('handler'); + var kController = /* @__PURE__ */ Symbol('controller'); + var kResume = /* @__PURE__ */ Symbol('resume'); + var RequestController = class { + #paused = false; + #reason = null; + #aborted = false; + #abort; + [kResume] = null; + rawHeaders = null; + rawTrailers = null; + constructor(abort) { + this.#abort = abort; + } + pause() { + this.#paused = true; + } + resume() { + if (this.#paused) { + this.#paused = false; + this[kResume]?.(); } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); + } + abort(reason) { + if (!this.#aborted) { + this.#aborted = true; + this.#reason = reason; + this.#abort(reason); + } + } + get aborted() { + return this.#aborted; + } + get reason() { + return this.#reason; + } + get paused() { + return this.#paused; + } + }; + var Request = class { + constructor( + origin, + { + path: path2, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + expectContinue, + servername, + throwOnError, + maxRedirections, + typeOfService + }, + handler2 + ) { + if (typeof path2 !== 'string') { + throw new InvalidArgumentError('path must be a string'); + } else if ( + path2[0] !== '/' && + !(path2.startsWith('http://') || path2.startsWith('https://')) && + method !== 'CONNECT' + ) { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash'); + } else if (invalidPathRegex.test(path2)) { + 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'); + } + if (throwOnError != null) { + throw new InvalidArgumentError('invalid throwOnError'); + } + if (maxRedirections != null && maxRedirections !== 0) { + throw new InvalidArgumentError('maxRedirections is not supported, use the redirect interceptor'); + } + if (typeOfService != null && (!Number.isInteger(typeOfService) || typeOfService < 0 || typeOfService > 255)) { + throw new InvalidArgumentError('typeOfService must be an integer between 0 and 255'); + } + this.headersTimeout = headersTimeout; + this.bodyTimeout = bodyTimeout; + this.method = method; + this.typeOfService = typeOfService ?? 0; + 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' + ); } - const req = info.httpModule.request(info.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(); + this.completed = false; + this.aborted = false; + this.upgrade = upgrade || null; + this.path = query ? serializePathWithQuery(path2, query) : path2; + this.origin = origin; + this.protocol = getProtocolFromUrlString(origin); + this.idempotent = idempotent == null ? method === 'HEAD' || method === 'GET' : idempotent; + this.blocking = blocking ?? this.method !== 'HEAD'; + 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'); } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on('error', function (err) { - handleResult(err); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]); + } + } else if (headers && typeof headers === 'object') { + if (hasSafeIterator(headers)) { + 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'); } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } else { - req.end(); + assertRequestHandler(handler2, method, upgrade); + this.servername = servername || getServerName(this.host) || null; + this[kHandler] = handler2; + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }); } } - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; - info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; + onBodySent(chunk) { + if (channels.bodyChunkSent.hasSubscribers) { + channels.bodyChunkSent.publish({ request: this, chunk }); } - info.options.agent = this._getAgent(info.parsedUrl); - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk); + } catch (err) { + this.abort(err); } } - return info; } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + onRequestSent() { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }); + } + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent(); + } catch (err) { + this.abort(err); + } } - return lowercaseKeys(headers || {}); } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + onRequestStart(abort, context3) { + assert(!this.aborted); + assert(!this.completed); + this[kController] = new RequestController(abort); + if (this.error) { + this[kController].abort(this.error); + return; } - return additionalHeaders[header] || clientHeader || _default; + this.abort = abort; + return this[kHandler].onRequestStart(this[kController], context3); } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; + onResponseStarted() { + return this[kHandler].onResponseStarted?.(); + } + onResponseStart(statusCode, headers, resume, statusText) { + assert(!this.aborted); + assert(!this.completed); + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }); } - if (this._keepAlive && !useProxy) { - agent = this._agent; + const controller = this[kController]; + if (controller) { + controller[kResume] = resume; + controller.rawHeaders = headers; } - if (agent) { - return agent; + const parsedHeaders = Array.isArray(headers) ? parseHeaders(headers) : headers; + try { + this[kHandler].onResponseStart?.(controller, statusCode, parsedHeaders, statusText); + return !controller?.paused; + } catch (err) { + this.abort(err); + return false; } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + onResponseData(chunk) { + assert(!this.aborted); + assert(!this.completed); + if (channels.bodyChunkReceived.hasSubscribers) { + channels.bodyChunkReceived.publish({ request: this, chunk }); } - 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 ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; + const controller = this[kController]; + try { + this[kHandler].onResponseData?.(controller, chunk); + return !controller?.paused; + } catch (err) { + this.abort(err); + return false; } - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; + } + onRequestUpgrade(statusCode, headers, socket) { + assert(!this.aborted); + assert(!this.completed); + const controller = this[kController]; + if (controller) { + controller.rawHeaders = headers; } - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; + const parsedHeaders = Array.isArray(headers) ? parseHeaders(headers) : headers; + return this[kHandler].onRequestUpgrade?.(controller, statusCode, parsedHeaders, socket); + } + onResponseEnd(trailers) { + this.onFinally(); + assert(!this.aborted); + assert(!this.completed); + this.completed = true; + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }); } - if (usingSsl && this._ignoreSslError) { - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); + const controller = this[kController]; + if (controller) { + controller.rawTrailers = trailers; + } + const parsedTrailers = Array.isArray(trailers) ? parseHeaders(trailers) : trailers; + try { + return this[kHandler].onResponseEnd?.(controller, parsedTrailers); + } catch (err) { + this.onResponseError(err); } - return agent; } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - }); + onResponseError(error2) { + this.onFinally(); + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error: error2 }); + } + if (this.aborted) { + return; + } + this.aborted = true; + const controller = this[kController]; + return this[kHandler].onResponseError?.(controller, 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; + } } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => - __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {} - }; - if (statusCode === HttpCodes.NotFound) { - resolve(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 { - resolve(response); - } - }) - ); - }); + addHeader(key, value) { + processHeader(this, key, value); + return this; } }; - exports2.HttpClient = HttpClient; - var lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); + 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'); + } + if (!isValidContentLengthHeaderValue(val)) { + throw new InvalidArgumentError('invalid content-length header'); + } + request2.contentLength = parseInt(val, 10); + } 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 : null; + if (value === null) { + throw new InvalidArgumentError('invalid connection header'); + } + for (const token of value.toLowerCase().split(',')) { + const trimmed = token.trim(); + if (!isValidHTTPToken(trimmed)) { + throw new InvalidArgumentError('invalid connection header'); + } + if (trimmed === 'close') { + request2.reset = true; + } + } + } else if (headerName === 'expect') { + throw new NotSupportedError('expect header not supported'); + } else { + request2.headers.push(key, val); + } + } + module2.exports = Request; } }); -// node_modules/@actions/http-client/lib/auth.js -var require_auth = __commonJS({ - 'node_modules/@actions/http-client/lib/auth.js'(exports2) { +// node_modules/undici/lib/dispatcher/dispatcher.js +var require_dispatcher = __commonJS({ + 'node_modules/undici/lib/dispatcher/dispatcher.js'(exports2, module2) { 'use strict'; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } + 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; } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); - } + if (typeof interceptor !== 'function') { + throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`); } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + dispatch = interceptor(dispatch); + if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) { + throw new TypeError('invalid interceptor'); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.PersonalAccessTokenCredentialHandler = - exports2.BearerCredentialHandler = - exports2.BasicCredentialHandler = - void 0; - var BasicCredentialHandler = class { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); } - options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; - } - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); + return new Proxy(this, { + get: (target, key) => (key === 'dispatch' ? dispatch : target[key]) }); } }; - exports2.BasicCredentialHandler = BasicCredentialHandler; - var BearerCredentialHandler = class { - constructor(token) { - this.token = token; - } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Bearer ${this.token}`; - } - canHandleAuthentication() { - return false; + module2.exports = Dispatcher; + } +}); + +// node_modules/undici/lib/dispatcher/dispatcher-base.js +var require_dispatcher_base = __commonJS({ + 'node_modules/undici/lib/dispatcher/dispatcher-base.js'(exports2, module2) { + 'use strict'; + var Dispatcher = require_dispatcher(); + var { ClientDestroyedError, ClientClosedError, InvalidArgumentError } = require_errors(); + var { kDestroy, kClose, kClosed, kDestroyed, kDispatch } = require_symbols(); + var kOnDestroyed = /* @__PURE__ */ Symbol('onDestroyed'); + var kOnClosed = /* @__PURE__ */ Symbol('onClosed'); + var kWebSocketOptions = /* @__PURE__ */ Symbol('webSocketOptions'); + var DispatcherBase = class extends Dispatcher { + /** @type {boolean} */ + [kDestroyed] = false; + /** @type {Array|null} */ + [kOnClosed] = null; + /** + * @param {import('../../types/dispatcher').DispatcherOptions} [opts] + */ + constructor(opts) { + super(); + this[kWebSocketOptions] = opts?.webSocket ?? {}; + } + /** + * @returns {import('../../types/dispatcher').WebSocketOptions} + */ + get webSocketOptions() { + return { + maxFragments: this[kWebSocketOptions].maxFragments ?? 131072, + maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024 + // 128 MB default + }; } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); + /** @returns {boolean} */ + get destroyed() { + return this[kDestroyed]; } - }; - exports2.BearerCredentialHandler = BearerCredentialHandler; - var PersonalAccessTokenCredentialHandler = class { - constructor(token) { - this.token = token; + /** @returns {boolean} */ + get closed() { + return this[kClosed]; } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); + close(callback) { + if (callback === void 0) { + return new Promise((resolve2, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve2(data); + }); + }); } - options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; - } - canHandleAuthentication() { - return false; + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (this[kDestroyed]) { + const err = new ClientDestroyedError(); + queueMicrotask(() => callback(err, null)); + return; + } + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback); + } else { + queueMicrotask(() => callback(null, null)); + } + return; + } + this[kClosed] = true; + this[kOnClosed] ??= []; + 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((resolve2, reject) => { + this.destroy(err, (err2, data) => { + return err2 ? reject(err2) : resolve2(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].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)); } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); + 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 (opts.dispatcher) { + throw new InvalidArgumentError( + 'opts.dispatcher is not supported by instance methods. Pass opts.dispatcher to the top-level undici functions or call the dispatcher instance method directly.' + ); + } + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError(); + } + if (this[kClosed]) { + throw new ClientClosedError(); + } + return this[kDispatch](opts, handler2); + } catch (err) { + if (typeof handler2.onResponseError !== 'function') { + throw err; + } + handler2.onResponseError(null, err); + return false; + } } }; - exports2.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; + module2.exports = DispatcherBase; } }); -// node_modules/@actions/core/lib/oidc-utils.js -var require_oidc_utils = __commonJS({ - 'node_modules/@actions/core/lib/oidc-utils.js'(exports2) { +// node_modules/undici/lib/core/connect.js +var require_connect = __commonJS({ + 'node_modules/undici/lib/core/connect.js'(exports2, module2) { 'use strict'; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, 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); - } + var net = require('node:net'); + var assert = require('node:assert'); + var util = require_util(); + var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); + var tls; + var SessionCache = class WeakSessionCache { + constructor(maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions; + this._sessionCache = /* @__PURE__ */ new Map(); + this._sessionRegistry = new FinalizationRegistry(key => { + if (this._sessionCache.size < this._maxCachedSessions) { + return; } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + const ref = this._sessionCache.get(key); + if (ref !== void 0 && ref.deref() === void 0) { + this._sessionCache.delete(key); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); }); - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.OidcClient = void 0; - var http_client_1 = require_lib(); - var auth_1 = require_auth(); - var core_1 = require_core(); - var OidcClient = class { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry - }; - return new http_client_1.HttpClient( - 'actions/oidc-client', - [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], - requestOptions - ); } - static getRequestToken() { - const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; - if (!token) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); - } - return token; - } - static getIDTokenUrl() { - const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; - if (!runtimeUrl) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); - } - return runtimeUrl; - } - static getCall(id_token_url) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const httpclient = OidcClient.createHttpClient(); - const res = yield httpclient.getJson(id_token_url).catch(error => { - throw new Error(`Failed to get ID Token. - - Error Code : ${error.statusCode} - - Error Message: ${error.result.message}`); - }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error('Response json body do not have ID Token field'); - } - return id_token; - }); + get(sessionKey) { + const ref = this._sessionCache.get(sessionKey); + return ref ? ref.deref() : null; } - static getIDToken(audience) { - return __awaiter(this, void 0, void 0, function* () { - try { - let id_token_url = OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; + set(sessionKey, session) { + if (this._maxCachedSessions === 0) { + return; + } + if (this._sessionCache.has(sessionKey)) { + this._sessionCache.delete(sessionKey); + } else if (this._sessionCache.size >= this._maxCachedSessions) { + for (const [key, ref] of this._sessionCache) { + if (ref.deref() === void 0) { + this._sessionCache.delete(key); + return; } - core_1.debug(`ID token url is ${id_token_url}`); - const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); - return id_token; - } catch (error) { - throw new Error(`Error message: ${error.message}`); } - }); + const oldest = this._sessionCache.keys().next(); + if (!oldest.done) { + this._sessionCache.delete(oldest.value); + } + } + this._sessionCache.set(sessionKey, new WeakRef(session)); + this._sessionRegistry.register(session, sessionKey); } }; - exports2.OidcClient = OidcClient; - } -}); - -// node_modules/@actions/core/lib/summary.js -var require_summary = __commonJS({ - 'node_modules/@actions/core/lib/summary.js'(exports2) { - 'use strict'; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); + function buildConnector({ + allowH2, + preferH2, + useH2c, + 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 : true; + 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; + assert(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, + ALPNProtocols: allowH2 ? (preferH2 ? ['h2', 'http/1.1'] : ['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 { + assert(!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 (useH2c === true) { + socket.alpnProtocol = 'h2'; + } } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay; + socket.setKeepAlive(true, keepAliveInitialDelay); + } + const clearConnectTimeout = util.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); } - } - function rejected(value) { - try { - step(generator['throw'](value)); - } catch (e) { - reject(e); + }) + .on('error', function (err) { + queueMicrotask(clearConnectTimeout); + if (callback) { + const cb = callback; + callback = null; + cb(maybeNormalizeConnectError(err, this, { timeout, hostname, port })); } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); + }); + return socket; }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.summary = exports2.markdownSummary = exports2.SUMMARY_DOCS_URL = exports2.SUMMARY_ENV_VAR = void 0; - var os_1 = require('os'); - var fs_1 = require('fs'); - var { access, appendFile, writeFile } = fs_1.promises; - exports2.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; - exports2.SUMMARY_DOCS_URL = - 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; - var Summary = class { - constructor() { - this._buffer = ''; - } - filePath() { - return __awaiter(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; - } - const pathFromEnv = process.env[exports2.SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error( - `Unable to find environment variable for $${exports2.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.` - ); - } - try { - yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); - } catch (_a) { - throw new Error( - `Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.` - ); - } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - wrap(tag, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs) - .map(([key, value]) => ` ${key}="${value}"`) - .join(''); - if (!content) { - return `<${tag}${htmlAttrs}>`; - } - return `<${tag}${htmlAttrs}>${content}`; - } - 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(); - }); - } - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - stringify() { - return this._buffer; - } - isEmptyBuffer() { - return this._buffer.length === 0; - } - emptyBuffer() { - this._buffer = ''; - return this; + } + function maybeNormalizeConnectError(err, socket, opts) { + if ( + err instanceof AggregateError && + (err.code === 'ETIMEDOUT' || err.errors.some(e => e != null && e.code === 'ETIMEDOUT')) + ) { + 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)`; + const wrapped = new ConnectTimeoutError(message); + wrapped.cause = err; + return wrapped; } - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - addEOL() { - return this.addRaw(os_1.EOL); - } - addCodeBlock(code, lang) { - const attrs = Object.assign({}, lang && { lang }); - const element = this.wrap('pre', this.wrap('code', code), attrs); - return this.addRaw(element).addEOL(); - } - 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(); - } - 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(); - } - addDetails(label, content) { - const element = this.wrap('details', this.wrap('summary', label) + content); - return this.addRaw(element).addEOL(); - } - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); - const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); - } - 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(); - } - addSeparator() { - const element = this.wrap('hr', null); - return this.addRaw(element).addEOL(); - } - addBreak() { - const element = this.wrap('br', null); - return this.addRaw(element).addEOL(); - } - addQuote(text, cite) { - const attrs = Object.assign({}, cite && { cite }); - const element = this.wrap('blockquote', text, attrs); - return this.addRaw(element).addEOL(); - } - addLink(text, href) { - const element = this.wrap('a', text, { href }); - return this.addRaw(element).addEOL(); - } - }; - var _summary = new Summary(); - exports2.markdownSummary = _summary; - exports2.summary = _summary; + return err; + } + module2.exports = buildConnector; } }); -// node_modules/@actions/core/lib/path-utils.js -var require_path_utils = __commonJS({ - 'node_modules/@actions/core/lib/path-utils.js'(exports2) { +// node_modules/undici/lib/llhttp/utils.js +var require_utils = __commonJS({ + 'node_modules/undici/lib/llhttp/utils.js'(exports2) { 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.toPlatformPath = exports2.toWin32Path = exports2.toPosixPath = void 0; - var path2 = __importStar(require('path')); - function toPosixPath(pth) { - return pth.replace(/[\\]/g, '/'); - } - exports2.toPosixPath = toPosixPath; - function toWin32Path(pth) { - return pth.replace(/[/]/g, '\\'); - } - exports2.toWin32Path = toWin32Path; - function toPlatformPath(pth) { - return pth.replace(/[/\\]/g, path2.sep); + exports2.enumToMap = enumToMap; + function enumToMap(obj, filter = [], exceptions = []) { + const emptyFilter = (filter?.length ?? 0) === 0; + const emptyExceptions = (exceptions?.length ?? 0) === 0; + return Object.fromEntries( + Object.entries(obj).filter(([, value]) => { + return ( + typeof value === 'number' && + (emptyFilter || filter.includes(value)) && + (emptyExceptions || !exceptions.includes(value)) + ); + }) + ); } - exports2.toPlatformPath = toPlatformPath; } }); -// node_modules/@actions/core/lib/core.js -var require_core = __commonJS({ - 'node_modules/@actions/core/lib/core.js'(exports2) { +// node_modules/undici/lib/llhttp/constants.js +var require_constants2 = __commonJS({ + 'node_modules/undici/lib/llhttp/constants.js'(exports2) { 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (exports2 && exports2.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, 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 ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getIDToken = - exports2.getState = - exports2.saveState = - exports2.group = - exports2.endGroup = - exports2.startGroup = - exports2.info = - exports2.notice = - exports2.warning = - exports2.error = - exports2.debug = - exports2.isDebug = - exports2.setFailed = - exports2.setCommandEcho = - exports2.setOutput = - exports2.getBooleanInput = - exports2.getMultilineInput = - exports2.getInput = - exports2.addPath = - exports2.setSecret = - exports2.exportVariable = - exports2.ExitCode = + exports2.SPECIAL_HEADERS = + exports2.MINOR = + exports2.MAJOR = + exports2.HTAB_SP_VCHAR_OBS_TEXT = + exports2.QUOTED_STRING = + exports2.CONNECTION_TOKEN_CHARS = + exports2.HEADER_CHARS = + exports2.TOKEN = + exports2.HEX = + exports2.URL_CHAR = + exports2.USERINFO_CHARS = + exports2.MARK = + exports2.ALPHANUM = + exports2.NUM = + exports2.HEX_MAP = + exports2.NUM_MAP = + exports2.ALPHA = + exports2.STATUSES_HTTP = + exports2.H_METHOD_MAP = + exports2.METHOD_MAP = + exports2.METHODS_RTSP = + exports2.METHODS_ICE = + exports2.METHODS_HTTP = + exports2.HEADER_STATE = + exports2.FINISH = + exports2.STATUSES = + exports2.METHODS = + exports2.LENIENT_FLAGS = + exports2.FLAGS = + exports2.TYPE = + exports2.ERROR = void 0; - var command_1 = require_command(); - var file_command_1 = require_file_command(); var utils_1 = require_utils(); - var os = __importStar(require('os')); - var path2 = __importStar(require('path')); - var oidc_utils_1 = require_oidc_utils(); - var ExitCode; - (function (ExitCode2) { - ExitCode2[(ExitCode2['Success'] = 0)] = 'Success'; - ExitCode2[(ExitCode2['Failure'] = 1)] = 'Failure'; - })((ExitCode = exports2.ExitCode || (exports2.ExitCode = {}))); - function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); - } - command_1.issueCommand('set-env', { name }, convertedVal); - } - exports2.exportVariable = exportVariable; - function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); - } - exports2.setSecret = setSecret; - function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - file_command_1.issueFileCommand('PATH', inputPath); - } else { - command_1.issueCommand('add-path', {}, inputPath); - } - process.env['PATH'] = `${inputPath}${path2.delimiter}${process.env['PATH']}`; - } - exports2.addPath = addPath; - 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(); - } - exports2.getInput = getInput; - function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split('\n') - .filter(x => x !== ''); - if (options && options.trimWhitespace === false) { - return inputs; - } - return inputs.map(input => input.trim()); - } - exports2.getMultilineInput = getMultilineInput; - 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\``); - } - exports2.getBooleanInput = getBooleanInput; - function setOutput(name, value) { - const filePath = process.env['GITHUB_OUTPUT'] || ''; - if (filePath) { - return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); - } - process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); - } - exports2.setOutput = setOutput; - function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); - } - exports2.setCommandEcho = setCommandEcho; - function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); - } - exports2.setFailed = setFailed; - function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; - } - exports2.isDebug = isDebug; - function debug(message) { - command_1.issueCommand('debug', {}, message); - } - exports2.debug = debug; - function error(message, properties = {}) { - command_1.issueCommand( - 'error', - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message - ); - } - exports2.error = error; - function warning(message, properties = {}) { - command_1.issueCommand( - 'warning', - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message - ); - } - exports2.warning = warning; - function notice(message, properties = {}) { - command_1.issueCommand( - 'notice', - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message - ); - } - exports2.notice = notice; - function info(message) { - process.stdout.write(message + os.EOL); - } - exports2.info = info; - function startGroup(name) { - command_1.issue('group', name); - } - exports2.startGroup = startGroup; - function endGroup() { - command_1.issue('endgroup'); + exports2.ERROR = { + OK: 0, + INTERNAL: 1, + STRICT: 2, + CR_EXPECTED: 25, + LF_EXPECTED: 3, + UNEXPECTED_CONTENT_LENGTH: 4, + UNEXPECTED_SPACE: 30, + CLOSED_CONNECTION: 5, + INVALID_METHOD: 6, + INVALID_URL: 7, + INVALID_CONSTANT: 8, + INVALID_VERSION: 9, + INVALID_HEADER_TOKEN: 10, + INVALID_CONTENT_LENGTH: 11, + INVALID_CHUNK_SIZE: 12, + INVALID_STATUS: 13, + INVALID_EOF_STATE: 14, + INVALID_TRANSFER_ENCODING: 15, + CB_MESSAGE_BEGIN: 16, + CB_HEADERS_COMPLETE: 17, + CB_MESSAGE_COMPLETE: 18, + CB_CHUNK_HEADER: 19, + CB_CHUNK_COMPLETE: 20, + PAUSED: 21, + PAUSED_UPGRADE: 22, + PAUSED_H2_UPGRADE: 23, + USER: 24, + CB_URL_COMPLETE: 26, + CB_STATUS_COMPLETE: 27, + CB_METHOD_COMPLETE: 32, + CB_VERSION_COMPLETE: 33, + CB_HEADER_FIELD_COMPLETE: 28, + CB_HEADER_VALUE_COMPLETE: 29, + CB_CHUNK_EXTENSION_NAME_COMPLETE: 34, + CB_CHUNK_EXTENSION_VALUE_COMPLETE: 35, + CB_RESET: 31, + CB_PROTOCOL_COMPLETE: 38 + }; + exports2.TYPE = { + BOTH: 0, + // default + REQUEST: 1, + RESPONSE: 2 + }; + exports2.FLAGS = { + CONNECTION_KEEP_ALIVE: 1 << 0, + CONNECTION_CLOSE: 1 << 1, + CONNECTION_UPGRADE: 1 << 2, + CHUNKED: 1 << 3, + UPGRADE: 1 << 4, + CONTENT_LENGTH: 1 << 5, + SKIPBODY: 1 << 6, + TRAILING: 1 << 7, + // 1 << 8 is unused + TRANSFER_ENCODING: 1 << 9 + }; + exports2.LENIENT_FLAGS = { + HEADERS: 1 << 0, + CHUNKED_LENGTH: 1 << 1, + KEEP_ALIVE: 1 << 2, + TRANSFER_ENCODING: 1 << 3, + VERSION: 1 << 4, + DATA_AFTER_CLOSE: 1 << 5, + OPTIONAL_LF_AFTER_CR: 1 << 6, + OPTIONAL_CRLF_AFTER_CHUNK: 1 << 7, + OPTIONAL_CR_BEFORE_LF: 1 << 8, + SPACES_AFTER_CHUNK_SIZE: 1 << 9 + }; + exports2.METHODS = { + DELETE: 0, + GET: 1, + HEAD: 2, + POST: 3, + PUT: 4, + /* pathological */ + CONNECT: 5, + OPTIONS: 6, + TRACE: 7, + /* WebDAV */ + COPY: 8, + LOCK: 9, + MKCOL: 10, + MOVE: 11, + PROPFIND: 12, + PROPPATCH: 13, + SEARCH: 14, + UNLOCK: 15, + BIND: 16, + REBIND: 17, + UNBIND: 18, + ACL: 19, + /* subversion */ + REPORT: 20, + MKACTIVITY: 21, + CHECKOUT: 22, + MERGE: 23, + /* upnp */ + 'M-SEARCH': 24, + NOTIFY: 25, + SUBSCRIBE: 26, + UNSUBSCRIBE: 27, + /* RFC-5789 */ + PATCH: 28, + PURGE: 29, + /* CalDAV */ + MKCALENDAR: 30, + /* RFC-2068, section 19.6.1.2 */ + LINK: 31, + UNLINK: 32, + /* icecast */ + SOURCE: 33, + /* RFC-7540, section 11.6 */ + PRI: 34, + /* RFC-2326 RTSP */ + DESCRIBE: 35, + ANNOUNCE: 36, + SETUP: 37, + PLAY: 38, + PAUSE: 39, + TEARDOWN: 40, + GET_PARAMETER: 41, + SET_PARAMETER: 42, + REDIRECT: 43, + RECORD: 44, + /* RAOP */ + FLUSH: 45, + /* DRAFT https://www.ietf.org/archive/id/draft-ietf-httpbis-safe-method-w-body-02.html */ + QUERY: 46 + }; + exports2.STATUSES = { + CONTINUE: 100, + SWITCHING_PROTOCOLS: 101, + PROCESSING: 102, + EARLY_HINTS: 103, + RESPONSE_IS_STALE: 110, + // Unofficial + REVALIDATION_FAILED: 111, + // Unofficial + DISCONNECTED_OPERATION: 112, + // Unofficial + HEURISTIC_EXPIRATION: 113, + // Unofficial + MISCELLANEOUS_WARNING: 199, + // Unofficial + OK: 200, + CREATED: 201, + ACCEPTED: 202, + NON_AUTHORITATIVE_INFORMATION: 203, + NO_CONTENT: 204, + RESET_CONTENT: 205, + PARTIAL_CONTENT: 206, + MULTI_STATUS: 207, + ALREADY_REPORTED: 208, + TRANSFORMATION_APPLIED: 214, + // Unofficial + IM_USED: 226, + MISCELLANEOUS_PERSISTENT_WARNING: 299, + // Unofficial + MULTIPLE_CHOICES: 300, + MOVED_PERMANENTLY: 301, + FOUND: 302, + SEE_OTHER: 303, + NOT_MODIFIED: 304, + USE_PROXY: 305, + SWITCH_PROXY: 306, + // No longer used + TEMPORARY_REDIRECT: 307, + PERMANENT_REDIRECT: 308, + BAD_REQUEST: 400, + UNAUTHORIZED: 401, + PAYMENT_REQUIRED: 402, + FORBIDDEN: 403, + NOT_FOUND: 404, + METHOD_NOT_ALLOWED: 405, + NOT_ACCEPTABLE: 406, + PROXY_AUTHENTICATION_REQUIRED: 407, + REQUEST_TIMEOUT: 408, + CONFLICT: 409, + GONE: 410, + LENGTH_REQUIRED: 411, + PRECONDITION_FAILED: 412, + PAYLOAD_TOO_LARGE: 413, + URI_TOO_LONG: 414, + UNSUPPORTED_MEDIA_TYPE: 415, + RANGE_NOT_SATISFIABLE: 416, + EXPECTATION_FAILED: 417, + IM_A_TEAPOT: 418, + PAGE_EXPIRED: 419, + // Unofficial + ENHANCE_YOUR_CALM: 420, + // Unofficial + MISDIRECTED_REQUEST: 421, + UNPROCESSABLE_ENTITY: 422, + LOCKED: 423, + FAILED_DEPENDENCY: 424, + TOO_EARLY: 425, + UPGRADE_REQUIRED: 426, + PRECONDITION_REQUIRED: 428, + TOO_MANY_REQUESTS: 429, + REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL: 430, + // Unofficial + REQUEST_HEADER_FIELDS_TOO_LARGE: 431, + LOGIN_TIMEOUT: 440, + // Unofficial + NO_RESPONSE: 444, + // Unofficial + RETRY_WITH: 449, + // Unofficial + BLOCKED_BY_PARENTAL_CONTROL: 450, + // Unofficial + UNAVAILABLE_FOR_LEGAL_REASONS: 451, + CLIENT_CLOSED_LOAD_BALANCED_REQUEST: 460, + // Unofficial + INVALID_X_FORWARDED_FOR: 463, + // Unofficial + REQUEST_HEADER_TOO_LARGE: 494, + // Unofficial + SSL_CERTIFICATE_ERROR: 495, + // Unofficial + SSL_CERTIFICATE_REQUIRED: 496, + // Unofficial + HTTP_REQUEST_SENT_TO_HTTPS_PORT: 497, + // Unofficial + INVALID_TOKEN: 498, + // Unofficial + CLIENT_CLOSED_REQUEST: 499, + // Unofficial + INTERNAL_SERVER_ERROR: 500, + NOT_IMPLEMENTED: 501, + BAD_GATEWAY: 502, + SERVICE_UNAVAILABLE: 503, + GATEWAY_TIMEOUT: 504, + HTTP_VERSION_NOT_SUPPORTED: 505, + VARIANT_ALSO_NEGOTIATES: 506, + INSUFFICIENT_STORAGE: 507, + LOOP_DETECTED: 508, + BANDWIDTH_LIMIT_EXCEEDED: 509, + NOT_EXTENDED: 510, + NETWORK_AUTHENTICATION_REQUIRED: 511, + WEB_SERVER_UNKNOWN_ERROR: 520, + // Unofficial + WEB_SERVER_IS_DOWN: 521, + // Unofficial + CONNECTION_TIMEOUT: 522, + // Unofficial + ORIGIN_IS_UNREACHABLE: 523, + // Unofficial + TIMEOUT_OCCURED: 524, + // Unofficial + SSL_HANDSHAKE_FAILED: 525, + // Unofficial + INVALID_SSL_CERTIFICATE: 526, + // Unofficial + RAILGUN_ERROR: 527, + // Unofficial + SITE_IS_OVERLOADED: 529, + // Unofficial + SITE_IS_FROZEN: 530, + // Unofficial + IDENTITY_PROVIDER_AUTHENTICATION_ERROR: 561, + // Unofficial + NETWORK_READ_TIMEOUT: 598, + // Unofficial + NETWORK_CONNECT_TIMEOUT: 599 + // Unofficial + }; + exports2.FINISH = { + SAFE: 0, + SAFE_WITH_CB: 1, + UNSAFE: 2 + }; + exports2.HEADER_STATE = { + GENERAL: 0, + CONNECTION: 1, + CONTENT_LENGTH: 2, + TRANSFER_ENCODING: 3, + UPGRADE: 4, + CONNECTION_KEEP_ALIVE: 5, + CONNECTION_CLOSE: 6, + CONNECTION_UPGRADE: 7, + TRANSFER_ENCODING_CHUNKED: 8 + }; + exports2.METHODS_HTTP = [ + exports2.METHODS.DELETE, + exports2.METHODS.GET, + exports2.METHODS.HEAD, + exports2.METHODS.POST, + exports2.METHODS.PUT, + exports2.METHODS.CONNECT, + exports2.METHODS.OPTIONS, + exports2.METHODS.TRACE, + exports2.METHODS.COPY, + exports2.METHODS.LOCK, + exports2.METHODS.MKCOL, + exports2.METHODS.MOVE, + exports2.METHODS.PROPFIND, + exports2.METHODS.PROPPATCH, + exports2.METHODS.SEARCH, + exports2.METHODS.UNLOCK, + exports2.METHODS.BIND, + exports2.METHODS.REBIND, + exports2.METHODS.UNBIND, + exports2.METHODS.ACL, + exports2.METHODS.REPORT, + exports2.METHODS.MKACTIVITY, + exports2.METHODS.CHECKOUT, + exports2.METHODS.MERGE, + exports2.METHODS['M-SEARCH'], + exports2.METHODS.NOTIFY, + exports2.METHODS.SUBSCRIBE, + exports2.METHODS.UNSUBSCRIBE, + exports2.METHODS.PATCH, + exports2.METHODS.PURGE, + exports2.METHODS.MKCALENDAR, + exports2.METHODS.LINK, + exports2.METHODS.UNLINK, + exports2.METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + exports2.METHODS.SOURCE, + exports2.METHODS.QUERY + ]; + exports2.METHODS_ICE = [exports2.METHODS.SOURCE]; + exports2.METHODS_RTSP = [ + exports2.METHODS.OPTIONS, + exports2.METHODS.DESCRIBE, + exports2.METHODS.ANNOUNCE, + exports2.METHODS.SETUP, + exports2.METHODS.PLAY, + exports2.METHODS.PAUSE, + exports2.METHODS.TEARDOWN, + exports2.METHODS.GET_PARAMETER, + exports2.METHODS.SET_PARAMETER, + exports2.METHODS.REDIRECT, + exports2.METHODS.RECORD, + exports2.METHODS.FLUSH, + // For AirPlay + exports2.METHODS.GET, + exports2.METHODS.POST + ]; + exports2.METHOD_MAP = (0, utils_1.enumToMap)(exports2.METHODS); + exports2.H_METHOD_MAP = Object.fromEntries(Object.entries(exports2.METHODS).filter(([k]) => k.startsWith('H'))); + exports2.STATUSES_HTTP = [ + exports2.STATUSES.CONTINUE, + exports2.STATUSES.SWITCHING_PROTOCOLS, + exports2.STATUSES.PROCESSING, + exports2.STATUSES.EARLY_HINTS, + exports2.STATUSES.RESPONSE_IS_STALE, + exports2.STATUSES.REVALIDATION_FAILED, + exports2.STATUSES.DISCONNECTED_OPERATION, + exports2.STATUSES.HEURISTIC_EXPIRATION, + exports2.STATUSES.MISCELLANEOUS_WARNING, + exports2.STATUSES.OK, + exports2.STATUSES.CREATED, + exports2.STATUSES.ACCEPTED, + exports2.STATUSES.NON_AUTHORITATIVE_INFORMATION, + exports2.STATUSES.NO_CONTENT, + exports2.STATUSES.RESET_CONTENT, + exports2.STATUSES.PARTIAL_CONTENT, + exports2.STATUSES.MULTI_STATUS, + exports2.STATUSES.ALREADY_REPORTED, + exports2.STATUSES.TRANSFORMATION_APPLIED, + exports2.STATUSES.IM_USED, + exports2.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING, + exports2.STATUSES.MULTIPLE_CHOICES, + exports2.STATUSES.MOVED_PERMANENTLY, + exports2.STATUSES.FOUND, + exports2.STATUSES.SEE_OTHER, + exports2.STATUSES.NOT_MODIFIED, + exports2.STATUSES.USE_PROXY, + exports2.STATUSES.SWITCH_PROXY, + exports2.STATUSES.TEMPORARY_REDIRECT, + exports2.STATUSES.PERMANENT_REDIRECT, + exports2.STATUSES.BAD_REQUEST, + exports2.STATUSES.UNAUTHORIZED, + exports2.STATUSES.PAYMENT_REQUIRED, + exports2.STATUSES.FORBIDDEN, + exports2.STATUSES.NOT_FOUND, + exports2.STATUSES.METHOD_NOT_ALLOWED, + exports2.STATUSES.NOT_ACCEPTABLE, + exports2.STATUSES.PROXY_AUTHENTICATION_REQUIRED, + exports2.STATUSES.REQUEST_TIMEOUT, + exports2.STATUSES.CONFLICT, + exports2.STATUSES.GONE, + exports2.STATUSES.LENGTH_REQUIRED, + exports2.STATUSES.PRECONDITION_FAILED, + exports2.STATUSES.PAYLOAD_TOO_LARGE, + exports2.STATUSES.URI_TOO_LONG, + exports2.STATUSES.UNSUPPORTED_MEDIA_TYPE, + exports2.STATUSES.RANGE_NOT_SATISFIABLE, + exports2.STATUSES.EXPECTATION_FAILED, + exports2.STATUSES.IM_A_TEAPOT, + exports2.STATUSES.PAGE_EXPIRED, + exports2.STATUSES.ENHANCE_YOUR_CALM, + exports2.STATUSES.MISDIRECTED_REQUEST, + exports2.STATUSES.UNPROCESSABLE_ENTITY, + exports2.STATUSES.LOCKED, + exports2.STATUSES.FAILED_DEPENDENCY, + exports2.STATUSES.TOO_EARLY, + exports2.STATUSES.UPGRADE_REQUIRED, + exports2.STATUSES.PRECONDITION_REQUIRED, + exports2.STATUSES.TOO_MANY_REQUESTS, + exports2.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL, + exports2.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE, + exports2.STATUSES.LOGIN_TIMEOUT, + exports2.STATUSES.NO_RESPONSE, + exports2.STATUSES.RETRY_WITH, + exports2.STATUSES.BLOCKED_BY_PARENTAL_CONTROL, + exports2.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS, + exports2.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST, + exports2.STATUSES.INVALID_X_FORWARDED_FOR, + exports2.STATUSES.REQUEST_HEADER_TOO_LARGE, + exports2.STATUSES.SSL_CERTIFICATE_ERROR, + exports2.STATUSES.SSL_CERTIFICATE_REQUIRED, + exports2.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT, + exports2.STATUSES.INVALID_TOKEN, + exports2.STATUSES.CLIENT_CLOSED_REQUEST, + exports2.STATUSES.INTERNAL_SERVER_ERROR, + exports2.STATUSES.NOT_IMPLEMENTED, + exports2.STATUSES.BAD_GATEWAY, + exports2.STATUSES.SERVICE_UNAVAILABLE, + exports2.STATUSES.GATEWAY_TIMEOUT, + exports2.STATUSES.HTTP_VERSION_NOT_SUPPORTED, + exports2.STATUSES.VARIANT_ALSO_NEGOTIATES, + exports2.STATUSES.INSUFFICIENT_STORAGE, + exports2.STATUSES.LOOP_DETECTED, + exports2.STATUSES.BANDWIDTH_LIMIT_EXCEEDED, + exports2.STATUSES.NOT_EXTENDED, + exports2.STATUSES.NETWORK_AUTHENTICATION_REQUIRED, + exports2.STATUSES.WEB_SERVER_UNKNOWN_ERROR, + exports2.STATUSES.WEB_SERVER_IS_DOWN, + exports2.STATUSES.CONNECTION_TIMEOUT, + exports2.STATUSES.ORIGIN_IS_UNREACHABLE, + exports2.STATUSES.TIMEOUT_OCCURED, + exports2.STATUSES.SSL_HANDSHAKE_FAILED, + exports2.STATUSES.INVALID_SSL_CERTIFICATE, + exports2.STATUSES.RAILGUN_ERROR, + exports2.STATUSES.SITE_IS_OVERLOADED, + exports2.STATUSES.SITE_IS_FROZEN, + exports2.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR, + exports2.STATUSES.NETWORK_READ_TIMEOUT, + exports2.STATUSES.NETWORK_CONNECT_TIMEOUT + ]; + exports2.ALPHA = []; + for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + exports2.ALPHA.push(String.fromCharCode(i)); + exports2.ALPHA.push(String.fromCharCode(i + 32)); } - exports2.endGroup = endGroup; - function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } finally { - endGroup(); - } - return result; - }); + exports2.NUM_MAP = { + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9 + }; + exports2.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 + }; + exports2.NUM = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM); + exports2.MARK = ['-', '_', '.', '!', '~', '*', "'", '(', ')']; + exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(['%', ';', ':', '&', '=', '+', '$', ',']); + exports2.URL_CHAR = [ + '!', + '"', + '$', + '%', + '&', + "'", + '(', + ')', + '*', + '+', + ',', + '-', + '.', + '/', + ':', + ';', + '<', + '=', + '>', + '@', + '[', + '\\', + ']', + '^', + '_', + '`', + '{', + '|', + '}', + '~' + ].concat(exports2.ALPHANUM); + exports2.HEX = exports2.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); + exports2.TOKEN = ['!', '#', '$', '%', '&', "'", '*', '+', '-', '.', '^', '_', '`', '|', '~'].concat(exports2.ALPHANUM); + exports2.HEADER_CHARS = [' ']; + for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports2.HEADER_CHARS.push(i); + } } - exports2.group = group; - function saveState(name, value) { - const filePath = process.env['GITHUB_STATE'] || ''; - if (filePath) { - return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter(c => c !== 44); + exports2.QUOTED_STRING = [' ', ' ']; + for (let i = 33; i <= 255; i++) { + if (i !== 34 && i !== 92) { + exports2.QUOTED_STRING.push(i); } - command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); } - exports2.saveState = saveState; - function getState(name) { - return process.env[`STATE_${name}`] || ''; + exports2.HTAB_SP_VCHAR_OBS_TEXT = [' ', ' ']; + for (let i = 33; i <= 126; i++) { + exports2.HTAB_SP_VCHAR_OBS_TEXT.push(i); } - exports2.getState = getState; - function getIDToken(aud) { - return __awaiter(this, void 0, void 0, function* () { - return yield oidc_utils_1.OidcClient.getIDToken(aud); - }); + for (let i = 128; i <= 255; i++) { + exports2.HTAB_SP_VCHAR_OBS_TEXT.push(i); } - exports2.getIDToken = getIDToken; - var summary_1 = require_summary(); - Object.defineProperty(exports2, 'summary', { - enumerable: true, - get: function () { - return summary_1.summary; - } - }); - var summary_2 = require_summary(); - Object.defineProperty(exports2, 'markdownSummary', { - enumerable: true, - get: function () { - return summary_2.markdownSummary; - } - }); - var path_utils_1 = require_path_utils(); - Object.defineProperty(exports2, 'toPosixPath', { - enumerable: true, - get: function () { - return path_utils_1.toPosixPath; - } - }); - Object.defineProperty(exports2, 'toWin32Path', { - enumerable: true, - get: function () { - return path_utils_1.toWin32Path; - } - }); - Object.defineProperty(exports2, 'toPlatformPath', { - enumerable: true, - get: function () { - return path_utils_1.toPlatformPath; + exports2.MAJOR = exports2.NUM_MAP; + exports2.MINOR = exports2.MAJOR; + exports2.SPECIAL_HEADERS = { + connection: exports2.HEADER_STATE.CONNECTION, + 'content-length': exports2.HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': exports2.HEADER_STATE.CONNECTION, + 'transfer-encoding': exports2.HEADER_STATE.TRANSFER_ENCODING, + upgrade: exports2.HEADER_STATE.UPGRADE + }; + exports2.default = { + ERROR: exports2.ERROR, + TYPE: exports2.TYPE, + FLAGS: exports2.FLAGS, + LENIENT_FLAGS: exports2.LENIENT_FLAGS, + METHODS: exports2.METHODS, + STATUSES: exports2.STATUSES, + FINISH: exports2.FINISH, + HEADER_STATE: exports2.HEADER_STATE, + ALPHA: exports2.ALPHA, + NUM_MAP: exports2.NUM_MAP, + HEX_MAP: exports2.HEX_MAP, + NUM: exports2.NUM, + ALPHANUM: exports2.ALPHANUM, + MARK: exports2.MARK, + USERINFO_CHARS: exports2.USERINFO_CHARS, + URL_CHAR: exports2.URL_CHAR, + HEX: exports2.HEX, + TOKEN: exports2.TOKEN, + HEADER_CHARS: exports2.HEADER_CHARS, + CONNECTION_TOKEN_CHARS: exports2.CONNECTION_TOKEN_CHARS, + QUOTED_STRING: exports2.QUOTED_STRING, + HTAB_SP_VCHAR_OBS_TEXT: exports2.HTAB_SP_VCHAR_OBS_TEXT, + MAJOR: exports2.MAJOR, + MINOR: exports2.MINOR, + SPECIAL_HEADERS: exports2.SPECIAL_HEADERS, + METHODS_HTTP: exports2.METHODS_HTTP, + METHODS_ICE: exports2.METHODS_ICE, + METHODS_RTSP: exports2.METHODS_RTSP, + METHOD_MAP: exports2.METHOD_MAP, + H_METHOD_MAP: exports2.H_METHOD_MAP, + STATUSES_HTTP: exports2.STATUSES_HTTP + }; + } +}); + +// node_modules/undici/lib/llhttp/llhttp-wasm.js +var require_llhttp_wasm = __commonJS({ + 'node_modules/undici/lib/llhttp/llhttp-wasm.js'(exports2, module2) { + 'use strict'; + var { Buffer: Buffer2 } = require('node:buffer'); + var wasmBase64 = + 'AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAg7jAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEjJCUnKCmeA5sDmgORA4oDgwOAA/0C+wL4AvIC8QLvAu0C6ALnAuYC5QLkAtwC2wLaAtkC2ALXAtYC1QLPAs4CzALLAsoCyQLIAscCxgLEAsMCvgK8AroCuQK4ArcCtgK1ArQCswKyArECsAKuAq0CqQKoAqcCpgKlAqQCowKiAqECoAKfApgCkAKMAosCigKBAv4B/QH8AfsB+gH5AfgB9wH1AfMB8AHrAekB6AHnAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHaAdkB2AHXAdYB1QHUAdMB0gHRAdABzwHOAc0BzAHLAcoByQHIAccBxgHFAcQBwwHCAcEBwAG/Ab4BvQG8AbsBugG5AbgBtwG2AbUBtAGzAbIBsQGwAa8BrgGtAawBqwGqAakBqAGnAaYBpQGkAaMBogGfAZ4BmQGYAZcBlgGVAZQBkwGSAZEBkAGPAY0BjAGHAYYBhQGEAYMBggF9fHt6eXZ1dFBRUlNUVQsgASAERw1yQf0BIQIMvgMLIAEgBEcNmAFB2wEhAgy9AwsgASAERw3xAUGOASECDLwDCyABIARHDfwBQYQBIQIMuwMLIAEgBEcNigJB/wAhAgy6AwsgASAERw2RAkH9ACECDLkDCyABIARHDZQCQfsAIQIMuAMLIAEgBEcNHkEeIQIMtwMLIAEgBEcNGUEYIQIMtgMLIAEgBEcNygJBzQAhAgy1AwsgASAERw3VAkHGACECDLQDCyABIARHDdYCQcMAIQIMswMLIAEgBEcN3AJBOCECDLIDCyADLQAwQQFGDa0DDIkDC0EAIQACQAJAAkAgAy0AKkUNACADLQArRQ0AIAMvATIiAkECcUUNAQwCCyADLwEyIgJBAXFFDQELQQEhACADLQAoQQFGDQAgAy8BNCIGQeQAa0HkAEkNACAGQcwBRg0AIAZBsAJGDQAgAkHAAHENAEEAIQAgAkGIBHFBgARGDQAgAkEocUEARyEACyADQQA7ATIgA0EAOgAxAkAgAEUEQCADQQA6ADEgAy0ALkEEcQ0BDLEDCyADQgA3AyALIANBADoAMSADQQE6ADYMSAtBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUNSCAAQRVHDWIgA0EENgIcIAMgATYCFCADQdIbNgIQIANBFTYCDEEAIQIMrwMLIAEgBEYEQEEGIQIMrwMLIAEtAABBCkcNGSABQQFqIQEMGgsgA0IANwMgQRIhAgyUAwsgASAERw2KA0EjIQIMrAMLIAEgBEYEQEEHIQIMrAMLAkACQCABLQAAQQprDgQBGBgAGAsgAUEBaiEBQRAhAgyTAwsgAUEBaiEBIANBL2otAABBAXENF0EAIQIgA0EANgIcIAMgATYCFCADQZkgNgIQIANBGTYCDAyrAwsgAyADKQMgIgwgBCABa60iCn0iC0IAIAsgDFgbNwMgIAogDFoNGEEIIQIMqgMLIAEgBEcEQCADQQk2AgggAyABNgIEQRQhAgyRAwtBCSECDKkDCyADKQMgUA2uAgxDCyABIARGBEBBCyECDKgDCyABLQAAQQpHDRYgAUEBaiEBDBcLIANBL2otAABBAXFFDRkMJgtBACEAAkAgAygCOCICRQ0AIAIoAlAiAkUNACADIAIRAAAhAAsgAA0ZDEILQQAhAAJAIAMoAjgiAkUNACACKAJQIgJFDQAgAyACEQAAIQALIAANGgwkC0EAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAADRsMMgsgA0Evai0AAEEBcUUNHAwiC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADRwMQgtBACEAAkAgAygCOCICRQ0AIAIoAlQiAkUNACADIAIRAAAhAAsgAA0dDCALIAEgBEYEQEETIQIMoAMLAkAgAS0AACIAQQprDgQfIyMAIgsgAUEBaiEBDB8LQQAhAAJAIAMoAjgiAkUNACACKAJUIgJFDQAgAyACEQAAIQALIAANIgxCCyABIARGBEBBFiECDJ4DCyABLQAAQcDBAGotAABBAUcNIwyDAwsCQANAIAEtAABBsDtqLQAAIgBBAUcEQAJAIABBAmsOAgMAJwsgAUEBaiEBQSEhAgyGAwsgBCABQQFqIgFHDQALQRghAgydAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAFBAWoiARA0IgANIQxBC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADSMMKgsgASAERgRAQRwhAgybAwsgA0EKNgIIIAMgATYCBEEAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAADSVBJCECDIEDCyABIARHBEADQCABLQAAQbA9ai0AACIAQQNHBEAgAEEBaw4FGBomggMlJgsgBCABQQFqIgFHDQALQRshAgyaAwtBGyECDJkDCwNAIAEtAABBsD9qLQAAIgBBA0cEQCAAQQFrDgUPEScTJicLIAQgAUEBaiIBRw0AC0EeIQIMmAMLIAEgBEcEQCADQQs2AgggAyABNgIEQQchAgz/AgtBHyECDJcDCyABIARGBEBBICECDJcDCwJAIAEtAABBDWsOFC4/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8APwtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQMlgMLIANBL2ohAgNAIAEgBEYEQEEhIQIMlwMLAkACQAJAIAEtAAAiAEEJaw4YAgApKQEpKSkpKSkpKSkpKSkpKSkpKSkCJwsgAUEBaiEBIANBL2otAABBAXFFDQoMGAsgAUEBaiEBDBcLIAFBAWohASACLQAAQQJxDQALQQAhAiADQQA2AhwgAyABNgIUIANBnxU2AhAgA0EMNgIMDJUDCyADLQAuQYABcUUNAQtBACEAAkAgAygCOCICRQ0AIAIoAlwiAkUNACADIAIRAAAhAAsgAEUN5gIgAEEVRgRAIANBJDYCHCADIAE2AhQgA0GbGzYCECADQRU2AgxBACECDJQDC0EAIQIgA0EANgIcIAMgATYCFCADQZAONgIQIANBFDYCDAyTAwtBACECIANBADYCHCADIAE2AhQgA0G+IDYCECADQQI2AgwMkgMLIAMoAgQhAEEAIQIgA0EANgIEIAMgACABIAynaiIBEDIiAEUNKyADQQc2AhwgAyABNgIUIAMgADYCDAyRAwsgAy0ALkHAAHFFDQELQQAhAAJAIAMoAjgiAkUNACACKAJYIgJFDQAgAyACEQAAIQALIABFDSsgAEEVRgRAIANBCjYCHCADIAE2AhQgA0HrGTYCECADQRU2AgxBACECDJADC0EAIQIgA0EANgIcIAMgATYCFCADQZMMNgIQIANBEzYCDAyPAwtBACECIANBADYCHCADIAE2AhQgA0GCFTYCECADQQI2AgwMjgMLQQAhAiADQQA2AhwgAyABNgIUIANB3RQ2AhAgA0EZNgIMDI0DC0EAIQIgA0EANgIcIAMgATYCFCADQeYdNgIQIANBGTYCDAyMAwsgAEEVRg09QQAhAiADQQA2AhwgAyABNgIUIANB0A82AhAgA0EiNgIMDIsDCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFDSggA0ENNgIcIAMgATYCFCADIAA2AgwMigMLIABBFUYNOkEAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAyJAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQwoCyADQQ42AhwgAyAANgIMIAMgAUEBajYCFAyIAwsgAEEVRg03QQAhAiADQQA2AhwgAyABNgIUIANB0A82AhAgA0EiNgIMDIcDCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDCcLIANBDzYCHCADIAA2AgwgAyABQQFqNgIUDIYDC0EAIQIgA0EANgIcIAMgATYCFCADQeIXNgIQIANBGTYCDAyFAwsgAEEVRg0zQQAhAiADQQA2AhwgAyABNgIUIANB1gw2AhAgA0EjNgIMDIQDCyADKAIEIQBBACECIANBADYCBCADIAAgARA0IgBFDSUgA0ERNgIcIAMgATYCFCADIAA2AgwMgwMLIABBFUYNMEEAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAyCAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwlCyADQRI2AhwgAyAANgIMIAMgAUEBajYCFAyBAwsgA0Evai0AAEEBcUUNAQtBFyECDOYCC0EAIQIgA0EANgIcIAMgATYCFCADQeIXNgIQIANBGTYCDAz+AgsgAEE7Rw0AIAFBAWohAQwMC0EAIQIgA0EANgIcIAMgATYCFCADQZIYNgIQIANBAjYCDAz8AgsgAEEVRg0oQQAhAiADQQA2AhwgAyABNgIUIANB1gw2AhAgA0EjNgIMDPsCCyADQRQ2AhwgAyABNgIUIAMgADYCDAz6AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQz1AgsgA0EVNgIcIAMgADYCDCADIAFBAWo2AhQM+QILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEM8wILIANBFzYCHCADIAA2AgwgAyABQQFqNgIUDPgCCyAAQRVGDSNBACECIANBADYCHCADIAE2AhQgA0HWDDYCECADQSM2AgwM9wILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEMHQsgA0EZNgIcIAMgADYCDCADIAFBAWo2AhQM9gILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEM7wILIANBGjYCHCADIAA2AgwgAyABQQFqNgIUDPUCCyAAQRVGDR9BACECIANBADYCHCADIAE2AhQgA0HQDzYCECADQSI2AgwM9AILIAMoAgQhACADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQwbCyADQRw2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8wILIAMoAgQhACADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQzrAgsgA0EdNgIcIAMgADYCDCADIAFBAWo2AhRBACECDPICCyAAQTtHDQEgAUEBaiEBC0EmIQIM1wILQQAhAiADQQA2AhwgAyABNgIUIANBnxU2AhAgA0EMNgIMDO8CCyABIARHBEADQCABLQAAQSBHDYQCIAQgAUEBaiIBRw0AC0EsIQIM7wILQSwhAgzuAgsgASAERgRAQTQhAgzuAgsCQAJAA0ACQCABLQAAQQprDgQCAAADAAsgBCABQQFqIgFHDQALQTQhAgzvAgsgAygCBCEAIANBADYCBCADIAAgARAxIgBFDZ8CIANBMjYCHCADIAE2AhQgAyAANgIMQQAhAgzuAgsgAygCBCEAIANBADYCBCADIAAgARAxIgBFBEAgAUEBaiEBDJ8CCyADQTI2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM7QILIAEgBEcEQAJAA0AgAS0AAEEwayIAQf8BcUEKTwRAQTohAgzXAgsgAykDICILQpmz5syZs+bMGVYNASADIAtCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAMgCiALfDcDICAEIAFBAWoiAUcNAAtBwAAhAgzuAgsgAygCBCEAIANBADYCBCADIAAgAUEBaiIBEDEiAA0XDOICC0HAACECDOwCCyABIARGBEBByQAhAgzsAgsCQANAAkAgAS0AAEEJaw4YAAKiAqICqQKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw=='; + var wasmBuffer; + Object.defineProperty(module2, 'exports', { + get: () => { + return wasmBuffer ? wasmBuffer : (wasmBuffer = Buffer2.from(wasmBase64, 'base64')); } }); } }); -// node_modules/@actions/github/lib/context.js -var require_context = __commonJS({ - 'node_modules/@actions/github/lib/context.js'(exports2) { +// node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +var require_llhttp_simd_wasm = __commonJS({ + 'node_modules/undici/lib/llhttp/llhttp_simd-wasm.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.Context = void 0; - var fs_1 = require('fs'); - var os_1 = require('os'); - var Context = class { - constructor() { - var _a, _b, _c; - this.payload = {}; - if (process.env.GITHUB_EVENT_PATH) { - if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) { - this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); - } else { - const path2 = process.env.GITHUB_EVENT_PATH; - process.stdout.write(`GITHUB_EVENT_PATH ${path2} does not exist${os_1.EOL}`); - } - } - 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.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); - this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); - this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; - this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; - this.graphqlUrl = - (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `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 [owner2, repo2] = process.env.GITHUB_REPOSITORY.split('/'); - return { owner: owner2, repo: repo2 }; - } - 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 { Buffer: Buffer2 } = require('node:buffer'); + var wasmBase64 = + 'AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw=='; + var wasmBuffer; + Object.defineProperty(module2, 'exports', { + get: () => { + return wasmBuffer ? wasmBuffer : (wasmBuffer = Buffer2.from(wasmBase64, 'base64')); } - }; - exports2.Context = Context; + }); } }); -// node_modules/@actions/github/lib/internal/utils.js -var require_utils2 = __commonJS({ - 'node_modules/@actions/github/lib/internal/utils.js'(exports2) { +// node_modules/undici/lib/web/fetch/constants.js +var require_constants3 = __commonJS({ + 'node_modules/undici/lib/web/fetch/constants.js'(exports2, module2) { 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); - } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getApiBaseUrl = exports2.getProxyAgent = exports2.getAuthString = void 0; - var httpClient = __importStar(require_lib()); - function getAuthString(token, options) { - if (!token && !options.auth) { - throw new Error('Parameter token or opts.auth is required'); - } else if (token && options.auth) { - throw new Error('Parameters token and opts.auth may not both be specified'); - } - return typeof options.auth === 'string' ? options.auth : `token ${token}`; - } - exports2.getAuthString = getAuthString; - function getProxyAgent(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgent(destinationUrl); - } - exports2.getProxyAgent = getProxyAgent; - function getApiBaseUrl() { - return process.env['GITHUB_API_URL'] || 'https://api.github.com'; - } - exports2.getApiBaseUrl = getApiBaseUrl; + 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 referrerPolicyTokens = + /** @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 referrerPolicy = + /** @type {const} */ + ['', ...referrerPolicyTokens]; + var referrerPolicyTokensSet = new Set(referrerPolicyTokens); + 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); + module2.exports = { + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicyTokens: referrerPolicyTokensSet + }; } }); -// node_modules/universal-user-agent/dist-node/index.js -var require_dist_node = __commonJS({ - 'node_modules/universal-user-agent/dist-node/index.js'(exports2) { +// node_modules/undici/lib/web/fetch/global.js +var require_global = __commonJS({ + 'node_modules/undici/lib/web/fetch/global.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function getUserAgent() { - if (typeof navigator === 'object' && 'userAgent' in navigator) { - return navigator.userAgent; + var globalOrigin = /* @__PURE__ */ 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; } - if (typeof process === 'object' && 'version' in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + const parsedURL = new URL(newOrigin); + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); } - return ''; + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }); } - exports2.getUserAgent = getUserAgent; + module2.exports = { + getGlobalOrigin, + setGlobalOrigin + }; } }); -// node_modules/before-after-hook/lib/register.js -var require_register = __commonJS({ - 'node_modules/before-after-hook/lib/register.js'(exports2, module2) { - module2.exports = register; - 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(function (callback, name2) { - return register.bind(null, state, name2, callback, options); - }, method)(); - } - return Promise.resolve().then(function () { - if (!state.registry[name]) { - return method(options); - } - return state.registry[name].reduce(function (method2, registered) { - return registered.hook.bind(null, method2, options); - }, method)(); - }); +// node_modules/undici/lib/encoding/index.js +var require_encoding = __commonJS({ + 'node_modules/undici/lib/encoding/index.js'(exports2, module2) { + 'use strict'; + 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; } + module2.exports = { + utf8DecodeBytes + }; } }); -// node_modules/before-after-hook/lib/add.js -var require_add = __commonJS({ - 'node_modules/before-after-hook/lib/add.js'(exports2, module2) { - module2.exports = addHook; - function addHook(state, kind, name, hook) { - var orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; - } - if (kind === 'before') { - hook = function (method, options) { - return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); - }; +// node_modules/undici/lib/web/infra/index.js +var require_infra = __commonJS({ + 'node_modules/undici/lib/web/infra/index.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { utf8DecodeBytes } = require_encoding(); + function collectASequenceOfCodePoints(condition, input, position) { + let result = ''; + while (position.position < input.length && condition(input[position.position])) { + result += input[position.position]; + position.position++; } - if (kind === 'after') { - hook = function (method, options) { - var result; - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_; - return orig(result, options); - }) - .then(function () { - return result; - }); - }; + 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); + } + var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g; + 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 (kind === 'error') { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options); - }); - }; + if (dataLength % 4 === 1) { + return 'failure'; } - state.registry[name].push({ - hook, - orig - }); - } - } -}); - -// node_modules/before-after-hook/lib/remove.js -var require_remove = __commonJS({ - 'node_modules/before-after-hook/lib/remove.js'(exports2, module2) { - module2.exports = removeHook; - function removeHook(state, name, method) { - if (!state.registry[name]) { - return; + if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) { + return 'failure'; } - var index = state.registry[name] - .map(function (registered) { - return registered.orig; - }) - .indexOf(method); - if (index === -1) { - return; + const buffer = Buffer.from(data, 'base64'); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); + } + function isASCIIWhitespace(char) { + return ( + char === 9 || // \t + char === 10 || // \n + char === 12 || // \f + char === 13 || // \r + char === 32 + ); + } + 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))); } - state.registry[name].splice(index, 1); + return result; } - } -}); - -// node_modules/before-after-hook/index.js -var require_before_after_hook = __commonJS({ - 'node_modules/before-after-hook/index.js'(exports2, module2) { - var register = require_register(); - var addHook = require_add(); - var removeHook = require_remove(); - var bind = Function.bind; - var bindable = bind.bind(bind); - function bindApi(hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); - hook.api = { remove: removeHookRef }; - hook.remove = removeHookRef; - ['before', 'error', 'after', 'wrap'].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind]; - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); - }); + var invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/; + function isomorphicEncode(input) { + assert(!invalidIsomorphicEncodeValueRegex.test(input)); + return input; } - function HookSingular() { - var singularHookName = 'h'; - var singularHookState = { - registry: {} - }; - var singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; + function parseJSONFromBytes(bytes) { + return JSON.parse(utf8DecodeBytes(bytes)); } - function HookCollection() { - var state = { - registry: {} - }; - var hook = register.bind(null, state); - bindApi(hook, state); - return hook; - } - var collectionHookDeprecationMessageDisplayed = false; - function Hook() { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn( - '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' - ); - collectionHookDeprecationMessageDisplayed = true; + 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 HookCollection(); + return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1); } - Hook.Singular = HookSingular.bind(); - Hook.Collection = HookCollection.bind(); - module2.exports = Hook; - module2.exports.Hook = Hook; - module2.exports.Singular = Hook.Singular; - module2.exports.Collection = Hook.Collection; - } -}); - -// node_modules/is-plain-object/dist/is-plain-object.js -var require_is_plain_object = __commonJS({ - 'node_modules/is-plain-object/dist/is-plain-object.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; - } - function isPlainObject(o) { - var ctor, prot; - if (isObject(o) === false) return false; - ctor = o.constructor; - if (ctor === void 0) return true; - prot = ctor.prototype; - if (isObject(prot) === false) return false; - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; + function serializeJavascriptValueToJSONString(value) { + const result = JSON.stringify(value); + if (result === void 0) { + throw new TypeError('Value is not JSON serializable'); } - return true; + assert(typeof result === 'string'); + return result; } - exports2.isPlainObject = isPlainObject; + module2.exports = { + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + forgivingBase64, + isASCIIWhitespace, + isomorphicDecode, + isomorphicEncode, + parseJSONFromBytes, + removeASCIIWhitespace, + removeChars, + serializeJavascriptValueToJSONString + }; } }); -// node_modules/@octokit/endpoint/dist-node/index.js -var require_dist_node2 = __commonJS({ - 'node_modules/@octokit/endpoint/dist-node/index.js'(exports2) { +// node_modules/undici/lib/web/fetch/data-url.js +var require_data_url = __commonJS({ + 'node_modules/undici/lib/web/fetch/data-url.js'(exports2, module2) { 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var isPlainObject = require_is_plain_object(); - var universalUserAgent = require_dist_node(); - function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); - } - function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) - Object.assign(result, { - [key]: options[key] - }); - else result[key] = mergeDeep(defaults[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]; + var assert = require('node:assert'); + var { + forgivingBase64, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + isomorphicDecode, + removeASCIIWhitespace, + removeChars + } = require_infra(); + var encoder = new TextEncoder(); + var HTTP_TOKEN_CODEPOINTS = /^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u; + var HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/u; + var HTTP_QUOTED_STRING_TOKENS = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/u; + function dataURLProcessor(dataURL) { + assert(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*)base64$/iu.test(mimeType)) { + const stringBody = isomorphicDecode(body); + body = forgivingBase64(stringBody); + if (body === 'failure') { + return 'failure'; } + mimeType = mimeType.slice(0, -6); + mimeType = mimeType.replace(/(\u0020+)$/u, ''); + mimeType = mimeType.slice(0, -1); } - return obj; - } - function merge(defaults, 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(defaults || {}, options); - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.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; + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType; } - 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+|\W+$/g, '').split(/,/); - } - function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - if (!matches) { - return []; + let mimeTypeRecord = parseMIMEType(mimeType); + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII'); } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); - } - function omit(object, keysToOmit) { - return Object.keys(object) - .filter(option => !keysToOmit.includes(option)) - .reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); - } - 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(); - }); + return { mimeType: mimeTypeRecord, body }; } - function encodeValue(operator, value, key) { - value = operator === '+' || operator === '#' ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + '=' + value; - } else { - return value; + 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 isDefined(value) { - return value !== void 0 && value !== null; + function stringPercentDecode(input) { + const bytes = encoder.encode(input); + return percentDecode(bytes); } - function isKeyOperator(operator) { - return operator === ';' || operator === '&' || operator === '?'; + function isHexCharByte(byte) { + return (byte >= 48 && byte <= 57) || (byte >= 65 && byte <= 70) || (byte >= 97 && byte <= 102); } - function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - if (isDefined(value) && value !== '') { - if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { - value = value.toString(); - if (modifier && modifier !== '*') { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : '')); + 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; + let i = 0; + while (i < length) { + 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 { - 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(''); + output[j++] = (hexByteToNumber(input[i + 1]) << 4) | hexByteToNumber(input[i + 2]); + i += 2; } + ++i; } - return result; + return length === j ? output : output.subarray(0, j); } - function parseUrl(template) { - return { - expand: expand.bind(null, template) + 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}` }; - } - function expand(template, context) { - var operators = ['+', '#', '.', '/', ';', '?', '&']; - return 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(context, 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(','); + 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 { - return encodeReserved(literal); + parameterValue = collectASequenceOfCodePointsFast(';', input, position); + parameterValue = removeHTTPWhitespace(parameterValue, false, true); + if (parameterValue.length === 0) { + continue; + } } - }); - } - 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(preview => - preview.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}` - ) - ) - .join(','); - } - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader - .concat(options.mediaType.previews) - .map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : '+json'; - return `application/vnd.github.${preview}-preview${format}`; - }) - .join(','); + 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); } } - 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; - } else { - headers['content-length'] = 0; + return mimeType; + } + function collectAnHTTPQuotedString(input, position, extractValue = false) { + const positionStart = position.position; + let value = ''; + assert(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 { + assert(quoteOrBackslash === '"'); + break; } } - if (!headers['content-type'] && typeof body !== 'undefined') { - headers['content-type'] = 'application/json; charset=utf-8'; + if (extractValue) { + return value; } - if (['PATCH', 'PUT'].includes(method) && typeof body === 'undefined') { - body = ''; + return input.slice(positionStart, position.position); + } + function serializeAMimeType(mimeType) { + assert(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(/[\\"]/gu, '\\$&'); + value = '"' + value; + value += '"'; + } + serialization += value; } - return Object.assign( - { - method, - url, - headers - }, - typeof body !== 'undefined' - ? { - body - } - : null, - options.request - ? { - request: options.request - } - : null - ); + return serialization; } - function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, 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 - }); + function isHTTPWhiteSpace(char) { + return char === 13 || char === 10 || char === 9 || char === 32; } - var VERSION = '6.0.12'; - var userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; - var DEFAULTS = { - method: 'GET', - baseUrl: 'https://api.github.com', - headers: { - accept: 'application/vnd.github.v3+json', - 'user-agent': userAgent - }, - mediaType: { - format: '', - previews: [] - } + function removeHTTPWhitespace(str, leading = true, trailing = true) { + return removeChars(str, leading, trailing, isHTTPWhiteSpace); + } + 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 ''; + } + module2.exports = { + dataURLProcessor, + URLSerializer, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType, + removeHTTPWhitespace, + minimizeSupportedMimeType, + HTTP_TOKEN_CODEPOINTS }; - var endpoint = withDefaults(null, DEFAULTS); - exports2.endpoint = endpoint; } }); -// node_modules/webidl-conversions/lib/index.js -var require_lib2 = __commonJS({ - 'node_modules/webidl-conversions/lib/index.js'(exports2, module2) { +// node_modules/undici/lib/web/webidl/index.js +var require_webidl = __commonJS({ + 'node_modules/undici/lib/web/webidl/index.js'(exports2, module2) { 'use strict'; - var conversions = {}; - module2.exports = conversions; - function sign(x) { - return x < 0 ? -1 : 1; - } - function evenRound(x) { - if (x % 1 === 0.5 && (x & 1) === 0) { - return Math.floor(x); - } else { - return Math.round(x); - } - } - function createNumberConversion(bitLength, typeOpts) { - if (!typeOpts.unsigned) { - --bitLength; + var assert = require('node:assert'); + var { types, inspect } = require('node:util'); + var { markAsUncloneable } = require('node:worker_threads'); + var UNDEFINED = 1; + var BOOLEAN = 2; + var STRING = 3; + var SYMBOL = 4; + var NUMBER = 5; + var BIGINT = 6; + var NULL = 7; + var OBJECT = 8; + var FunctionPrototypeSymbolHasInstance = Function.call.bind(Function.prototype[Symbol.hasInstance]); + var webidl = { + converters: {}, + util: {}, + errors: {}, + is: {} + }; + webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`); + }; + webidl.errors.conversionFailed = function (opts) { + const plural = opts.types.length === 1 ? '' : ' one of'; + const message = `${opts.argument} could not be converted to${plural}: ${opts.types.join(', ')}.`; + return webidl.errors.exception({ + header: opts.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) { + if (!FunctionPrototypeSymbolHasInstance(I, V)) { + const err = new TypeError('Illegal invocation'); + err.code = 'ERR_INVALID_THIS'; + throw err; } - const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); - const upperBound = Math.pow(2, bitLength) - 1; - const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); - const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); - return function (V, opts) { - if (!opts) opts = {}; - let x = +V; - if (opts.enforceRange) { - if (!Number.isFinite(x)) { - throw new TypeError('Argument is not a finite number'); - } - x = sign(x) * Math.floor(Math.abs(x)); - if (x < lowerBound || x > upperBound) { - throw new TypeError('Argument is not in byte range'); - } - return x; - } - if (!isNaN(x) && opts.clamp) { - x = evenRound(x); - if (x < lowerBound) x = lowerBound; - if (x > upperBound) x = upperBound; - return x; - } - if (!Number.isFinite(x) || x === 0) { - return 0; - } - x = sign(x) * Math.floor(Math.abs(x)); - x = x % moduloVal; - if (!typeOpts.unsigned && x >= moduloBound) { - return x - moduloVal; - } else if (typeOpts.unsigned) { - if (x < 0) { - x += moduloVal; - } else if (x === -0) { - return 0; - } + }; + webidl.brandCheckMultiple = function (List) { + const prototypes = List.map(c => webidl.util.MakeTypeAssertion(c)); + return V => { + if (prototypes.every(typeCheck => !typeCheck(V))) { + const err = new TypeError('Illegal invocation'); + err.code = 'ERR_INVALID_THIS'; + throw err; } - return x; }; - } - conversions['void'] = function () { - return void 0; }; - conversions['boolean'] = function (val) { - return !!val; - }; - conversions['byte'] = createNumberConversion(8, { unsigned: false }); - conversions['octet'] = createNumberConversion(8, { unsigned: true }); - conversions['short'] = createNumberConversion(16, { unsigned: false }); - conversions['unsigned short'] = createNumberConversion(16, { unsigned: true }); - conversions['long'] = createNumberConversion(32, { unsigned: false }); - conversions['unsigned long'] = createNumberConversion(32, { unsigned: true }); - conversions['long long'] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); - conversions['unsigned long long'] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); - conversions['double'] = function (V) { - const x = +V; - if (!Number.isFinite(x)) { - throw new TypeError('Argument is not a finite floating-point value'); + 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 + }); } - return x; }; - conversions['unrestricted double'] = function (V) { - const x = +V; - if (isNaN(x)) { - throw new TypeError('Argument is NaN'); + webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }); + }; + webidl.util.MakeTypeAssertion = function (I) { + return O => FunctionPrototypeSymbolHasInstance(I, O); + }; + 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; + } } - return x; }; - conversions['float'] = conversions['double']; - conversions['unrestricted float'] = conversions['unrestricted double']; - conversions['DOMString'] = function (V, opts) { - if (!opts) opts = {}; - if (opts.treatNullAsEmptyString && V === null) { - return ''; + webidl.util.Types = { + UNDEFINED, + BOOLEAN, + STRING, + SYMBOL, + NUMBER, + BIGINT, + NULL, + OBJECT + }; + webidl.util.TypeValueToString = function (o) { + switch (webidl.util.Type(o)) { + 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 NULL: + return 'Null'; + case OBJECT: + return 'Object'; } - return String(V); }; - conversions['ByteString'] = function (V, opts) { - const x = String(V); - let c = void 0; - for (let i = 0; (c = x.codePointAt(i)) !== void 0; ++i) { - if (c > 255) { - throw new TypeError('Argument is not a valid bytestring'); + webidl.util.markAsUncloneable = markAsUncloneable; + webidl.util.ConvertToInt = function (V, bitLength, signedness, flags) { + 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 (webidl.util.HasFlag(flags, webidl.attributes.EnforceRange)) { + 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; } - return x; - }; - conversions['USVString'] = function (V) { - const S = String(V); - const n = S.length; - const U = []; - for (let i = 0; i < n; ++i) { - const c = S.charCodeAt(i); - if (c < 55296 || c > 57343) { - U.push(String.fromCodePoint(c)); - } else if (56320 <= c && c <= 57343) { - U.push(String.fromCodePoint(65533)); + if (!Number.isNaN(x) && webidl.util.HasFlag(flags, webidl.attributes.Clamp)) { + x = Math.min(Math.max(x, lowerBound), upperBound); + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x); } else { - if (i === n - 1) { - U.push(String.fromCodePoint(65533)); - } else { - const d = S.charCodeAt(i + 1); - if (56320 <= d && d <= 57343) { - const a = c & 1023; - const b = d & 1023; - U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); - ++i; - } else { - U.push(String.fromCodePoint(65533)); - } - } + x = Math.ceil(x); } + return x; } - return U.join(''); - }; - conversions['Date'] = function (V, opts) { - if (!(V instanceof Date)) { - throw new TypeError('Argument is not a Date object'); + if ( + Number.isNaN(x) || + (x === 0 && Object.is(0, x)) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + return 0; } - if (isNaN(V)) { - return void 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 V; + return x; }; - conversions['RegExp'] = function (V, opts) { - if (!(V instanceof RegExp)) { - V = new RegExp(V); + webidl.util.IntegerPart = function (n) { + const r = Math.floor(Math.abs(n)); + if (n < 0) { + return -1 * r; } - return V; + return r; }; - } -}); - -// node_modules/whatwg-url/lib/utils.js -var require_utils3 = __commonJS({ - 'node_modules/whatwg-url/lib/utils.js'(exports2, module2) { - 'use strict'; - module2.exports.mixin = function mixin(target, source) { - const keys = Object.getOwnPropertyNames(source); - for (let i = 0; i < keys.length; ++i) { - Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); + webidl.util.Stringify = function (V) { + const type = webidl.util.Type(V); + switch (type) { + case SYMBOL: + return `Symbol(${V.description})`; + case OBJECT: + return inspect(V); + case STRING: + return `"${V}"`; + case BIGINT: + return `${V}n`; + default: + return `${V}`; } }; - module2.exports.wrapperSymbol = Symbol('wrapper'); - module2.exports.implSymbol = Symbol('impl'); - module2.exports.wrapperForImpl = function (impl) { - return impl[module2.exports.wrapperSymbol]; + webidl.util.IsResizableArrayBuffer = function (V) { + if (types.isArrayBuffer(V)) { + return V.resizable; + } + if (types.isSharedArrayBuffer(V)) { + return V.growable; + } + throw webidl.errors.exception({ + header: 'IsResizableArrayBuffer', + message: `"${webidl.util.Stringify(V)}" is not an array buffer.` + }); }; - module2.exports.implForWrapper = function (wrapper) { - return wrapper[module2.exports.implSymbol]; + webidl.util.HasFlag = function (flags, attributes) { + return typeof flags === 'number' && (flags & attributes) === attributes; }; - } -}); - -// node_modules/tr46/lib/mappingTable.json -var require_mappingTable = __commonJS({ - 'node_modules/tr46/lib/mappingTable.json'(exports2, module2) { - module2.exports = [ - [[0, 44], 'disallowed_STD3_valid'], - [[45, 46], 'valid'], - [[47, 47], 'disallowed_STD3_valid'], - [[48, 57], 'valid'], - [[58, 64], 'disallowed_STD3_valid'], - [[65, 65], 'mapped', [97]], - [[66, 66], 'mapped', [98]], - [[67, 67], 'mapped', [99]], - [[68, 68], 'mapped', [100]], - [[69, 69], 'mapped', [101]], - [[70, 70], 'mapped', [102]], - [[71, 71], 'mapped', [103]], - [[72, 72], 'mapped', [104]], - [[73, 73], 'mapped', [105]], - [[74, 74], 'mapped', [106]], - [[75, 75], 'mapped', [107]], - [[76, 76], 'mapped', [108]], - [[77, 77], 'mapped', [109]], - [[78, 78], 'mapped', [110]], - [[79, 79], 'mapped', [111]], - [[80, 80], 'mapped', [112]], - [[81, 81], 'mapped', [113]], - [[82, 82], 'mapped', [114]], - [[83, 83], 'mapped', [115]], - [[84, 84], 'mapped', [116]], - [[85, 85], 'mapped', [117]], - [[86, 86], 'mapped', [118]], - [[87, 87], 'mapped', [119]], - [[88, 88], 'mapped', [120]], - [[89, 89], 'mapped', [121]], - [[90, 90], 'mapped', [122]], - [[91, 96], 'disallowed_STD3_valid'], - [[97, 122], 'valid'], - [[123, 127], 'disallowed_STD3_valid'], - [[128, 159], 'disallowed'], - [[160, 160], 'disallowed_STD3_mapped', [32]], - [[161, 167], 'valid', [], 'NV8'], - [[168, 168], 'disallowed_STD3_mapped', [32, 776]], - [[169, 169], 'valid', [], 'NV8'], - [[170, 170], 'mapped', [97]], - [[171, 172], 'valid', [], 'NV8'], - [[173, 173], 'ignored'], - [[174, 174], 'valid', [], 'NV8'], - [[175, 175], 'disallowed_STD3_mapped', [32, 772]], - [[176, 177], 'valid', [], 'NV8'], - [[178, 178], 'mapped', [50]], - [[179, 179], 'mapped', [51]], - [[180, 180], 'disallowed_STD3_mapped', [32, 769]], - [[181, 181], 'mapped', [956]], - [[182, 182], 'valid', [], 'NV8'], - [[183, 183], 'valid'], - [[184, 184], 'disallowed_STD3_mapped', [32, 807]], - [[185, 185], 'mapped', [49]], - [[186, 186], 'mapped', [111]], - [[187, 187], 'valid', [], 'NV8'], - [[188, 188], 'mapped', [49, 8260, 52]], - [[189, 189], 'mapped', [49, 8260, 50]], - [[190, 190], 'mapped', [51, 8260, 52]], - [[191, 191], 'valid', [], 'NV8'], - [[192, 192], 'mapped', [224]], - [[193, 193], 'mapped', [225]], - [[194, 194], 'mapped', [226]], - [[195, 195], 'mapped', [227]], - [[196, 196], 'mapped', [228]], - [[197, 197], 'mapped', [229]], - [[198, 198], 'mapped', [230]], - [[199, 199], 'mapped', [231]], - [[200, 200], 'mapped', [232]], - [[201, 201], 'mapped', [233]], - [[202, 202], 'mapped', [234]], - [[203, 203], 'mapped', [235]], - [[204, 204], 'mapped', [236]], - [[205, 205], 'mapped', [237]], - [[206, 206], 'mapped', [238]], - [[207, 207], 'mapped', [239]], - [[208, 208], 'mapped', [240]], - [[209, 209], 'mapped', [241]], - [[210, 210], 'mapped', [242]], - [[211, 211], 'mapped', [243]], - [[212, 212], 'mapped', [244]], - [[213, 213], 'mapped', [245]], - [[214, 214], 'mapped', [246]], - [[215, 215], 'valid', [], 'NV8'], - [[216, 216], 'mapped', [248]], - [[217, 217], 'mapped', [249]], - [[218, 218], 'mapped', [250]], - [[219, 219], 'mapped', [251]], - [[220, 220], 'mapped', [252]], - [[221, 221], 'mapped', [253]], - [[222, 222], 'mapped', [254]], - [[223, 223], 'deviation', [115, 115]], - [[224, 246], 'valid'], - [[247, 247], 'valid', [], 'NV8'], - [[248, 255], 'valid'], - [[256, 256], 'mapped', [257]], - [[257, 257], 'valid'], - [[258, 258], 'mapped', [259]], - [[259, 259], 'valid'], - [[260, 260], 'mapped', [261]], - [[261, 261], 'valid'], - [[262, 262], 'mapped', [263]], - [[263, 263], 'valid'], - [[264, 264], 'mapped', [265]], - [[265, 265], 'valid'], - [[266, 266], 'mapped', [267]], - [[267, 267], 'valid'], - [[268, 268], 'mapped', [269]], - [[269, 269], 'valid'], - [[270, 270], 'mapped', [271]], - [[271, 271], 'valid'], - [[272, 272], 'mapped', [273]], - [[273, 273], 'valid'], - [[274, 274], 'mapped', [275]], - [[275, 275], 'valid'], - [[276, 276], 'mapped', [277]], - [[277, 277], 'valid'], - [[278, 278], 'mapped', [279]], - [[279, 279], 'valid'], - [[280, 280], 'mapped', [281]], - [[281, 281], 'valid'], - [[282, 282], 'mapped', [283]], - [[283, 283], 'valid'], - [[284, 284], 'mapped', [285]], - [[285, 285], 'valid'], - [[286, 286], 'mapped', [287]], - [[287, 287], 'valid'], - [[288, 288], 'mapped', [289]], - [[289, 289], 'valid'], - [[290, 290], 'mapped', [291]], - [[291, 291], 'valid'], - [[292, 292], 'mapped', [293]], - [[293, 293], 'valid'], - [[294, 294], 'mapped', [295]], - [[295, 295], 'valid'], - [[296, 296], 'mapped', [297]], - [[297, 297], 'valid'], - [[298, 298], 'mapped', [299]], - [[299, 299], 'valid'], - [[300, 300], 'mapped', [301]], - [[301, 301], 'valid'], - [[302, 302], 'mapped', [303]], - [[303, 303], 'valid'], - [[304, 304], 'mapped', [105, 775]], - [[305, 305], 'valid'], - [[306, 307], 'mapped', [105, 106]], - [[308, 308], 'mapped', [309]], - [[309, 309], 'valid'], - [[310, 310], 'mapped', [311]], - [[311, 312], 'valid'], - [[313, 313], 'mapped', [314]], - [[314, 314], 'valid'], - [[315, 315], 'mapped', [316]], - [[316, 316], 'valid'], - [[317, 317], 'mapped', [318]], - [[318, 318], 'valid'], - [[319, 320], 'mapped', [108, 183]], - [[321, 321], 'mapped', [322]], - [[322, 322], 'valid'], - [[323, 323], 'mapped', [324]], - [[324, 324], 'valid'], - [[325, 325], 'mapped', [326]], - [[326, 326], 'valid'], - [[327, 327], 'mapped', [328]], - [[328, 328], 'valid'], - [[329, 329], 'mapped', [700, 110]], - [[330, 330], 'mapped', [331]], - [[331, 331], 'valid'], - [[332, 332], 'mapped', [333]], - [[333, 333], 'valid'], - [[334, 334], 'mapped', [335]], - [[335, 335], 'valid'], - [[336, 336], 'mapped', [337]], - [[337, 337], 'valid'], - [[338, 338], 'mapped', [339]], - [[339, 339], 'valid'], - [[340, 340], 'mapped', [341]], - [[341, 341], 'valid'], - [[342, 342], 'mapped', [343]], - [[343, 343], 'valid'], - [[344, 344], 'mapped', [345]], - [[345, 345], 'valid'], - [[346, 346], 'mapped', [347]], - [[347, 347], 'valid'], - [[348, 348], 'mapped', [349]], - [[349, 349], 'valid'], - [[350, 350], 'mapped', [351]], - [[351, 351], 'valid'], - [[352, 352], 'mapped', [353]], - [[353, 353], 'valid'], - [[354, 354], 'mapped', [355]], - [[355, 355], 'valid'], - [[356, 356], 'mapped', [357]], - [[357, 357], 'valid'], - [[358, 358], 'mapped', [359]], - [[359, 359], 'valid'], - [[360, 360], 'mapped', [361]], - [[361, 361], 'valid'], - [[362, 362], 'mapped', [363]], - [[363, 363], 'valid'], - [[364, 364], 'mapped', [365]], - [[365, 365], 'valid'], - [[366, 366], 'mapped', [367]], - [[367, 367], 'valid'], - [[368, 368], 'mapped', [369]], - [[369, 369], 'valid'], - [[370, 370], 'mapped', [371]], - [[371, 371], 'valid'], - [[372, 372], 'mapped', [373]], - [[373, 373], 'valid'], - [[374, 374], 'mapped', [375]], - [[375, 375], 'valid'], - [[376, 376], 'mapped', [255]], - [[377, 377], 'mapped', [378]], - [[378, 378], 'valid'], - [[379, 379], 'mapped', [380]], - [[380, 380], 'valid'], - [[381, 381], 'mapped', [382]], - [[382, 382], 'valid'], - [[383, 383], 'mapped', [115]], - [[384, 384], 'valid'], - [[385, 385], 'mapped', [595]], - [[386, 386], 'mapped', [387]], - [[387, 387], 'valid'], - [[388, 388], 'mapped', [389]], - [[389, 389], 'valid'], - [[390, 390], 'mapped', [596]], - [[391, 391], 'mapped', [392]], - [[392, 392], 'valid'], - [[393, 393], 'mapped', [598]], - [[394, 394], 'mapped', [599]], - [[395, 395], 'mapped', [396]], - [[396, 397], 'valid'], - [[398, 398], 'mapped', [477]], - [[399, 399], 'mapped', [601]], - [[400, 400], 'mapped', [603]], - [[401, 401], 'mapped', [402]], - [[402, 402], 'valid'], - [[403, 403], 'mapped', [608]], - [[404, 404], 'mapped', [611]], - [[405, 405], 'valid'], - [[406, 406], 'mapped', [617]], - [[407, 407], 'mapped', [616]], - [[408, 408], 'mapped', [409]], - [[409, 411], 'valid'], - [[412, 412], 'mapped', [623]], - [[413, 413], 'mapped', [626]], - [[414, 414], 'valid'], - [[415, 415], 'mapped', [629]], - [[416, 416], 'mapped', [417]], - [[417, 417], 'valid'], - [[418, 418], 'mapped', [419]], - [[419, 419], 'valid'], - [[420, 420], 'mapped', [421]], - [[421, 421], 'valid'], - [[422, 422], 'mapped', [640]], - [[423, 423], 'mapped', [424]], - [[424, 424], 'valid'], - [[425, 425], 'mapped', [643]], - [[426, 427], 'valid'], - [[428, 428], 'mapped', [429]], - [[429, 429], 'valid'], - [[430, 430], 'mapped', [648]], - [[431, 431], 'mapped', [432]], - [[432, 432], 'valid'], - [[433, 433], 'mapped', [650]], - [[434, 434], 'mapped', [651]], - [[435, 435], 'mapped', [436]], - [[436, 436], 'valid'], - [[437, 437], 'mapped', [438]], - [[438, 438], 'valid'], - [[439, 439], 'mapped', [658]], - [[440, 440], 'mapped', [441]], - [[441, 443], 'valid'], - [[444, 444], 'mapped', [445]], - [[445, 451], 'valid'], - [[452, 454], 'mapped', [100, 382]], - [[455, 457], 'mapped', [108, 106]], - [[458, 460], 'mapped', [110, 106]], - [[461, 461], 'mapped', [462]], - [[462, 462], 'valid'], - [[463, 463], 'mapped', [464]], - [[464, 464], 'valid'], - [[465, 465], 'mapped', [466]], - [[466, 466], 'valid'], - [[467, 467], 'mapped', [468]], - [[468, 468], 'valid'], - [[469, 469], 'mapped', [470]], - [[470, 470], 'valid'], - [[471, 471], 'mapped', [472]], - [[472, 472], 'valid'], - [[473, 473], 'mapped', [474]], - [[474, 474], 'valid'], - [[475, 475], 'mapped', [476]], - [[476, 477], 'valid'], - [[478, 478], 'mapped', [479]], - [[479, 479], 'valid'], - [[480, 480], 'mapped', [481]], - [[481, 481], 'valid'], - [[482, 482], 'mapped', [483]], - [[483, 483], 'valid'], - [[484, 484], 'mapped', [485]], - [[485, 485], 'valid'], - [[486, 486], 'mapped', [487]], - [[487, 487], 'valid'], - [[488, 488], 'mapped', [489]], - [[489, 489], 'valid'], - [[490, 490], 'mapped', [491]], - [[491, 491], 'valid'], - [[492, 492], 'mapped', [493]], - [[493, 493], 'valid'], - [[494, 494], 'mapped', [495]], - [[495, 496], 'valid'], - [[497, 499], 'mapped', [100, 122]], - [[500, 500], 'mapped', [501]], - [[501, 501], 'valid'], - [[502, 502], 'mapped', [405]], - [[503, 503], 'mapped', [447]], - [[504, 504], 'mapped', [505]], - [[505, 505], 'valid'], - [[506, 506], 'mapped', [507]], - [[507, 507], 'valid'], - [[508, 508], 'mapped', [509]], - [[509, 509], 'valid'], - [[510, 510], 'mapped', [511]], - [[511, 511], 'valid'], - [[512, 512], 'mapped', [513]], - [[513, 513], 'valid'], - [[514, 514], 'mapped', [515]], - [[515, 515], 'valid'], - [[516, 516], 'mapped', [517]], - [[517, 517], 'valid'], - [[518, 518], 'mapped', [519]], - [[519, 519], 'valid'], - [[520, 520], 'mapped', [521]], - [[521, 521], 'valid'], - [[522, 522], 'mapped', [523]], - [[523, 523], 'valid'], - [[524, 524], 'mapped', [525]], - [[525, 525], 'valid'], - [[526, 526], 'mapped', [527]], - [[527, 527], 'valid'], - [[528, 528], 'mapped', [529]], - [[529, 529], 'valid'], - [[530, 530], 'mapped', [531]], - [[531, 531], 'valid'], - [[532, 532], 'mapped', [533]], - [[533, 533], 'valid'], - [[534, 534], 'mapped', [535]], - [[535, 535], 'valid'], - [[536, 536], 'mapped', [537]], - [[537, 537], 'valid'], - [[538, 538], 'mapped', [539]], - [[539, 539], 'valid'], - [[540, 540], 'mapped', [541]], - [[541, 541], 'valid'], - [[542, 542], 'mapped', [543]], - [[543, 543], 'valid'], - [[544, 544], 'mapped', [414]], - [[545, 545], 'valid'], - [[546, 546], 'mapped', [547]], - [[547, 547], 'valid'], - [[548, 548], 'mapped', [549]], - [[549, 549], 'valid'], - [[550, 550], 'mapped', [551]], - [[551, 551], 'valid'], - [[552, 552], 'mapped', [553]], - [[553, 553], 'valid'], - [[554, 554], 'mapped', [555]], - [[555, 555], 'valid'], - [[556, 556], 'mapped', [557]], - [[557, 557], 'valid'], - [[558, 558], 'mapped', [559]], - [[559, 559], 'valid'], - [[560, 560], 'mapped', [561]], - [[561, 561], 'valid'], - [[562, 562], 'mapped', [563]], - [[563, 563], 'valid'], - [[564, 566], 'valid'], - [[567, 569], 'valid'], - [[570, 570], 'mapped', [11365]], - [[571, 571], 'mapped', [572]], - [[572, 572], 'valid'], - [[573, 573], 'mapped', [410]], - [[574, 574], 'mapped', [11366]], - [[575, 576], 'valid'], - [[577, 577], 'mapped', [578]], - [[578, 578], 'valid'], - [[579, 579], 'mapped', [384]], - [[580, 580], 'mapped', [649]], - [[581, 581], 'mapped', [652]], - [[582, 582], 'mapped', [583]], - [[583, 583], 'valid'], - [[584, 584], 'mapped', [585]], - [[585, 585], 'valid'], - [[586, 586], 'mapped', [587]], - [[587, 587], 'valid'], - [[588, 588], 'mapped', [589]], - [[589, 589], 'valid'], - [[590, 590], 'mapped', [591]], - [[591, 591], 'valid'], - [[592, 680], 'valid'], - [[681, 685], 'valid'], - [[686, 687], 'valid'], - [[688, 688], 'mapped', [104]], - [[689, 689], 'mapped', [614]], - [[690, 690], 'mapped', [106]], - [[691, 691], 'mapped', [114]], - [[692, 692], 'mapped', [633]], - [[693, 693], 'mapped', [635]], - [[694, 694], 'mapped', [641]], - [[695, 695], 'mapped', [119]], - [[696, 696], 'mapped', [121]], - [[697, 705], 'valid'], - [[706, 709], 'valid', [], 'NV8'], - [[710, 721], 'valid'], - [[722, 727], 'valid', [], 'NV8'], - [[728, 728], 'disallowed_STD3_mapped', [32, 774]], - [[729, 729], 'disallowed_STD3_mapped', [32, 775]], - [[730, 730], 'disallowed_STD3_mapped', [32, 778]], - [[731, 731], 'disallowed_STD3_mapped', [32, 808]], - [[732, 732], 'disallowed_STD3_mapped', [32, 771]], - [[733, 733], 'disallowed_STD3_mapped', [32, 779]], - [[734, 734], 'valid', [], 'NV8'], - [[735, 735], 'valid', [], 'NV8'], - [[736, 736], 'mapped', [611]], - [[737, 737], 'mapped', [108]], - [[738, 738], 'mapped', [115]], - [[739, 739], 'mapped', [120]], - [[740, 740], 'mapped', [661]], - [[741, 745], 'valid', [], 'NV8'], - [[746, 747], 'valid', [], 'NV8'], - [[748, 748], 'valid'], - [[749, 749], 'valid', [], 'NV8'], - [[750, 750], 'valid'], - [[751, 767], 'valid', [], 'NV8'], - [[768, 831], 'valid'], - [[832, 832], 'mapped', [768]], - [[833, 833], 'mapped', [769]], - [[834, 834], 'valid'], - [[835, 835], 'mapped', [787]], - [[836, 836], 'mapped', [776, 769]], - [[837, 837], 'mapped', [953]], - [[838, 846], 'valid'], - [[847, 847], 'ignored'], - [[848, 855], 'valid'], - [[856, 860], 'valid'], - [[861, 863], 'valid'], - [[864, 865], 'valid'], - [[866, 866], 'valid'], - [[867, 879], 'valid'], - [[880, 880], 'mapped', [881]], - [[881, 881], 'valid'], - [[882, 882], 'mapped', [883]], - [[883, 883], 'valid'], - [[884, 884], 'mapped', [697]], - [[885, 885], 'valid'], - [[886, 886], 'mapped', [887]], - [[887, 887], 'valid'], - [[888, 889], 'disallowed'], - [[890, 890], 'disallowed_STD3_mapped', [32, 953]], - [[891, 893], 'valid'], - [[894, 894], 'disallowed_STD3_mapped', [59]], - [[895, 895], 'mapped', [1011]], - [[896, 899], 'disallowed'], - [[900, 900], 'disallowed_STD3_mapped', [32, 769]], - [[901, 901], 'disallowed_STD3_mapped', [32, 776, 769]], - [[902, 902], 'mapped', [940]], - [[903, 903], 'mapped', [183]], - [[904, 904], 'mapped', [941]], - [[905, 905], 'mapped', [942]], - [[906, 906], 'mapped', [943]], - [[907, 907], 'disallowed'], - [[908, 908], 'mapped', [972]], - [[909, 909], 'disallowed'], - [[910, 910], 'mapped', [973]], - [[911, 911], 'mapped', [974]], - [[912, 912], 'valid'], - [[913, 913], 'mapped', [945]], - [[914, 914], 'mapped', [946]], - [[915, 915], 'mapped', [947]], - [[916, 916], 'mapped', [948]], - [[917, 917], 'mapped', [949]], - [[918, 918], 'mapped', [950]], - [[919, 919], 'mapped', [951]], - [[920, 920], 'mapped', [952]], - [[921, 921], 'mapped', [953]], - [[922, 922], 'mapped', [954]], - [[923, 923], 'mapped', [955]], - [[924, 924], 'mapped', [956]], - [[925, 925], 'mapped', [957]], - [[926, 926], 'mapped', [958]], - [[927, 927], 'mapped', [959]], - [[928, 928], 'mapped', [960]], - [[929, 929], 'mapped', [961]], - [[930, 930], 'disallowed'], - [[931, 931], 'mapped', [963]], - [[932, 932], 'mapped', [964]], - [[933, 933], 'mapped', [965]], - [[934, 934], 'mapped', [966]], - [[935, 935], 'mapped', [967]], - [[936, 936], 'mapped', [968]], - [[937, 937], 'mapped', [969]], - [[938, 938], 'mapped', [970]], - [[939, 939], 'mapped', [971]], - [[940, 961], 'valid'], - [[962, 962], 'deviation', [963]], - [[963, 974], 'valid'], - [[975, 975], 'mapped', [983]], - [[976, 976], 'mapped', [946]], - [[977, 977], 'mapped', [952]], - [[978, 978], 'mapped', [965]], - [[979, 979], 'mapped', [973]], - [[980, 980], 'mapped', [971]], - [[981, 981], 'mapped', [966]], - [[982, 982], 'mapped', [960]], - [[983, 983], 'valid'], - [[984, 984], 'mapped', [985]], - [[985, 985], 'valid'], - [[986, 986], 'mapped', [987]], - [[987, 987], 'valid'], - [[988, 988], 'mapped', [989]], - [[989, 989], 'valid'], - [[990, 990], 'mapped', [991]], - [[991, 991], 'valid'], - [[992, 992], 'mapped', [993]], - [[993, 993], 'valid'], - [[994, 994], 'mapped', [995]], - [[995, 995], 'valid'], - [[996, 996], 'mapped', [997]], - [[997, 997], 'valid'], - [[998, 998], 'mapped', [999]], - [[999, 999], 'valid'], - [[1e3, 1e3], 'mapped', [1001]], - [[1001, 1001], 'valid'], - [[1002, 1002], 'mapped', [1003]], - [[1003, 1003], 'valid'], - [[1004, 1004], 'mapped', [1005]], - [[1005, 1005], 'valid'], - [[1006, 1006], 'mapped', [1007]], - [[1007, 1007], 'valid'], - [[1008, 1008], 'mapped', [954]], - [[1009, 1009], 'mapped', [961]], - [[1010, 1010], 'mapped', [963]], - [[1011, 1011], 'valid'], - [[1012, 1012], 'mapped', [952]], - [[1013, 1013], 'mapped', [949]], - [[1014, 1014], 'valid', [], 'NV8'], - [[1015, 1015], 'mapped', [1016]], - [[1016, 1016], 'valid'], - [[1017, 1017], 'mapped', [963]], - [[1018, 1018], 'mapped', [1019]], - [[1019, 1019], 'valid'], - [[1020, 1020], 'valid'], - [[1021, 1021], 'mapped', [891]], - [[1022, 1022], 'mapped', [892]], - [[1023, 1023], 'mapped', [893]], - [[1024, 1024], 'mapped', [1104]], - [[1025, 1025], 'mapped', [1105]], - [[1026, 1026], 'mapped', [1106]], - [[1027, 1027], 'mapped', [1107]], - [[1028, 1028], 'mapped', [1108]], - [[1029, 1029], 'mapped', [1109]], - [[1030, 1030], 'mapped', [1110]], - [[1031, 1031], 'mapped', [1111]], - [[1032, 1032], 'mapped', [1112]], - [[1033, 1033], 'mapped', [1113]], - [[1034, 1034], 'mapped', [1114]], - [[1035, 1035], 'mapped', [1115]], - [[1036, 1036], 'mapped', [1116]], - [[1037, 1037], 'mapped', [1117]], - [[1038, 1038], 'mapped', [1118]], - [[1039, 1039], 'mapped', [1119]], - [[1040, 1040], 'mapped', [1072]], - [[1041, 1041], 'mapped', [1073]], - [[1042, 1042], 'mapped', [1074]], - [[1043, 1043], 'mapped', [1075]], - [[1044, 1044], 'mapped', [1076]], - [[1045, 1045], 'mapped', [1077]], - [[1046, 1046], 'mapped', [1078]], - [[1047, 1047], 'mapped', [1079]], - [[1048, 1048], 'mapped', [1080]], - [[1049, 1049], 'mapped', [1081]], - [[1050, 1050], 'mapped', [1082]], - [[1051, 1051], 'mapped', [1083]], - [[1052, 1052], 'mapped', [1084]], - [[1053, 1053], 'mapped', [1085]], - [[1054, 1054], 'mapped', [1086]], - [[1055, 1055], 'mapped', [1087]], - [[1056, 1056], 'mapped', [1088]], - [[1057, 1057], 'mapped', [1089]], - [[1058, 1058], 'mapped', [1090]], - [[1059, 1059], 'mapped', [1091]], - [[1060, 1060], 'mapped', [1092]], - [[1061, 1061], 'mapped', [1093]], - [[1062, 1062], 'mapped', [1094]], - [[1063, 1063], 'mapped', [1095]], - [[1064, 1064], 'mapped', [1096]], - [[1065, 1065], 'mapped', [1097]], - [[1066, 1066], 'mapped', [1098]], - [[1067, 1067], 'mapped', [1099]], - [[1068, 1068], 'mapped', [1100]], - [[1069, 1069], 'mapped', [1101]], - [[1070, 1070], 'mapped', [1102]], - [[1071, 1071], 'mapped', [1103]], - [[1072, 1103], 'valid'], - [[1104, 1104], 'valid'], - [[1105, 1116], 'valid'], - [[1117, 1117], 'valid'], - [[1118, 1119], 'valid'], - [[1120, 1120], 'mapped', [1121]], - [[1121, 1121], 'valid'], - [[1122, 1122], 'mapped', [1123]], - [[1123, 1123], 'valid'], - [[1124, 1124], 'mapped', [1125]], - [[1125, 1125], 'valid'], - [[1126, 1126], 'mapped', [1127]], - [[1127, 1127], 'valid'], - [[1128, 1128], 'mapped', [1129]], - [[1129, 1129], 'valid'], - [[1130, 1130], 'mapped', [1131]], - [[1131, 1131], 'valid'], - [[1132, 1132], 'mapped', [1133]], - [[1133, 1133], 'valid'], - [[1134, 1134], 'mapped', [1135]], - [[1135, 1135], 'valid'], - [[1136, 1136], 'mapped', [1137]], - [[1137, 1137], 'valid'], - [[1138, 1138], 'mapped', [1139]], - [[1139, 1139], 'valid'], - [[1140, 1140], 'mapped', [1141]], - [[1141, 1141], 'valid'], - [[1142, 1142], 'mapped', [1143]], - [[1143, 1143], 'valid'], - [[1144, 1144], 'mapped', [1145]], - [[1145, 1145], 'valid'], - [[1146, 1146], 'mapped', [1147]], - [[1147, 1147], 'valid'], - [[1148, 1148], 'mapped', [1149]], - [[1149, 1149], 'valid'], - [[1150, 1150], 'mapped', [1151]], - [[1151, 1151], 'valid'], - [[1152, 1152], 'mapped', [1153]], - [[1153, 1153], 'valid'], - [[1154, 1154], 'valid', [], 'NV8'], - [[1155, 1158], 'valid'], - [[1159, 1159], 'valid'], - [[1160, 1161], 'valid', [], 'NV8'], - [[1162, 1162], 'mapped', [1163]], - [[1163, 1163], 'valid'], - [[1164, 1164], 'mapped', [1165]], - [[1165, 1165], 'valid'], - [[1166, 1166], 'mapped', [1167]], - [[1167, 1167], 'valid'], - [[1168, 1168], 'mapped', [1169]], - [[1169, 1169], 'valid'], - [[1170, 1170], 'mapped', [1171]], - [[1171, 1171], 'valid'], - [[1172, 1172], 'mapped', [1173]], - [[1173, 1173], 'valid'], - [[1174, 1174], 'mapped', [1175]], - [[1175, 1175], 'valid'], - [[1176, 1176], 'mapped', [1177]], - [[1177, 1177], 'valid'], - [[1178, 1178], 'mapped', [1179]], - [[1179, 1179], 'valid'], - [[1180, 1180], 'mapped', [1181]], - [[1181, 1181], 'valid'], - [[1182, 1182], 'mapped', [1183]], - [[1183, 1183], 'valid'], - [[1184, 1184], 'mapped', [1185]], - [[1185, 1185], 'valid'], - [[1186, 1186], 'mapped', [1187]], - [[1187, 1187], 'valid'], - [[1188, 1188], 'mapped', [1189]], - [[1189, 1189], 'valid'], - [[1190, 1190], 'mapped', [1191]], - [[1191, 1191], 'valid'], - [[1192, 1192], 'mapped', [1193]], - [[1193, 1193], 'valid'], - [[1194, 1194], 'mapped', [1195]], - [[1195, 1195], 'valid'], - [[1196, 1196], 'mapped', [1197]], - [[1197, 1197], 'valid'], - [[1198, 1198], 'mapped', [1199]], - [[1199, 1199], 'valid'], - [[1200, 1200], 'mapped', [1201]], - [[1201, 1201], 'valid'], - [[1202, 1202], 'mapped', [1203]], - [[1203, 1203], 'valid'], - [[1204, 1204], 'mapped', [1205]], - [[1205, 1205], 'valid'], - [[1206, 1206], 'mapped', [1207]], - [[1207, 1207], 'valid'], - [[1208, 1208], 'mapped', [1209]], - [[1209, 1209], 'valid'], - [[1210, 1210], 'mapped', [1211]], - [[1211, 1211], 'valid'], - [[1212, 1212], 'mapped', [1213]], - [[1213, 1213], 'valid'], - [[1214, 1214], 'mapped', [1215]], - [[1215, 1215], 'valid'], - [[1216, 1216], 'disallowed'], - [[1217, 1217], 'mapped', [1218]], - [[1218, 1218], 'valid'], - [[1219, 1219], 'mapped', [1220]], - [[1220, 1220], 'valid'], - [[1221, 1221], 'mapped', [1222]], - [[1222, 1222], 'valid'], - [[1223, 1223], 'mapped', [1224]], - [[1224, 1224], 'valid'], - [[1225, 1225], 'mapped', [1226]], - [[1226, 1226], 'valid'], - [[1227, 1227], 'mapped', [1228]], - [[1228, 1228], 'valid'], - [[1229, 1229], 'mapped', [1230]], - [[1230, 1230], 'valid'], - [[1231, 1231], 'valid'], - [[1232, 1232], 'mapped', [1233]], - [[1233, 1233], 'valid'], - [[1234, 1234], 'mapped', [1235]], - [[1235, 1235], 'valid'], - [[1236, 1236], 'mapped', [1237]], - [[1237, 1237], 'valid'], - [[1238, 1238], 'mapped', [1239]], - [[1239, 1239], 'valid'], - [[1240, 1240], 'mapped', [1241]], - [[1241, 1241], 'valid'], - [[1242, 1242], 'mapped', [1243]], - [[1243, 1243], 'valid'], - [[1244, 1244], 'mapped', [1245]], - [[1245, 1245], 'valid'], - [[1246, 1246], 'mapped', [1247]], - [[1247, 1247], 'valid'], - [[1248, 1248], 'mapped', [1249]], - [[1249, 1249], 'valid'], - [[1250, 1250], 'mapped', [1251]], - [[1251, 1251], 'valid'], - [[1252, 1252], 'mapped', [1253]], - [[1253, 1253], 'valid'], - [[1254, 1254], 'mapped', [1255]], - [[1255, 1255], 'valid'], - [[1256, 1256], 'mapped', [1257]], - [[1257, 1257], 'valid'], - [[1258, 1258], 'mapped', [1259]], - [[1259, 1259], 'valid'], - [[1260, 1260], 'mapped', [1261]], - [[1261, 1261], 'valid'], - [[1262, 1262], 'mapped', [1263]], - [[1263, 1263], 'valid'], - [[1264, 1264], 'mapped', [1265]], - [[1265, 1265], 'valid'], - [[1266, 1266], 'mapped', [1267]], - [[1267, 1267], 'valid'], - [[1268, 1268], 'mapped', [1269]], - [[1269, 1269], 'valid'], - [[1270, 1270], 'mapped', [1271]], - [[1271, 1271], 'valid'], - [[1272, 1272], 'mapped', [1273]], - [[1273, 1273], 'valid'], - [[1274, 1274], 'mapped', [1275]], - [[1275, 1275], 'valid'], - [[1276, 1276], 'mapped', [1277]], - [[1277, 1277], 'valid'], - [[1278, 1278], 'mapped', [1279]], - [[1279, 1279], 'valid'], - [[1280, 1280], 'mapped', [1281]], - [[1281, 1281], 'valid'], - [[1282, 1282], 'mapped', [1283]], - [[1283, 1283], 'valid'], - [[1284, 1284], 'mapped', [1285]], - [[1285, 1285], 'valid'], - [[1286, 1286], 'mapped', [1287]], - [[1287, 1287], 'valid'], - [[1288, 1288], 'mapped', [1289]], - [[1289, 1289], 'valid'], - [[1290, 1290], 'mapped', [1291]], - [[1291, 1291], 'valid'], - [[1292, 1292], 'mapped', [1293]], - [[1293, 1293], 'valid'], - [[1294, 1294], 'mapped', [1295]], - [[1295, 1295], 'valid'], - [[1296, 1296], 'mapped', [1297]], - [[1297, 1297], 'valid'], - [[1298, 1298], 'mapped', [1299]], - [[1299, 1299], 'valid'], - [[1300, 1300], 'mapped', [1301]], - [[1301, 1301], 'valid'], - [[1302, 1302], 'mapped', [1303]], - [[1303, 1303], 'valid'], - [[1304, 1304], 'mapped', [1305]], - [[1305, 1305], 'valid'], - [[1306, 1306], 'mapped', [1307]], - [[1307, 1307], 'valid'], - [[1308, 1308], 'mapped', [1309]], - [[1309, 1309], 'valid'], - [[1310, 1310], 'mapped', [1311]], - [[1311, 1311], 'valid'], - [[1312, 1312], 'mapped', [1313]], - [[1313, 1313], 'valid'], - [[1314, 1314], 'mapped', [1315]], - [[1315, 1315], 'valid'], - [[1316, 1316], 'mapped', [1317]], - [[1317, 1317], 'valid'], - [[1318, 1318], 'mapped', [1319]], - [[1319, 1319], 'valid'], - [[1320, 1320], 'mapped', [1321]], - [[1321, 1321], 'valid'], - [[1322, 1322], 'mapped', [1323]], - [[1323, 1323], 'valid'], - [[1324, 1324], 'mapped', [1325]], - [[1325, 1325], 'valid'], - [[1326, 1326], 'mapped', [1327]], - [[1327, 1327], 'valid'], - [[1328, 1328], 'disallowed'], - [[1329, 1329], 'mapped', [1377]], - [[1330, 1330], 'mapped', [1378]], - [[1331, 1331], 'mapped', [1379]], - [[1332, 1332], 'mapped', [1380]], - [[1333, 1333], 'mapped', [1381]], - [[1334, 1334], 'mapped', [1382]], - [[1335, 1335], 'mapped', [1383]], - [[1336, 1336], 'mapped', [1384]], - [[1337, 1337], 'mapped', [1385]], - [[1338, 1338], 'mapped', [1386]], - [[1339, 1339], 'mapped', [1387]], - [[1340, 1340], 'mapped', [1388]], - [[1341, 1341], 'mapped', [1389]], - [[1342, 1342], 'mapped', [1390]], - [[1343, 1343], 'mapped', [1391]], - [[1344, 1344], 'mapped', [1392]], - [[1345, 1345], 'mapped', [1393]], - [[1346, 1346], 'mapped', [1394]], - [[1347, 1347], 'mapped', [1395]], - [[1348, 1348], 'mapped', [1396]], - [[1349, 1349], 'mapped', [1397]], - [[1350, 1350], 'mapped', [1398]], - [[1351, 1351], 'mapped', [1399]], - [[1352, 1352], 'mapped', [1400]], - [[1353, 1353], 'mapped', [1401]], - [[1354, 1354], 'mapped', [1402]], - [[1355, 1355], 'mapped', [1403]], - [[1356, 1356], 'mapped', [1404]], - [[1357, 1357], 'mapped', [1405]], - [[1358, 1358], 'mapped', [1406]], - [[1359, 1359], 'mapped', [1407]], - [[1360, 1360], 'mapped', [1408]], - [[1361, 1361], 'mapped', [1409]], - [[1362, 1362], 'mapped', [1410]], - [[1363, 1363], 'mapped', [1411]], - [[1364, 1364], 'mapped', [1412]], - [[1365, 1365], 'mapped', [1413]], - [[1366, 1366], 'mapped', [1414]], - [[1367, 1368], 'disallowed'], - [[1369, 1369], 'valid'], - [[1370, 1375], 'valid', [], 'NV8'], - [[1376, 1376], 'disallowed'], - [[1377, 1414], 'valid'], - [[1415, 1415], 'mapped', [1381, 1410]], - [[1416, 1416], 'disallowed'], - [[1417, 1417], 'valid', [], 'NV8'], - [[1418, 1418], 'valid', [], 'NV8'], - [[1419, 1420], 'disallowed'], - [[1421, 1422], 'valid', [], 'NV8'], - [[1423, 1423], 'valid', [], 'NV8'], - [[1424, 1424], 'disallowed'], - [[1425, 1441], 'valid'], - [[1442, 1442], 'valid'], - [[1443, 1455], 'valid'], - [[1456, 1465], 'valid'], - [[1466, 1466], 'valid'], - [[1467, 1469], 'valid'], - [[1470, 1470], 'valid', [], 'NV8'], - [[1471, 1471], 'valid'], - [[1472, 1472], 'valid', [], 'NV8'], - [[1473, 1474], 'valid'], - [[1475, 1475], 'valid', [], 'NV8'], - [[1476, 1476], 'valid'], - [[1477, 1477], 'valid'], - [[1478, 1478], 'valid', [], 'NV8'], - [[1479, 1479], 'valid'], - [[1480, 1487], 'disallowed'], - [[1488, 1514], 'valid'], - [[1515, 1519], 'disallowed'], - [[1520, 1524], 'valid'], - [[1525, 1535], 'disallowed'], - [[1536, 1539], 'disallowed'], - [[1540, 1540], 'disallowed'], - [[1541, 1541], 'disallowed'], - [[1542, 1546], 'valid', [], 'NV8'], - [[1547, 1547], 'valid', [], 'NV8'], - [[1548, 1548], 'valid', [], 'NV8'], - [[1549, 1551], 'valid', [], 'NV8'], - [[1552, 1557], 'valid'], - [[1558, 1562], 'valid'], - [[1563, 1563], 'valid', [], 'NV8'], - [[1564, 1564], 'disallowed'], - [[1565, 1565], 'disallowed'], - [[1566, 1566], 'valid', [], 'NV8'], - [[1567, 1567], 'valid', [], 'NV8'], - [[1568, 1568], 'valid'], - [[1569, 1594], 'valid'], - [[1595, 1599], 'valid'], - [[1600, 1600], 'valid', [], 'NV8'], - [[1601, 1618], 'valid'], - [[1619, 1621], 'valid'], - [[1622, 1624], 'valid'], - [[1625, 1630], 'valid'], - [[1631, 1631], 'valid'], - [[1632, 1641], 'valid'], - [[1642, 1645], 'valid', [], 'NV8'], - [[1646, 1647], 'valid'], - [[1648, 1652], 'valid'], - [[1653, 1653], 'mapped', [1575, 1652]], - [[1654, 1654], 'mapped', [1608, 1652]], - [[1655, 1655], 'mapped', [1735, 1652]], - [[1656, 1656], 'mapped', [1610, 1652]], - [[1657, 1719], 'valid'], - [[1720, 1721], 'valid'], - [[1722, 1726], 'valid'], - [[1727, 1727], 'valid'], - [[1728, 1742], 'valid'], - [[1743, 1743], 'valid'], - [[1744, 1747], 'valid'], - [[1748, 1748], 'valid', [], 'NV8'], - [[1749, 1756], 'valid'], - [[1757, 1757], 'disallowed'], - [[1758, 1758], 'valid', [], 'NV8'], - [[1759, 1768], 'valid'], - [[1769, 1769], 'valid', [], 'NV8'], - [[1770, 1773], 'valid'], - [[1774, 1775], 'valid'], - [[1776, 1785], 'valid'], - [[1786, 1790], 'valid'], - [[1791, 1791], 'valid'], - [[1792, 1805], 'valid', [], 'NV8'], - [[1806, 1806], 'disallowed'], - [[1807, 1807], 'disallowed'], - [[1808, 1836], 'valid'], - [[1837, 1839], 'valid'], - [[1840, 1866], 'valid'], - [[1867, 1868], 'disallowed'], - [[1869, 1871], 'valid'], - [[1872, 1901], 'valid'], - [[1902, 1919], 'valid'], - [[1920, 1968], 'valid'], - [[1969, 1969], 'valid'], - [[1970, 1983], 'disallowed'], - [[1984, 2037], 'valid'], - [[2038, 2042], 'valid', [], 'NV8'], - [[2043, 2047], 'disallowed'], - [[2048, 2093], 'valid'], - [[2094, 2095], 'disallowed'], - [[2096, 2110], 'valid', [], 'NV8'], - [[2111, 2111], 'disallowed'], - [[2112, 2139], 'valid'], - [[2140, 2141], 'disallowed'], - [[2142, 2142], 'valid', [], 'NV8'], - [[2143, 2207], 'disallowed'], - [[2208, 2208], 'valid'], - [[2209, 2209], 'valid'], - [[2210, 2220], 'valid'], - [[2221, 2226], 'valid'], - [[2227, 2228], 'valid'], - [[2229, 2274], 'disallowed'], - [[2275, 2275], 'valid'], - [[2276, 2302], 'valid'], - [[2303, 2303], 'valid'], - [[2304, 2304], 'valid'], - [[2305, 2307], 'valid'], - [[2308, 2308], 'valid'], - [[2309, 2361], 'valid'], - [[2362, 2363], 'valid'], - [[2364, 2381], 'valid'], - [[2382, 2382], 'valid'], - [[2383, 2383], 'valid'], - [[2384, 2388], 'valid'], - [[2389, 2389], 'valid'], - [[2390, 2391], 'valid'], - [[2392, 2392], 'mapped', [2325, 2364]], - [[2393, 2393], 'mapped', [2326, 2364]], - [[2394, 2394], 'mapped', [2327, 2364]], - [[2395, 2395], 'mapped', [2332, 2364]], - [[2396, 2396], 'mapped', [2337, 2364]], - [[2397, 2397], 'mapped', [2338, 2364]], - [[2398, 2398], 'mapped', [2347, 2364]], - [[2399, 2399], 'mapped', [2351, 2364]], - [[2400, 2403], 'valid'], - [[2404, 2405], 'valid', [], 'NV8'], - [[2406, 2415], 'valid'], - [[2416, 2416], 'valid', [], 'NV8'], - [[2417, 2418], 'valid'], - [[2419, 2423], 'valid'], - [[2424, 2424], 'valid'], - [[2425, 2426], 'valid'], - [[2427, 2428], 'valid'], - [[2429, 2429], 'valid'], - [[2430, 2431], 'valid'], - [[2432, 2432], 'valid'], - [[2433, 2435], 'valid'], - [[2436, 2436], 'disallowed'], - [[2437, 2444], 'valid'], - [[2445, 2446], 'disallowed'], - [[2447, 2448], 'valid'], - [[2449, 2450], 'disallowed'], - [[2451, 2472], 'valid'], - [[2473, 2473], 'disallowed'], - [[2474, 2480], 'valid'], - [[2481, 2481], 'disallowed'], - [[2482, 2482], 'valid'], - [[2483, 2485], 'disallowed'], - [[2486, 2489], 'valid'], - [[2490, 2491], 'disallowed'], - [[2492, 2492], 'valid'], - [[2493, 2493], 'valid'], - [[2494, 2500], 'valid'], - [[2501, 2502], 'disallowed'], - [[2503, 2504], 'valid'], - [[2505, 2506], 'disallowed'], - [[2507, 2509], 'valid'], - [[2510, 2510], 'valid'], - [[2511, 2518], 'disallowed'], - [[2519, 2519], 'valid'], - [[2520, 2523], 'disallowed'], - [[2524, 2524], 'mapped', [2465, 2492]], - [[2525, 2525], 'mapped', [2466, 2492]], - [[2526, 2526], 'disallowed'], - [[2527, 2527], 'mapped', [2479, 2492]], - [[2528, 2531], 'valid'], - [[2532, 2533], 'disallowed'], - [[2534, 2545], 'valid'], - [[2546, 2554], 'valid', [], 'NV8'], - [[2555, 2555], 'valid', [], 'NV8'], - [[2556, 2560], 'disallowed'], - [[2561, 2561], 'valid'], - [[2562, 2562], 'valid'], - [[2563, 2563], 'valid'], - [[2564, 2564], 'disallowed'], - [[2565, 2570], 'valid'], - [[2571, 2574], 'disallowed'], - [[2575, 2576], 'valid'], - [[2577, 2578], 'disallowed'], - [[2579, 2600], 'valid'], - [[2601, 2601], 'disallowed'], - [[2602, 2608], 'valid'], - [[2609, 2609], 'disallowed'], - [[2610, 2610], 'valid'], - [[2611, 2611], 'mapped', [2610, 2620]], - [[2612, 2612], 'disallowed'], - [[2613, 2613], 'valid'], - [[2614, 2614], 'mapped', [2616, 2620]], - [[2615, 2615], 'disallowed'], - [[2616, 2617], 'valid'], - [[2618, 2619], 'disallowed'], - [[2620, 2620], 'valid'], - [[2621, 2621], 'disallowed'], - [[2622, 2626], 'valid'], - [[2627, 2630], 'disallowed'], - [[2631, 2632], 'valid'], - [[2633, 2634], 'disallowed'], - [[2635, 2637], 'valid'], - [[2638, 2640], 'disallowed'], - [[2641, 2641], 'valid'], - [[2642, 2648], 'disallowed'], - [[2649, 2649], 'mapped', [2582, 2620]], - [[2650, 2650], 'mapped', [2583, 2620]], - [[2651, 2651], 'mapped', [2588, 2620]], - [[2652, 2652], 'valid'], - [[2653, 2653], 'disallowed'], - [[2654, 2654], 'mapped', [2603, 2620]], - [[2655, 2661], 'disallowed'], - [[2662, 2676], 'valid'], - [[2677, 2677], 'valid'], - [[2678, 2688], 'disallowed'], - [[2689, 2691], 'valid'], - [[2692, 2692], 'disallowed'], - [[2693, 2699], 'valid'], - [[2700, 2700], 'valid'], - [[2701, 2701], 'valid'], - [[2702, 2702], 'disallowed'], - [[2703, 2705], 'valid'], - [[2706, 2706], 'disallowed'], - [[2707, 2728], 'valid'], - [[2729, 2729], 'disallowed'], - [[2730, 2736], 'valid'], - [[2737, 2737], 'disallowed'], - [[2738, 2739], 'valid'], - [[2740, 2740], 'disallowed'], - [[2741, 2745], 'valid'], - [[2746, 2747], 'disallowed'], - [[2748, 2757], 'valid'], - [[2758, 2758], 'disallowed'], - [[2759, 2761], 'valid'], - [[2762, 2762], 'disallowed'], - [[2763, 2765], 'valid'], - [[2766, 2767], 'disallowed'], - [[2768, 2768], 'valid'], - [[2769, 2783], 'disallowed'], - [[2784, 2784], 'valid'], - [[2785, 2787], 'valid'], - [[2788, 2789], 'disallowed'], - [[2790, 2799], 'valid'], - [[2800, 2800], 'valid', [], 'NV8'], - [[2801, 2801], 'valid', [], 'NV8'], - [[2802, 2808], 'disallowed'], - [[2809, 2809], 'valid'], - [[2810, 2816], 'disallowed'], - [[2817, 2819], 'valid'], - [[2820, 2820], 'disallowed'], - [[2821, 2828], 'valid'], - [[2829, 2830], 'disallowed'], - [[2831, 2832], 'valid'], - [[2833, 2834], 'disallowed'], - [[2835, 2856], 'valid'], - [[2857, 2857], 'disallowed'], - [[2858, 2864], 'valid'], - [[2865, 2865], 'disallowed'], - [[2866, 2867], 'valid'], - [[2868, 2868], 'disallowed'], - [[2869, 2869], 'valid'], - [[2870, 2873], 'valid'], - [[2874, 2875], 'disallowed'], - [[2876, 2883], 'valid'], - [[2884, 2884], 'valid'], - [[2885, 2886], 'disallowed'], - [[2887, 2888], 'valid'], - [[2889, 2890], 'disallowed'], - [[2891, 2893], 'valid'], - [[2894, 2901], 'disallowed'], - [[2902, 2903], 'valid'], - [[2904, 2907], 'disallowed'], - [[2908, 2908], 'mapped', [2849, 2876]], - [[2909, 2909], 'mapped', [2850, 2876]], - [[2910, 2910], 'disallowed'], - [[2911, 2913], 'valid'], - [[2914, 2915], 'valid'], - [[2916, 2917], 'disallowed'], - [[2918, 2927], 'valid'], - [[2928, 2928], 'valid', [], 'NV8'], - [[2929, 2929], 'valid'], - [[2930, 2935], 'valid', [], 'NV8'], - [[2936, 2945], 'disallowed'], - [[2946, 2947], 'valid'], - [[2948, 2948], 'disallowed'], - [[2949, 2954], 'valid'], - [[2955, 2957], 'disallowed'], - [[2958, 2960], 'valid'], - [[2961, 2961], 'disallowed'], - [[2962, 2965], 'valid'], - [[2966, 2968], 'disallowed'], - [[2969, 2970], 'valid'], - [[2971, 2971], 'disallowed'], - [[2972, 2972], 'valid'], - [[2973, 2973], 'disallowed'], - [[2974, 2975], 'valid'], - [[2976, 2978], 'disallowed'], - [[2979, 2980], 'valid'], - [[2981, 2983], 'disallowed'], - [[2984, 2986], 'valid'], - [[2987, 2989], 'disallowed'], - [[2990, 2997], 'valid'], - [[2998, 2998], 'valid'], - [[2999, 3001], 'valid'], - [[3002, 3005], 'disallowed'], - [[3006, 3010], 'valid'], - [[3011, 3013], 'disallowed'], - [[3014, 3016], 'valid'], - [[3017, 3017], 'disallowed'], - [[3018, 3021], 'valid'], - [[3022, 3023], 'disallowed'], - [[3024, 3024], 'valid'], - [[3025, 3030], 'disallowed'], - [[3031, 3031], 'valid'], - [[3032, 3045], 'disallowed'], - [[3046, 3046], 'valid'], - [[3047, 3055], 'valid'], - [[3056, 3058], 'valid', [], 'NV8'], - [[3059, 3066], 'valid', [], 'NV8'], - [[3067, 3071], 'disallowed'], - [[3072, 3072], 'valid'], - [[3073, 3075], 'valid'], - [[3076, 3076], 'disallowed'], - [[3077, 3084], 'valid'], - [[3085, 3085], 'disallowed'], - [[3086, 3088], 'valid'], - [[3089, 3089], 'disallowed'], - [[3090, 3112], 'valid'], - [[3113, 3113], 'disallowed'], - [[3114, 3123], 'valid'], - [[3124, 3124], 'valid'], - [[3125, 3129], 'valid'], - [[3130, 3132], 'disallowed'], - [[3133, 3133], 'valid'], - [[3134, 3140], 'valid'], - [[3141, 3141], 'disallowed'], - [[3142, 3144], 'valid'], - [[3145, 3145], 'disallowed'], - [[3146, 3149], 'valid'], - [[3150, 3156], 'disallowed'], - [[3157, 3158], 'valid'], - [[3159, 3159], 'disallowed'], - [[3160, 3161], 'valid'], - [[3162, 3162], 'valid'], - [[3163, 3167], 'disallowed'], - [[3168, 3169], 'valid'], - [[3170, 3171], 'valid'], - [[3172, 3173], 'disallowed'], - [[3174, 3183], 'valid'], - [[3184, 3191], 'disallowed'], - [[3192, 3199], 'valid', [], 'NV8'], - [[3200, 3200], 'disallowed'], - [[3201, 3201], 'valid'], - [[3202, 3203], 'valid'], - [[3204, 3204], 'disallowed'], - [[3205, 3212], 'valid'], - [[3213, 3213], 'disallowed'], - [[3214, 3216], 'valid'], - [[3217, 3217], 'disallowed'], - [[3218, 3240], 'valid'], - [[3241, 3241], 'disallowed'], - [[3242, 3251], 'valid'], - [[3252, 3252], 'disallowed'], - [[3253, 3257], 'valid'], - [[3258, 3259], 'disallowed'], - [[3260, 3261], 'valid'], - [[3262, 3268], 'valid'], - [[3269, 3269], 'disallowed'], - [[3270, 3272], 'valid'], - [[3273, 3273], 'disallowed'], - [[3274, 3277], 'valid'], - [[3278, 3284], 'disallowed'], - [[3285, 3286], 'valid'], - [[3287, 3293], 'disallowed'], - [[3294, 3294], 'valid'], - [[3295, 3295], 'disallowed'], - [[3296, 3297], 'valid'], - [[3298, 3299], 'valid'], - [[3300, 3301], 'disallowed'], - [[3302, 3311], 'valid'], - [[3312, 3312], 'disallowed'], - [[3313, 3314], 'valid'], - [[3315, 3328], 'disallowed'], - [[3329, 3329], 'valid'], - [[3330, 3331], 'valid'], - [[3332, 3332], 'disallowed'], - [[3333, 3340], 'valid'], - [[3341, 3341], 'disallowed'], - [[3342, 3344], 'valid'], - [[3345, 3345], 'disallowed'], - [[3346, 3368], 'valid'], - [[3369, 3369], 'valid'], - [[3370, 3385], 'valid'], - [[3386, 3386], 'valid'], - [[3387, 3388], 'disallowed'], - [[3389, 3389], 'valid'], - [[3390, 3395], 'valid'], - [[3396, 3396], 'valid'], - [[3397, 3397], 'disallowed'], - [[3398, 3400], 'valid'], - [[3401, 3401], 'disallowed'], - [[3402, 3405], 'valid'], - [[3406, 3406], 'valid'], - [[3407, 3414], 'disallowed'], - [[3415, 3415], 'valid'], - [[3416, 3422], 'disallowed'], - [[3423, 3423], 'valid'], - [[3424, 3425], 'valid'], - [[3426, 3427], 'valid'], - [[3428, 3429], 'disallowed'], - [[3430, 3439], 'valid'], - [[3440, 3445], 'valid', [], 'NV8'], - [[3446, 3448], 'disallowed'], - [[3449, 3449], 'valid', [], 'NV8'], - [[3450, 3455], 'valid'], - [[3456, 3457], 'disallowed'], - [[3458, 3459], 'valid'], - [[3460, 3460], 'disallowed'], - [[3461, 3478], 'valid'], - [[3479, 3481], 'disallowed'], - [[3482, 3505], 'valid'], - [[3506, 3506], 'disallowed'], - [[3507, 3515], 'valid'], - [[3516, 3516], 'disallowed'], - [[3517, 3517], 'valid'], - [[3518, 3519], 'disallowed'], - [[3520, 3526], 'valid'], - [[3527, 3529], 'disallowed'], - [[3530, 3530], 'valid'], - [[3531, 3534], 'disallowed'], - [[3535, 3540], 'valid'], - [[3541, 3541], 'disallowed'], - [[3542, 3542], 'valid'], - [[3543, 3543], 'disallowed'], - [[3544, 3551], 'valid'], - [[3552, 3557], 'disallowed'], - [[3558, 3567], 'valid'], - [[3568, 3569], 'disallowed'], - [[3570, 3571], 'valid'], - [[3572, 3572], 'valid', [], 'NV8'], - [[3573, 3584], 'disallowed'], - [[3585, 3634], 'valid'], - [[3635, 3635], 'mapped', [3661, 3634]], - [[3636, 3642], 'valid'], - [[3643, 3646], 'disallowed'], - [[3647, 3647], 'valid', [], 'NV8'], - [[3648, 3662], 'valid'], - [[3663, 3663], 'valid', [], 'NV8'], - [[3664, 3673], 'valid'], - [[3674, 3675], 'valid', [], 'NV8'], - [[3676, 3712], 'disallowed'], - [[3713, 3714], 'valid'], - [[3715, 3715], 'disallowed'], - [[3716, 3716], 'valid'], - [[3717, 3718], 'disallowed'], - [[3719, 3720], 'valid'], - [[3721, 3721], 'disallowed'], - [[3722, 3722], 'valid'], - [[3723, 3724], 'disallowed'], - [[3725, 3725], 'valid'], - [[3726, 3731], 'disallowed'], - [[3732, 3735], 'valid'], - [[3736, 3736], 'disallowed'], - [[3737, 3743], 'valid'], - [[3744, 3744], 'disallowed'], - [[3745, 3747], 'valid'], - [[3748, 3748], 'disallowed'], - [[3749, 3749], 'valid'], - [[3750, 3750], 'disallowed'], - [[3751, 3751], 'valid'], - [[3752, 3753], 'disallowed'], - [[3754, 3755], 'valid'], - [[3756, 3756], 'disallowed'], - [[3757, 3762], 'valid'], - [[3763, 3763], 'mapped', [3789, 3762]], - [[3764, 3769], 'valid'], - [[3770, 3770], 'disallowed'], - [[3771, 3773], 'valid'], - [[3774, 3775], 'disallowed'], - [[3776, 3780], 'valid'], - [[3781, 3781], 'disallowed'], - [[3782, 3782], 'valid'], - [[3783, 3783], 'disallowed'], - [[3784, 3789], 'valid'], - [[3790, 3791], 'disallowed'], - [[3792, 3801], 'valid'], - [[3802, 3803], 'disallowed'], - [[3804, 3804], 'mapped', [3755, 3737]], - [[3805, 3805], 'mapped', [3755, 3745]], - [[3806, 3807], 'valid'], - [[3808, 3839], 'disallowed'], - [[3840, 3840], 'valid'], - [[3841, 3850], 'valid', [], 'NV8'], - [[3851, 3851], 'valid'], - [[3852, 3852], 'mapped', [3851]], - [[3853, 3863], 'valid', [], 'NV8'], - [[3864, 3865], 'valid'], - [[3866, 3871], 'valid', [], 'NV8'], - [[3872, 3881], 'valid'], - [[3882, 3892], 'valid', [], 'NV8'], - [[3893, 3893], 'valid'], - [[3894, 3894], 'valid', [], 'NV8'], - [[3895, 3895], 'valid'], - [[3896, 3896], 'valid', [], 'NV8'], - [[3897, 3897], 'valid'], - [[3898, 3901], 'valid', [], 'NV8'], - [[3902, 3906], 'valid'], - [[3907, 3907], 'mapped', [3906, 4023]], - [[3908, 3911], 'valid'], - [[3912, 3912], 'disallowed'], - [[3913, 3916], 'valid'], - [[3917, 3917], 'mapped', [3916, 4023]], - [[3918, 3921], 'valid'], - [[3922, 3922], 'mapped', [3921, 4023]], - [[3923, 3926], 'valid'], - [[3927, 3927], 'mapped', [3926, 4023]], - [[3928, 3931], 'valid'], - [[3932, 3932], 'mapped', [3931, 4023]], - [[3933, 3944], 'valid'], - [[3945, 3945], 'mapped', [3904, 4021]], - [[3946, 3946], 'valid'], - [[3947, 3948], 'valid'], - [[3949, 3952], 'disallowed'], - [[3953, 3954], 'valid'], - [[3955, 3955], 'mapped', [3953, 3954]], - [[3956, 3956], 'valid'], - [[3957, 3957], 'mapped', [3953, 3956]], - [[3958, 3958], 'mapped', [4018, 3968]], - [[3959, 3959], 'mapped', [4018, 3953, 3968]], - [[3960, 3960], 'mapped', [4019, 3968]], - [[3961, 3961], 'mapped', [4019, 3953, 3968]], - [[3962, 3968], 'valid'], - [[3969, 3969], 'mapped', [3953, 3968]], - [[3970, 3972], 'valid'], - [[3973, 3973], 'valid', [], 'NV8'], - [[3974, 3979], 'valid'], - [[3980, 3983], 'valid'], - [[3984, 3986], 'valid'], - [[3987, 3987], 'mapped', [3986, 4023]], - [[3988, 3989], 'valid'], - [[3990, 3990], 'valid'], - [[3991, 3991], 'valid'], - [[3992, 3992], 'disallowed'], - [[3993, 3996], 'valid'], - [[3997, 3997], 'mapped', [3996, 4023]], - [[3998, 4001], 'valid'], - [[4002, 4002], 'mapped', [4001, 4023]], - [[4003, 4006], 'valid'], - [[4007, 4007], 'mapped', [4006, 4023]], - [[4008, 4011], 'valid'], - [[4012, 4012], 'mapped', [4011, 4023]], - [[4013, 4013], 'valid'], - [[4014, 4016], 'valid'], - [[4017, 4023], 'valid'], - [[4024, 4024], 'valid'], - [[4025, 4025], 'mapped', [3984, 4021]], - [[4026, 4028], 'valid'], - [[4029, 4029], 'disallowed'], - [[4030, 4037], 'valid', [], 'NV8'], - [[4038, 4038], 'valid'], - [[4039, 4044], 'valid', [], 'NV8'], - [[4045, 4045], 'disallowed'], - [[4046, 4046], 'valid', [], 'NV8'], - [[4047, 4047], 'valid', [], 'NV8'], - [[4048, 4049], 'valid', [], 'NV8'], - [[4050, 4052], 'valid', [], 'NV8'], - [[4053, 4056], 'valid', [], 'NV8'], - [[4057, 4058], 'valid', [], 'NV8'], - [[4059, 4095], 'disallowed'], - [[4096, 4129], 'valid'], - [[4130, 4130], 'valid'], - [[4131, 4135], 'valid'], - [[4136, 4136], 'valid'], - [[4137, 4138], 'valid'], - [[4139, 4139], 'valid'], - [[4140, 4146], 'valid'], - [[4147, 4149], 'valid'], - [[4150, 4153], 'valid'], - [[4154, 4159], 'valid'], - [[4160, 4169], 'valid'], - [[4170, 4175], 'valid', [], 'NV8'], - [[4176, 4185], 'valid'], - [[4186, 4249], 'valid'], - [[4250, 4253], 'valid'], - [[4254, 4255], 'valid', [], 'NV8'], - [[4256, 4293], 'disallowed'], - [[4294, 4294], 'disallowed'], - [[4295, 4295], 'mapped', [11559]], - [[4296, 4300], 'disallowed'], - [[4301, 4301], 'mapped', [11565]], - [[4302, 4303], 'disallowed'], - [[4304, 4342], 'valid'], - [[4343, 4344], 'valid'], - [[4345, 4346], 'valid'], - [[4347, 4347], 'valid', [], 'NV8'], - [[4348, 4348], 'mapped', [4316]], - [[4349, 4351], 'valid'], - [[4352, 4441], 'valid', [], 'NV8'], - [[4442, 4446], 'valid', [], 'NV8'], - [[4447, 4448], 'disallowed'], - [[4449, 4514], 'valid', [], 'NV8'], - [[4515, 4519], 'valid', [], 'NV8'], - [[4520, 4601], 'valid', [], 'NV8'], - [[4602, 4607], 'valid', [], 'NV8'], - [[4608, 4614], 'valid'], - [[4615, 4615], 'valid'], - [[4616, 4678], 'valid'], - [[4679, 4679], 'valid'], - [[4680, 4680], 'valid'], - [[4681, 4681], 'disallowed'], - [[4682, 4685], 'valid'], - [[4686, 4687], 'disallowed'], - [[4688, 4694], 'valid'], - [[4695, 4695], 'disallowed'], - [[4696, 4696], 'valid'], - [[4697, 4697], 'disallowed'], - [[4698, 4701], 'valid'], - [[4702, 4703], 'disallowed'], - [[4704, 4742], 'valid'], - [[4743, 4743], 'valid'], - [[4744, 4744], 'valid'], - [[4745, 4745], 'disallowed'], - [[4746, 4749], 'valid'], - [[4750, 4751], 'disallowed'], - [[4752, 4782], 'valid'], - [[4783, 4783], 'valid'], - [[4784, 4784], 'valid'], - [[4785, 4785], 'disallowed'], - [[4786, 4789], 'valid'], - [[4790, 4791], 'disallowed'], - [[4792, 4798], 'valid'], - [[4799, 4799], 'disallowed'], - [[4800, 4800], 'valid'], - [[4801, 4801], 'disallowed'], - [[4802, 4805], 'valid'], - [[4806, 4807], 'disallowed'], - [[4808, 4814], 'valid'], - [[4815, 4815], 'valid'], - [[4816, 4822], 'valid'], - [[4823, 4823], 'disallowed'], - [[4824, 4846], 'valid'], - [[4847, 4847], 'valid'], - [[4848, 4878], 'valid'], - [[4879, 4879], 'valid'], - [[4880, 4880], 'valid'], - [[4881, 4881], 'disallowed'], - [[4882, 4885], 'valid'], - [[4886, 4887], 'disallowed'], - [[4888, 4894], 'valid'], - [[4895, 4895], 'valid'], - [[4896, 4934], 'valid'], - [[4935, 4935], 'valid'], - [[4936, 4954], 'valid'], - [[4955, 4956], 'disallowed'], - [[4957, 4958], 'valid'], - [[4959, 4959], 'valid'], - [[4960, 4960], 'valid', [], 'NV8'], - [[4961, 4988], 'valid', [], 'NV8'], - [[4989, 4991], 'disallowed'], - [[4992, 5007], 'valid'], - [[5008, 5017], 'valid', [], 'NV8'], - [[5018, 5023], 'disallowed'], - [[5024, 5108], 'valid'], - [[5109, 5109], 'valid'], - [[5110, 5111], 'disallowed'], - [[5112, 5112], 'mapped', [5104]], - [[5113, 5113], 'mapped', [5105]], - [[5114, 5114], 'mapped', [5106]], - [[5115, 5115], 'mapped', [5107]], - [[5116, 5116], 'mapped', [5108]], - [[5117, 5117], 'mapped', [5109]], - [[5118, 5119], 'disallowed'], - [[5120, 5120], 'valid', [], 'NV8'], - [[5121, 5740], 'valid'], - [[5741, 5742], 'valid', [], 'NV8'], - [[5743, 5750], 'valid'], - [[5751, 5759], 'valid'], - [[5760, 5760], 'disallowed'], - [[5761, 5786], 'valid'], - [[5787, 5788], 'valid', [], 'NV8'], - [[5789, 5791], 'disallowed'], - [[5792, 5866], 'valid'], - [[5867, 5872], 'valid', [], 'NV8'], - [[5873, 5880], 'valid'], - [[5881, 5887], 'disallowed'], - [[5888, 5900], 'valid'], - [[5901, 5901], 'disallowed'], - [[5902, 5908], 'valid'], - [[5909, 5919], 'disallowed'], - [[5920, 5940], 'valid'], - [[5941, 5942], 'valid', [], 'NV8'], - [[5943, 5951], 'disallowed'], - [[5952, 5971], 'valid'], - [[5972, 5983], 'disallowed'], - [[5984, 5996], 'valid'], - [[5997, 5997], 'disallowed'], - [[5998, 6e3], 'valid'], - [[6001, 6001], 'disallowed'], - [[6002, 6003], 'valid'], - [[6004, 6015], 'disallowed'], - [[6016, 6067], 'valid'], - [[6068, 6069], 'disallowed'], - [[6070, 6099], 'valid'], - [[6100, 6102], 'valid', [], 'NV8'], - [[6103, 6103], 'valid'], - [[6104, 6107], 'valid', [], 'NV8'], - [[6108, 6108], 'valid'], - [[6109, 6109], 'valid'], - [[6110, 6111], 'disallowed'], - [[6112, 6121], 'valid'], - [[6122, 6127], 'disallowed'], - [[6128, 6137], 'valid', [], 'NV8'], - [[6138, 6143], 'disallowed'], - [[6144, 6149], 'valid', [], 'NV8'], - [[6150, 6150], 'disallowed'], - [[6151, 6154], 'valid', [], 'NV8'], - [[6155, 6157], 'ignored'], - [[6158, 6158], 'disallowed'], - [[6159, 6159], 'disallowed'], - [[6160, 6169], 'valid'], - [[6170, 6175], 'disallowed'], - [[6176, 6263], 'valid'], - [[6264, 6271], 'disallowed'], - [[6272, 6313], 'valid'], - [[6314, 6314], 'valid'], - [[6315, 6319], 'disallowed'], - [[6320, 6389], 'valid'], - [[6390, 6399], 'disallowed'], - [[6400, 6428], 'valid'], - [[6429, 6430], 'valid'], - [[6431, 6431], 'disallowed'], - [[6432, 6443], 'valid'], - [[6444, 6447], 'disallowed'], - [[6448, 6459], 'valid'], - [[6460, 6463], 'disallowed'], - [[6464, 6464], 'valid', [], 'NV8'], - [[6465, 6467], 'disallowed'], - [[6468, 6469], 'valid', [], 'NV8'], - [[6470, 6509], 'valid'], - [[6510, 6511], 'disallowed'], - [[6512, 6516], 'valid'], - [[6517, 6527], 'disallowed'], - [[6528, 6569], 'valid'], - [[6570, 6571], 'valid'], - [[6572, 6575], 'disallowed'], - [[6576, 6601], 'valid'], - [[6602, 6607], 'disallowed'], - [[6608, 6617], 'valid'], - [[6618, 6618], 'valid', [], 'XV8'], - [[6619, 6621], 'disallowed'], - [[6622, 6623], 'valid', [], 'NV8'], - [[6624, 6655], 'valid', [], 'NV8'], - [[6656, 6683], 'valid'], - [[6684, 6685], 'disallowed'], - [[6686, 6687], 'valid', [], 'NV8'], - [[6688, 6750], 'valid'], - [[6751, 6751], 'disallowed'], - [[6752, 6780], 'valid'], - [[6781, 6782], 'disallowed'], - [[6783, 6793], 'valid'], - [[6794, 6799], 'disallowed'], - [[6800, 6809], 'valid'], - [[6810, 6815], 'disallowed'], - [[6816, 6822], 'valid', [], 'NV8'], - [[6823, 6823], 'valid'], - [[6824, 6829], 'valid', [], 'NV8'], - [[6830, 6831], 'disallowed'], - [[6832, 6845], 'valid'], - [[6846, 6846], 'valid', [], 'NV8'], - [[6847, 6911], 'disallowed'], - [[6912, 6987], 'valid'], - [[6988, 6991], 'disallowed'], - [[6992, 7001], 'valid'], - [[7002, 7018], 'valid', [], 'NV8'], - [[7019, 7027], 'valid'], - [[7028, 7036], 'valid', [], 'NV8'], - [[7037, 7039], 'disallowed'], - [[7040, 7082], 'valid'], - [[7083, 7085], 'valid'], - [[7086, 7097], 'valid'], - [[7098, 7103], 'valid'], - [[7104, 7155], 'valid'], - [[7156, 7163], 'disallowed'], - [[7164, 7167], 'valid', [], 'NV8'], - [[7168, 7223], 'valid'], - [[7224, 7226], 'disallowed'], - [[7227, 7231], 'valid', [], 'NV8'], - [[7232, 7241], 'valid'], - [[7242, 7244], 'disallowed'], - [[7245, 7293], 'valid'], - [[7294, 7295], 'valid', [], 'NV8'], - [[7296, 7359], 'disallowed'], - [[7360, 7367], 'valid', [], 'NV8'], - [[7368, 7375], 'disallowed'], - [[7376, 7378], 'valid'], - [[7379, 7379], 'valid', [], 'NV8'], - [[7380, 7410], 'valid'], - [[7411, 7414], 'valid'], - [[7415, 7415], 'disallowed'], - [[7416, 7417], 'valid'], - [[7418, 7423], 'disallowed'], - [[7424, 7467], 'valid'], - [[7468, 7468], 'mapped', [97]], - [[7469, 7469], 'mapped', [230]], - [[7470, 7470], 'mapped', [98]], - [[7471, 7471], 'valid'], - [[7472, 7472], 'mapped', [100]], - [[7473, 7473], 'mapped', [101]], - [[7474, 7474], 'mapped', [477]], - [[7475, 7475], 'mapped', [103]], - [[7476, 7476], 'mapped', [104]], - [[7477, 7477], 'mapped', [105]], - [[7478, 7478], 'mapped', [106]], - [[7479, 7479], 'mapped', [107]], - [[7480, 7480], 'mapped', [108]], - [[7481, 7481], 'mapped', [109]], - [[7482, 7482], 'mapped', [110]], - [[7483, 7483], 'valid'], - [[7484, 7484], 'mapped', [111]], - [[7485, 7485], 'mapped', [547]], - [[7486, 7486], 'mapped', [112]], - [[7487, 7487], 'mapped', [114]], - [[7488, 7488], 'mapped', [116]], - [[7489, 7489], 'mapped', [117]], - [[7490, 7490], 'mapped', [119]], - [[7491, 7491], 'mapped', [97]], - [[7492, 7492], 'mapped', [592]], - [[7493, 7493], 'mapped', [593]], - [[7494, 7494], 'mapped', [7426]], - [[7495, 7495], 'mapped', [98]], - [[7496, 7496], 'mapped', [100]], - [[7497, 7497], 'mapped', [101]], - [[7498, 7498], 'mapped', [601]], - [[7499, 7499], 'mapped', [603]], - [[7500, 7500], 'mapped', [604]], - [[7501, 7501], 'mapped', [103]], - [[7502, 7502], 'valid'], - [[7503, 7503], 'mapped', [107]], - [[7504, 7504], 'mapped', [109]], - [[7505, 7505], 'mapped', [331]], - [[7506, 7506], 'mapped', [111]], - [[7507, 7507], 'mapped', [596]], - [[7508, 7508], 'mapped', [7446]], - [[7509, 7509], 'mapped', [7447]], - [[7510, 7510], 'mapped', [112]], - [[7511, 7511], 'mapped', [116]], - [[7512, 7512], 'mapped', [117]], - [[7513, 7513], 'mapped', [7453]], - [[7514, 7514], 'mapped', [623]], - [[7515, 7515], 'mapped', [118]], - [[7516, 7516], 'mapped', [7461]], - [[7517, 7517], 'mapped', [946]], - [[7518, 7518], 'mapped', [947]], - [[7519, 7519], 'mapped', [948]], - [[7520, 7520], 'mapped', [966]], - [[7521, 7521], 'mapped', [967]], - [[7522, 7522], 'mapped', [105]], - [[7523, 7523], 'mapped', [114]], - [[7524, 7524], 'mapped', [117]], - [[7525, 7525], 'mapped', [118]], - [[7526, 7526], 'mapped', [946]], - [[7527, 7527], 'mapped', [947]], - [[7528, 7528], 'mapped', [961]], - [[7529, 7529], 'mapped', [966]], - [[7530, 7530], 'mapped', [967]], - [[7531, 7531], 'valid'], - [[7532, 7543], 'valid'], - [[7544, 7544], 'mapped', [1085]], - [[7545, 7578], 'valid'], - [[7579, 7579], 'mapped', [594]], - [[7580, 7580], 'mapped', [99]], - [[7581, 7581], 'mapped', [597]], - [[7582, 7582], 'mapped', [240]], - [[7583, 7583], 'mapped', [604]], - [[7584, 7584], 'mapped', [102]], - [[7585, 7585], 'mapped', [607]], - [[7586, 7586], 'mapped', [609]], - [[7587, 7587], 'mapped', [613]], - [[7588, 7588], 'mapped', [616]], - [[7589, 7589], 'mapped', [617]], - [[7590, 7590], 'mapped', [618]], - [[7591, 7591], 'mapped', [7547]], - [[7592, 7592], 'mapped', [669]], - [[7593, 7593], 'mapped', [621]], - [[7594, 7594], 'mapped', [7557]], - [[7595, 7595], 'mapped', [671]], - [[7596, 7596], 'mapped', [625]], - [[7597, 7597], 'mapped', [624]], - [[7598, 7598], 'mapped', [626]], - [[7599, 7599], 'mapped', [627]], - [[7600, 7600], 'mapped', [628]], - [[7601, 7601], 'mapped', [629]], - [[7602, 7602], 'mapped', [632]], - [[7603, 7603], 'mapped', [642]], - [[7604, 7604], 'mapped', [643]], - [[7605, 7605], 'mapped', [427]], - [[7606, 7606], 'mapped', [649]], - [[7607, 7607], 'mapped', [650]], - [[7608, 7608], 'mapped', [7452]], - [[7609, 7609], 'mapped', [651]], - [[7610, 7610], 'mapped', [652]], - [[7611, 7611], 'mapped', [122]], - [[7612, 7612], 'mapped', [656]], - [[7613, 7613], 'mapped', [657]], - [[7614, 7614], 'mapped', [658]], - [[7615, 7615], 'mapped', [952]], - [[7616, 7619], 'valid'], - [[7620, 7626], 'valid'], - [[7627, 7654], 'valid'], - [[7655, 7669], 'valid'], - [[7670, 7675], 'disallowed'], - [[7676, 7676], 'valid'], - [[7677, 7677], 'valid'], - [[7678, 7679], 'valid'], - [[7680, 7680], 'mapped', [7681]], - [[7681, 7681], 'valid'], - [[7682, 7682], 'mapped', [7683]], - [[7683, 7683], 'valid'], - [[7684, 7684], 'mapped', [7685]], - [[7685, 7685], 'valid'], - [[7686, 7686], 'mapped', [7687]], - [[7687, 7687], 'valid'], - [[7688, 7688], 'mapped', [7689]], - [[7689, 7689], 'valid'], - [[7690, 7690], 'mapped', [7691]], - [[7691, 7691], 'valid'], - [[7692, 7692], 'mapped', [7693]], - [[7693, 7693], 'valid'], - [[7694, 7694], 'mapped', [7695]], - [[7695, 7695], 'valid'], - [[7696, 7696], 'mapped', [7697]], - [[7697, 7697], 'valid'], - [[7698, 7698], 'mapped', [7699]], - [[7699, 7699], 'valid'], - [[7700, 7700], 'mapped', [7701]], - [[7701, 7701], 'valid'], - [[7702, 7702], 'mapped', [7703]], - [[7703, 7703], 'valid'], - [[7704, 7704], 'mapped', [7705]], - [[7705, 7705], 'valid'], - [[7706, 7706], 'mapped', [7707]], - [[7707, 7707], 'valid'], - [[7708, 7708], 'mapped', [7709]], - [[7709, 7709], 'valid'], - [[7710, 7710], 'mapped', [7711]], - [[7711, 7711], 'valid'], - [[7712, 7712], 'mapped', [7713]], - [[7713, 7713], 'valid'], - [[7714, 7714], 'mapped', [7715]], - [[7715, 7715], 'valid'], - [[7716, 7716], 'mapped', [7717]], - [[7717, 7717], 'valid'], - [[7718, 7718], 'mapped', [7719]], - [[7719, 7719], 'valid'], - [[7720, 7720], 'mapped', [7721]], - [[7721, 7721], 'valid'], - [[7722, 7722], 'mapped', [7723]], - [[7723, 7723], 'valid'], - [[7724, 7724], 'mapped', [7725]], - [[7725, 7725], 'valid'], - [[7726, 7726], 'mapped', [7727]], - [[7727, 7727], 'valid'], - [[7728, 7728], 'mapped', [7729]], - [[7729, 7729], 'valid'], - [[7730, 7730], 'mapped', [7731]], - [[7731, 7731], 'valid'], - [[7732, 7732], 'mapped', [7733]], - [[7733, 7733], 'valid'], - [[7734, 7734], 'mapped', [7735]], - [[7735, 7735], 'valid'], - [[7736, 7736], 'mapped', [7737]], - [[7737, 7737], 'valid'], - [[7738, 7738], 'mapped', [7739]], - [[7739, 7739], 'valid'], - [[7740, 7740], 'mapped', [7741]], - [[7741, 7741], 'valid'], - [[7742, 7742], 'mapped', [7743]], - [[7743, 7743], 'valid'], - [[7744, 7744], 'mapped', [7745]], - [[7745, 7745], 'valid'], - [[7746, 7746], 'mapped', [7747]], - [[7747, 7747], 'valid'], - [[7748, 7748], 'mapped', [7749]], - [[7749, 7749], 'valid'], - [[7750, 7750], 'mapped', [7751]], - [[7751, 7751], 'valid'], - [[7752, 7752], 'mapped', [7753]], - [[7753, 7753], 'valid'], - [[7754, 7754], 'mapped', [7755]], - [[7755, 7755], 'valid'], - [[7756, 7756], 'mapped', [7757]], - [[7757, 7757], 'valid'], - [[7758, 7758], 'mapped', [7759]], - [[7759, 7759], 'valid'], - [[7760, 7760], 'mapped', [7761]], - [[7761, 7761], 'valid'], - [[7762, 7762], 'mapped', [7763]], - [[7763, 7763], 'valid'], - [[7764, 7764], 'mapped', [7765]], - [[7765, 7765], 'valid'], - [[7766, 7766], 'mapped', [7767]], - [[7767, 7767], 'valid'], - [[7768, 7768], 'mapped', [7769]], - [[7769, 7769], 'valid'], - [[7770, 7770], 'mapped', [7771]], - [[7771, 7771], 'valid'], - [[7772, 7772], 'mapped', [7773]], - [[7773, 7773], 'valid'], - [[7774, 7774], 'mapped', [7775]], - [[7775, 7775], 'valid'], - [[7776, 7776], 'mapped', [7777]], - [[7777, 7777], 'valid'], - [[7778, 7778], 'mapped', [7779]], - [[7779, 7779], 'valid'], - [[7780, 7780], 'mapped', [7781]], - [[7781, 7781], 'valid'], - [[7782, 7782], 'mapped', [7783]], - [[7783, 7783], 'valid'], - [[7784, 7784], 'mapped', [7785]], - [[7785, 7785], 'valid'], - [[7786, 7786], 'mapped', [7787]], - [[7787, 7787], 'valid'], - [[7788, 7788], 'mapped', [7789]], - [[7789, 7789], 'valid'], - [[7790, 7790], 'mapped', [7791]], - [[7791, 7791], 'valid'], - [[7792, 7792], 'mapped', [7793]], - [[7793, 7793], 'valid'], - [[7794, 7794], 'mapped', [7795]], - [[7795, 7795], 'valid'], - [[7796, 7796], 'mapped', [7797]], - [[7797, 7797], 'valid'], - [[7798, 7798], 'mapped', [7799]], - [[7799, 7799], 'valid'], - [[7800, 7800], 'mapped', [7801]], - [[7801, 7801], 'valid'], - [[7802, 7802], 'mapped', [7803]], - [[7803, 7803], 'valid'], - [[7804, 7804], 'mapped', [7805]], - [[7805, 7805], 'valid'], - [[7806, 7806], 'mapped', [7807]], - [[7807, 7807], 'valid'], - [[7808, 7808], 'mapped', [7809]], - [[7809, 7809], 'valid'], - [[7810, 7810], 'mapped', [7811]], - [[7811, 7811], 'valid'], - [[7812, 7812], 'mapped', [7813]], - [[7813, 7813], 'valid'], - [[7814, 7814], 'mapped', [7815]], - [[7815, 7815], 'valid'], - [[7816, 7816], 'mapped', [7817]], - [[7817, 7817], 'valid'], - [[7818, 7818], 'mapped', [7819]], - [[7819, 7819], 'valid'], - [[7820, 7820], 'mapped', [7821]], - [[7821, 7821], 'valid'], - [[7822, 7822], 'mapped', [7823]], - [[7823, 7823], 'valid'], - [[7824, 7824], 'mapped', [7825]], - [[7825, 7825], 'valid'], - [[7826, 7826], 'mapped', [7827]], - [[7827, 7827], 'valid'], - [[7828, 7828], 'mapped', [7829]], - [[7829, 7833], 'valid'], - [[7834, 7834], 'mapped', [97, 702]], - [[7835, 7835], 'mapped', [7777]], - [[7836, 7837], 'valid'], - [[7838, 7838], 'mapped', [115, 115]], - [[7839, 7839], 'valid'], - [[7840, 7840], 'mapped', [7841]], - [[7841, 7841], 'valid'], - [[7842, 7842], 'mapped', [7843]], - [[7843, 7843], 'valid'], - [[7844, 7844], 'mapped', [7845]], - [[7845, 7845], 'valid'], - [[7846, 7846], 'mapped', [7847]], - [[7847, 7847], 'valid'], - [[7848, 7848], 'mapped', [7849]], - [[7849, 7849], 'valid'], - [[7850, 7850], 'mapped', [7851]], - [[7851, 7851], 'valid'], - [[7852, 7852], 'mapped', [7853]], - [[7853, 7853], 'valid'], - [[7854, 7854], 'mapped', [7855]], - [[7855, 7855], 'valid'], - [[7856, 7856], 'mapped', [7857]], - [[7857, 7857], 'valid'], - [[7858, 7858], 'mapped', [7859]], - [[7859, 7859], 'valid'], - [[7860, 7860], 'mapped', [7861]], - [[7861, 7861], 'valid'], - [[7862, 7862], 'mapped', [7863]], - [[7863, 7863], 'valid'], - [[7864, 7864], 'mapped', [7865]], - [[7865, 7865], 'valid'], - [[7866, 7866], 'mapped', [7867]], - [[7867, 7867], 'valid'], - [[7868, 7868], 'mapped', [7869]], - [[7869, 7869], 'valid'], - [[7870, 7870], 'mapped', [7871]], - [[7871, 7871], 'valid'], - [[7872, 7872], 'mapped', [7873]], - [[7873, 7873], 'valid'], - [[7874, 7874], 'mapped', [7875]], - [[7875, 7875], 'valid'], - [[7876, 7876], 'mapped', [7877]], - [[7877, 7877], 'valid'], - [[7878, 7878], 'mapped', [7879]], - [[7879, 7879], 'valid'], - [[7880, 7880], 'mapped', [7881]], - [[7881, 7881], 'valid'], - [[7882, 7882], 'mapped', [7883]], - [[7883, 7883], 'valid'], - [[7884, 7884], 'mapped', [7885]], - [[7885, 7885], 'valid'], - [[7886, 7886], 'mapped', [7887]], - [[7887, 7887], 'valid'], - [[7888, 7888], 'mapped', [7889]], - [[7889, 7889], 'valid'], - [[7890, 7890], 'mapped', [7891]], - [[7891, 7891], 'valid'], - [[7892, 7892], 'mapped', [7893]], - [[7893, 7893], 'valid'], - [[7894, 7894], 'mapped', [7895]], - [[7895, 7895], 'valid'], - [[7896, 7896], 'mapped', [7897]], - [[7897, 7897], 'valid'], - [[7898, 7898], 'mapped', [7899]], - [[7899, 7899], 'valid'], - [[7900, 7900], 'mapped', [7901]], - [[7901, 7901], 'valid'], - [[7902, 7902], 'mapped', [7903]], - [[7903, 7903], 'valid'], - [[7904, 7904], 'mapped', [7905]], - [[7905, 7905], 'valid'], - [[7906, 7906], 'mapped', [7907]], - [[7907, 7907], 'valid'], - [[7908, 7908], 'mapped', [7909]], - [[7909, 7909], 'valid'], - [[7910, 7910], 'mapped', [7911]], - [[7911, 7911], 'valid'], - [[7912, 7912], 'mapped', [7913]], - [[7913, 7913], 'valid'], - [[7914, 7914], 'mapped', [7915]], - [[7915, 7915], 'valid'], - [[7916, 7916], 'mapped', [7917]], - [[7917, 7917], 'valid'], - [[7918, 7918], 'mapped', [7919]], - [[7919, 7919], 'valid'], - [[7920, 7920], 'mapped', [7921]], - [[7921, 7921], 'valid'], - [[7922, 7922], 'mapped', [7923]], - [[7923, 7923], 'valid'], - [[7924, 7924], 'mapped', [7925]], - [[7925, 7925], 'valid'], - [[7926, 7926], 'mapped', [7927]], - [[7927, 7927], 'valid'], - [[7928, 7928], 'mapped', [7929]], - [[7929, 7929], 'valid'], - [[7930, 7930], 'mapped', [7931]], - [[7931, 7931], 'valid'], - [[7932, 7932], 'mapped', [7933]], - [[7933, 7933], 'valid'], - [[7934, 7934], 'mapped', [7935]], - [[7935, 7935], 'valid'], - [[7936, 7943], 'valid'], - [[7944, 7944], 'mapped', [7936]], - [[7945, 7945], 'mapped', [7937]], - [[7946, 7946], 'mapped', [7938]], - [[7947, 7947], 'mapped', [7939]], - [[7948, 7948], 'mapped', [7940]], - [[7949, 7949], 'mapped', [7941]], - [[7950, 7950], 'mapped', [7942]], - [[7951, 7951], 'mapped', [7943]], - [[7952, 7957], 'valid'], - [[7958, 7959], 'disallowed'], - [[7960, 7960], 'mapped', [7952]], - [[7961, 7961], 'mapped', [7953]], - [[7962, 7962], 'mapped', [7954]], - [[7963, 7963], 'mapped', [7955]], - [[7964, 7964], 'mapped', [7956]], - [[7965, 7965], 'mapped', [7957]], - [[7966, 7967], 'disallowed'], - [[7968, 7975], 'valid'], - [[7976, 7976], 'mapped', [7968]], - [[7977, 7977], 'mapped', [7969]], - [[7978, 7978], 'mapped', [7970]], - [[7979, 7979], 'mapped', [7971]], - [[7980, 7980], 'mapped', [7972]], - [[7981, 7981], 'mapped', [7973]], - [[7982, 7982], 'mapped', [7974]], - [[7983, 7983], 'mapped', [7975]], - [[7984, 7991], 'valid'], - [[7992, 7992], 'mapped', [7984]], - [[7993, 7993], 'mapped', [7985]], - [[7994, 7994], 'mapped', [7986]], - [[7995, 7995], 'mapped', [7987]], - [[7996, 7996], 'mapped', [7988]], - [[7997, 7997], 'mapped', [7989]], - [[7998, 7998], 'mapped', [7990]], - [[7999, 7999], 'mapped', [7991]], - [[8e3, 8005], 'valid'], - [[8006, 8007], 'disallowed'], - [[8008, 8008], 'mapped', [8e3]], - [[8009, 8009], 'mapped', [8001]], - [[8010, 8010], 'mapped', [8002]], - [[8011, 8011], 'mapped', [8003]], - [[8012, 8012], 'mapped', [8004]], - [[8013, 8013], 'mapped', [8005]], - [[8014, 8015], 'disallowed'], - [[8016, 8023], 'valid'], - [[8024, 8024], 'disallowed'], - [[8025, 8025], 'mapped', [8017]], - [[8026, 8026], 'disallowed'], - [[8027, 8027], 'mapped', [8019]], - [[8028, 8028], 'disallowed'], - [[8029, 8029], 'mapped', [8021]], - [[8030, 8030], 'disallowed'], - [[8031, 8031], 'mapped', [8023]], - [[8032, 8039], 'valid'], - [[8040, 8040], 'mapped', [8032]], - [[8041, 8041], 'mapped', [8033]], - [[8042, 8042], 'mapped', [8034]], - [[8043, 8043], 'mapped', [8035]], - [[8044, 8044], 'mapped', [8036]], - [[8045, 8045], 'mapped', [8037]], - [[8046, 8046], 'mapped', [8038]], - [[8047, 8047], 'mapped', [8039]], - [[8048, 8048], 'valid'], - [[8049, 8049], 'mapped', [940]], - [[8050, 8050], 'valid'], - [[8051, 8051], 'mapped', [941]], - [[8052, 8052], 'valid'], - [[8053, 8053], 'mapped', [942]], - [[8054, 8054], 'valid'], - [[8055, 8055], 'mapped', [943]], - [[8056, 8056], 'valid'], - [[8057, 8057], 'mapped', [972]], - [[8058, 8058], 'valid'], - [[8059, 8059], 'mapped', [973]], - [[8060, 8060], 'valid'], - [[8061, 8061], 'mapped', [974]], - [[8062, 8063], 'disallowed'], - [[8064, 8064], 'mapped', [7936, 953]], - [[8065, 8065], 'mapped', [7937, 953]], - [[8066, 8066], 'mapped', [7938, 953]], - [[8067, 8067], 'mapped', [7939, 953]], - [[8068, 8068], 'mapped', [7940, 953]], - [[8069, 8069], 'mapped', [7941, 953]], - [[8070, 8070], 'mapped', [7942, 953]], - [[8071, 8071], 'mapped', [7943, 953]], - [[8072, 8072], 'mapped', [7936, 953]], - [[8073, 8073], 'mapped', [7937, 953]], - [[8074, 8074], 'mapped', [7938, 953]], - [[8075, 8075], 'mapped', [7939, 953]], - [[8076, 8076], 'mapped', [7940, 953]], - [[8077, 8077], 'mapped', [7941, 953]], - [[8078, 8078], 'mapped', [7942, 953]], - [[8079, 8079], 'mapped', [7943, 953]], - [[8080, 8080], 'mapped', [7968, 953]], - [[8081, 8081], 'mapped', [7969, 953]], - [[8082, 8082], 'mapped', [7970, 953]], - [[8083, 8083], 'mapped', [7971, 953]], - [[8084, 8084], 'mapped', [7972, 953]], - [[8085, 8085], 'mapped', [7973, 953]], - [[8086, 8086], 'mapped', [7974, 953]], - [[8087, 8087], 'mapped', [7975, 953]], - [[8088, 8088], 'mapped', [7968, 953]], - [[8089, 8089], 'mapped', [7969, 953]], - [[8090, 8090], 'mapped', [7970, 953]], - [[8091, 8091], 'mapped', [7971, 953]], - [[8092, 8092], 'mapped', [7972, 953]], - [[8093, 8093], 'mapped', [7973, 953]], - [[8094, 8094], 'mapped', [7974, 953]], - [[8095, 8095], 'mapped', [7975, 953]], - [[8096, 8096], 'mapped', [8032, 953]], - [[8097, 8097], 'mapped', [8033, 953]], - [[8098, 8098], 'mapped', [8034, 953]], - [[8099, 8099], 'mapped', [8035, 953]], - [[8100, 8100], 'mapped', [8036, 953]], - [[8101, 8101], 'mapped', [8037, 953]], - [[8102, 8102], 'mapped', [8038, 953]], - [[8103, 8103], 'mapped', [8039, 953]], - [[8104, 8104], 'mapped', [8032, 953]], - [[8105, 8105], 'mapped', [8033, 953]], - [[8106, 8106], 'mapped', [8034, 953]], - [[8107, 8107], 'mapped', [8035, 953]], - [[8108, 8108], 'mapped', [8036, 953]], - [[8109, 8109], 'mapped', [8037, 953]], - [[8110, 8110], 'mapped', [8038, 953]], - [[8111, 8111], 'mapped', [8039, 953]], - [[8112, 8113], 'valid'], - [[8114, 8114], 'mapped', [8048, 953]], - [[8115, 8115], 'mapped', [945, 953]], - [[8116, 8116], 'mapped', [940, 953]], - [[8117, 8117], 'disallowed'], - [[8118, 8118], 'valid'], - [[8119, 8119], 'mapped', [8118, 953]], - [[8120, 8120], 'mapped', [8112]], - [[8121, 8121], 'mapped', [8113]], - [[8122, 8122], 'mapped', [8048]], - [[8123, 8123], 'mapped', [940]], - [[8124, 8124], 'mapped', [945, 953]], - [[8125, 8125], 'disallowed_STD3_mapped', [32, 787]], - [[8126, 8126], 'mapped', [953]], - [[8127, 8127], 'disallowed_STD3_mapped', [32, 787]], - [[8128, 8128], 'disallowed_STD3_mapped', [32, 834]], - [[8129, 8129], 'disallowed_STD3_mapped', [32, 776, 834]], - [[8130, 8130], 'mapped', [8052, 953]], - [[8131, 8131], 'mapped', [951, 953]], - [[8132, 8132], 'mapped', [942, 953]], - [[8133, 8133], 'disallowed'], - [[8134, 8134], 'valid'], - [[8135, 8135], 'mapped', [8134, 953]], - [[8136, 8136], 'mapped', [8050]], - [[8137, 8137], 'mapped', [941]], - [[8138, 8138], 'mapped', [8052]], - [[8139, 8139], 'mapped', [942]], - [[8140, 8140], 'mapped', [951, 953]], - [[8141, 8141], 'disallowed_STD3_mapped', [32, 787, 768]], - [[8142, 8142], 'disallowed_STD3_mapped', [32, 787, 769]], - [[8143, 8143], 'disallowed_STD3_mapped', [32, 787, 834]], - [[8144, 8146], 'valid'], - [[8147, 8147], 'mapped', [912]], - [[8148, 8149], 'disallowed'], - [[8150, 8151], 'valid'], - [[8152, 8152], 'mapped', [8144]], - [[8153, 8153], 'mapped', [8145]], - [[8154, 8154], 'mapped', [8054]], - [[8155, 8155], 'mapped', [943]], - [[8156, 8156], 'disallowed'], - [[8157, 8157], 'disallowed_STD3_mapped', [32, 788, 768]], - [[8158, 8158], 'disallowed_STD3_mapped', [32, 788, 769]], - [[8159, 8159], 'disallowed_STD3_mapped', [32, 788, 834]], - [[8160, 8162], 'valid'], - [[8163, 8163], 'mapped', [944]], - [[8164, 8167], 'valid'], - [[8168, 8168], 'mapped', [8160]], - [[8169, 8169], 'mapped', [8161]], - [[8170, 8170], 'mapped', [8058]], - [[8171, 8171], 'mapped', [973]], - [[8172, 8172], 'mapped', [8165]], - [[8173, 8173], 'disallowed_STD3_mapped', [32, 776, 768]], - [[8174, 8174], 'disallowed_STD3_mapped', [32, 776, 769]], - [[8175, 8175], 'disallowed_STD3_mapped', [96]], - [[8176, 8177], 'disallowed'], - [[8178, 8178], 'mapped', [8060, 953]], - [[8179, 8179], 'mapped', [969, 953]], - [[8180, 8180], 'mapped', [974, 953]], - [[8181, 8181], 'disallowed'], - [[8182, 8182], 'valid'], - [[8183, 8183], 'mapped', [8182, 953]], - [[8184, 8184], 'mapped', [8056]], - [[8185, 8185], 'mapped', [972]], - [[8186, 8186], 'mapped', [8060]], - [[8187, 8187], 'mapped', [974]], - [[8188, 8188], 'mapped', [969, 953]], - [[8189, 8189], 'disallowed_STD3_mapped', [32, 769]], - [[8190, 8190], 'disallowed_STD3_mapped', [32, 788]], - [[8191, 8191], 'disallowed'], - [[8192, 8202], 'disallowed_STD3_mapped', [32]], - [[8203, 8203], 'ignored'], - [[8204, 8205], 'deviation', []], - [[8206, 8207], 'disallowed'], - [[8208, 8208], 'valid', [], 'NV8'], - [[8209, 8209], 'mapped', [8208]], - [[8210, 8214], 'valid', [], 'NV8'], - [[8215, 8215], 'disallowed_STD3_mapped', [32, 819]], - [[8216, 8227], 'valid', [], 'NV8'], - [[8228, 8230], 'disallowed'], - [[8231, 8231], 'valid', [], 'NV8'], - [[8232, 8238], 'disallowed'], - [[8239, 8239], 'disallowed_STD3_mapped', [32]], - [[8240, 8242], 'valid', [], 'NV8'], - [[8243, 8243], 'mapped', [8242, 8242]], - [[8244, 8244], 'mapped', [8242, 8242, 8242]], - [[8245, 8245], 'valid', [], 'NV8'], - [[8246, 8246], 'mapped', [8245, 8245]], - [[8247, 8247], 'mapped', [8245, 8245, 8245]], - [[8248, 8251], 'valid', [], 'NV8'], - [[8252, 8252], 'disallowed_STD3_mapped', [33, 33]], - [[8253, 8253], 'valid', [], 'NV8'], - [[8254, 8254], 'disallowed_STD3_mapped', [32, 773]], - [[8255, 8262], 'valid', [], 'NV8'], - [[8263, 8263], 'disallowed_STD3_mapped', [63, 63]], - [[8264, 8264], 'disallowed_STD3_mapped', [63, 33]], - [[8265, 8265], 'disallowed_STD3_mapped', [33, 63]], - [[8266, 8269], 'valid', [], 'NV8'], - [[8270, 8274], 'valid', [], 'NV8'], - [[8275, 8276], 'valid', [], 'NV8'], - [[8277, 8278], 'valid', [], 'NV8'], - [[8279, 8279], 'mapped', [8242, 8242, 8242, 8242]], - [[8280, 8286], 'valid', [], 'NV8'], - [[8287, 8287], 'disallowed_STD3_mapped', [32]], - [[8288, 8288], 'ignored'], - [[8289, 8291], 'disallowed'], - [[8292, 8292], 'ignored'], - [[8293, 8293], 'disallowed'], - [[8294, 8297], 'disallowed'], - [[8298, 8303], 'disallowed'], - [[8304, 8304], 'mapped', [48]], - [[8305, 8305], 'mapped', [105]], - [[8306, 8307], 'disallowed'], - [[8308, 8308], 'mapped', [52]], - [[8309, 8309], 'mapped', [53]], - [[8310, 8310], 'mapped', [54]], - [[8311, 8311], 'mapped', [55]], - [[8312, 8312], 'mapped', [56]], - [[8313, 8313], 'mapped', [57]], - [[8314, 8314], 'disallowed_STD3_mapped', [43]], - [[8315, 8315], 'mapped', [8722]], - [[8316, 8316], 'disallowed_STD3_mapped', [61]], - [[8317, 8317], 'disallowed_STD3_mapped', [40]], - [[8318, 8318], 'disallowed_STD3_mapped', [41]], - [[8319, 8319], 'mapped', [110]], - [[8320, 8320], 'mapped', [48]], - [[8321, 8321], 'mapped', [49]], - [[8322, 8322], 'mapped', [50]], - [[8323, 8323], 'mapped', [51]], - [[8324, 8324], 'mapped', [52]], - [[8325, 8325], 'mapped', [53]], - [[8326, 8326], 'mapped', [54]], - [[8327, 8327], 'mapped', [55]], - [[8328, 8328], 'mapped', [56]], - [[8329, 8329], 'mapped', [57]], - [[8330, 8330], 'disallowed_STD3_mapped', [43]], - [[8331, 8331], 'mapped', [8722]], - [[8332, 8332], 'disallowed_STD3_mapped', [61]], - [[8333, 8333], 'disallowed_STD3_mapped', [40]], - [[8334, 8334], 'disallowed_STD3_mapped', [41]], - [[8335, 8335], 'disallowed'], - [[8336, 8336], 'mapped', [97]], - [[8337, 8337], 'mapped', [101]], - [[8338, 8338], 'mapped', [111]], - [[8339, 8339], 'mapped', [120]], - [[8340, 8340], 'mapped', [601]], - [[8341, 8341], 'mapped', [104]], - [[8342, 8342], 'mapped', [107]], - [[8343, 8343], 'mapped', [108]], - [[8344, 8344], 'mapped', [109]], - [[8345, 8345], 'mapped', [110]], - [[8346, 8346], 'mapped', [112]], - [[8347, 8347], 'mapped', [115]], - [[8348, 8348], 'mapped', [116]], - [[8349, 8351], 'disallowed'], - [[8352, 8359], 'valid', [], 'NV8'], - [[8360, 8360], 'mapped', [114, 115]], - [[8361, 8362], 'valid', [], 'NV8'], - [[8363, 8363], 'valid', [], 'NV8'], - [[8364, 8364], 'valid', [], 'NV8'], - [[8365, 8367], 'valid', [], 'NV8'], - [[8368, 8369], 'valid', [], 'NV8'], - [[8370, 8373], 'valid', [], 'NV8'], - [[8374, 8376], 'valid', [], 'NV8'], - [[8377, 8377], 'valid', [], 'NV8'], - [[8378, 8378], 'valid', [], 'NV8'], - [[8379, 8381], 'valid', [], 'NV8'], - [[8382, 8382], 'valid', [], 'NV8'], - [[8383, 8399], 'disallowed'], - [[8400, 8417], 'valid', [], 'NV8'], - [[8418, 8419], 'valid', [], 'NV8'], - [[8420, 8426], 'valid', [], 'NV8'], - [[8427, 8427], 'valid', [], 'NV8'], - [[8428, 8431], 'valid', [], 'NV8'], - [[8432, 8432], 'valid', [], 'NV8'], - [[8433, 8447], 'disallowed'], - [[8448, 8448], 'disallowed_STD3_mapped', [97, 47, 99]], - [[8449, 8449], 'disallowed_STD3_mapped', [97, 47, 115]], - [[8450, 8450], 'mapped', [99]], - [[8451, 8451], 'mapped', [176, 99]], - [[8452, 8452], 'valid', [], 'NV8'], - [[8453, 8453], 'disallowed_STD3_mapped', [99, 47, 111]], - [[8454, 8454], 'disallowed_STD3_mapped', [99, 47, 117]], - [[8455, 8455], 'mapped', [603]], - [[8456, 8456], 'valid', [], 'NV8'], - [[8457, 8457], 'mapped', [176, 102]], - [[8458, 8458], 'mapped', [103]], - [[8459, 8462], 'mapped', [104]], - [[8463, 8463], 'mapped', [295]], - [[8464, 8465], 'mapped', [105]], - [[8466, 8467], 'mapped', [108]], - [[8468, 8468], 'valid', [], 'NV8'], - [[8469, 8469], 'mapped', [110]], - [[8470, 8470], 'mapped', [110, 111]], - [[8471, 8472], 'valid', [], 'NV8'], - [[8473, 8473], 'mapped', [112]], - [[8474, 8474], 'mapped', [113]], - [[8475, 8477], 'mapped', [114]], - [[8478, 8479], 'valid', [], 'NV8'], - [[8480, 8480], 'mapped', [115, 109]], - [[8481, 8481], 'mapped', [116, 101, 108]], - [[8482, 8482], 'mapped', [116, 109]], - [[8483, 8483], 'valid', [], 'NV8'], - [[8484, 8484], 'mapped', [122]], - [[8485, 8485], 'valid', [], 'NV8'], - [[8486, 8486], 'mapped', [969]], - [[8487, 8487], 'valid', [], 'NV8'], - [[8488, 8488], 'mapped', [122]], - [[8489, 8489], 'valid', [], 'NV8'], - [[8490, 8490], 'mapped', [107]], - [[8491, 8491], 'mapped', [229]], - [[8492, 8492], 'mapped', [98]], - [[8493, 8493], 'mapped', [99]], - [[8494, 8494], 'valid', [], 'NV8'], - [[8495, 8496], 'mapped', [101]], - [[8497, 8497], 'mapped', [102]], - [[8498, 8498], 'disallowed'], - [[8499, 8499], 'mapped', [109]], - [[8500, 8500], 'mapped', [111]], - [[8501, 8501], 'mapped', [1488]], - [[8502, 8502], 'mapped', [1489]], - [[8503, 8503], 'mapped', [1490]], - [[8504, 8504], 'mapped', [1491]], - [[8505, 8505], 'mapped', [105]], - [[8506, 8506], 'valid', [], 'NV8'], - [[8507, 8507], 'mapped', [102, 97, 120]], - [[8508, 8508], 'mapped', [960]], - [[8509, 8510], 'mapped', [947]], - [[8511, 8511], 'mapped', [960]], - [[8512, 8512], 'mapped', [8721]], - [[8513, 8516], 'valid', [], 'NV8'], - [[8517, 8518], 'mapped', [100]], - [[8519, 8519], 'mapped', [101]], - [[8520, 8520], 'mapped', [105]], - [[8521, 8521], 'mapped', [106]], - [[8522, 8523], 'valid', [], 'NV8'], - [[8524, 8524], 'valid', [], 'NV8'], - [[8525, 8525], 'valid', [], 'NV8'], - [[8526, 8526], 'valid'], - [[8527, 8527], 'valid', [], 'NV8'], - [[8528, 8528], 'mapped', [49, 8260, 55]], - [[8529, 8529], 'mapped', [49, 8260, 57]], - [[8530, 8530], 'mapped', [49, 8260, 49, 48]], - [[8531, 8531], 'mapped', [49, 8260, 51]], - [[8532, 8532], 'mapped', [50, 8260, 51]], - [[8533, 8533], 'mapped', [49, 8260, 53]], - [[8534, 8534], 'mapped', [50, 8260, 53]], - [[8535, 8535], 'mapped', [51, 8260, 53]], - [[8536, 8536], 'mapped', [52, 8260, 53]], - [[8537, 8537], 'mapped', [49, 8260, 54]], - [[8538, 8538], 'mapped', [53, 8260, 54]], - [[8539, 8539], 'mapped', [49, 8260, 56]], - [[8540, 8540], 'mapped', [51, 8260, 56]], - [[8541, 8541], 'mapped', [53, 8260, 56]], - [[8542, 8542], 'mapped', [55, 8260, 56]], - [[8543, 8543], 'mapped', [49, 8260]], - [[8544, 8544], 'mapped', [105]], - [[8545, 8545], 'mapped', [105, 105]], - [[8546, 8546], 'mapped', [105, 105, 105]], - [[8547, 8547], 'mapped', [105, 118]], - [[8548, 8548], 'mapped', [118]], - [[8549, 8549], 'mapped', [118, 105]], - [[8550, 8550], 'mapped', [118, 105, 105]], - [[8551, 8551], 'mapped', [118, 105, 105, 105]], - [[8552, 8552], 'mapped', [105, 120]], - [[8553, 8553], 'mapped', [120]], - [[8554, 8554], 'mapped', [120, 105]], - [[8555, 8555], 'mapped', [120, 105, 105]], - [[8556, 8556], 'mapped', [108]], - [[8557, 8557], 'mapped', [99]], - [[8558, 8558], 'mapped', [100]], - [[8559, 8559], 'mapped', [109]], - [[8560, 8560], 'mapped', [105]], - [[8561, 8561], 'mapped', [105, 105]], - [[8562, 8562], 'mapped', [105, 105, 105]], - [[8563, 8563], 'mapped', [105, 118]], - [[8564, 8564], 'mapped', [118]], - [[8565, 8565], 'mapped', [118, 105]], - [[8566, 8566], 'mapped', [118, 105, 105]], - [[8567, 8567], 'mapped', [118, 105, 105, 105]], - [[8568, 8568], 'mapped', [105, 120]], - [[8569, 8569], 'mapped', [120]], - [[8570, 8570], 'mapped', [120, 105]], - [[8571, 8571], 'mapped', [120, 105, 105]], - [[8572, 8572], 'mapped', [108]], - [[8573, 8573], 'mapped', [99]], - [[8574, 8574], 'mapped', [100]], - [[8575, 8575], 'mapped', [109]], - [[8576, 8578], 'valid', [], 'NV8'], - [[8579, 8579], 'disallowed'], - [[8580, 8580], 'valid'], - [[8581, 8584], 'valid', [], 'NV8'], - [[8585, 8585], 'mapped', [48, 8260, 51]], - [[8586, 8587], 'valid', [], 'NV8'], - [[8588, 8591], 'disallowed'], - [[8592, 8682], 'valid', [], 'NV8'], - [[8683, 8691], 'valid', [], 'NV8'], - [[8692, 8703], 'valid', [], 'NV8'], - [[8704, 8747], 'valid', [], 'NV8'], - [[8748, 8748], 'mapped', [8747, 8747]], - [[8749, 8749], 'mapped', [8747, 8747, 8747]], - [[8750, 8750], 'valid', [], 'NV8'], - [[8751, 8751], 'mapped', [8750, 8750]], - [[8752, 8752], 'mapped', [8750, 8750, 8750]], - [[8753, 8799], 'valid', [], 'NV8'], - [[8800, 8800], 'disallowed_STD3_valid'], - [[8801, 8813], 'valid', [], 'NV8'], - [[8814, 8815], 'disallowed_STD3_valid'], - [[8816, 8945], 'valid', [], 'NV8'], - [[8946, 8959], 'valid', [], 'NV8'], - [[8960, 8960], 'valid', [], 'NV8'], - [[8961, 8961], 'valid', [], 'NV8'], - [[8962, 9e3], 'valid', [], 'NV8'], - [[9001, 9001], 'mapped', [12296]], - [[9002, 9002], 'mapped', [12297]], - [[9003, 9082], 'valid', [], 'NV8'], - [[9083, 9083], 'valid', [], 'NV8'], - [[9084, 9084], 'valid', [], 'NV8'], - [[9085, 9114], 'valid', [], 'NV8'], - [[9115, 9166], 'valid', [], 'NV8'], - [[9167, 9168], 'valid', [], 'NV8'], - [[9169, 9179], 'valid', [], 'NV8'], - [[9180, 9191], 'valid', [], 'NV8'], - [[9192, 9192], 'valid', [], 'NV8'], - [[9193, 9203], 'valid', [], 'NV8'], - [[9204, 9210], 'valid', [], 'NV8'], - [[9211, 9215], 'disallowed'], - [[9216, 9252], 'valid', [], 'NV8'], - [[9253, 9254], 'valid', [], 'NV8'], - [[9255, 9279], 'disallowed'], - [[9280, 9290], 'valid', [], 'NV8'], - [[9291, 9311], 'disallowed'], - [[9312, 9312], 'mapped', [49]], - [[9313, 9313], 'mapped', [50]], - [[9314, 9314], 'mapped', [51]], - [[9315, 9315], 'mapped', [52]], - [[9316, 9316], 'mapped', [53]], - [[9317, 9317], 'mapped', [54]], - [[9318, 9318], 'mapped', [55]], - [[9319, 9319], 'mapped', [56]], - [[9320, 9320], 'mapped', [57]], - [[9321, 9321], 'mapped', [49, 48]], - [[9322, 9322], 'mapped', [49, 49]], - [[9323, 9323], 'mapped', [49, 50]], - [[9324, 9324], 'mapped', [49, 51]], - [[9325, 9325], 'mapped', [49, 52]], - [[9326, 9326], 'mapped', [49, 53]], - [[9327, 9327], 'mapped', [49, 54]], - [[9328, 9328], 'mapped', [49, 55]], - [[9329, 9329], 'mapped', [49, 56]], - [[9330, 9330], 'mapped', [49, 57]], - [[9331, 9331], 'mapped', [50, 48]], - [[9332, 9332], 'disallowed_STD3_mapped', [40, 49, 41]], - [[9333, 9333], 'disallowed_STD3_mapped', [40, 50, 41]], - [[9334, 9334], 'disallowed_STD3_mapped', [40, 51, 41]], - [[9335, 9335], 'disallowed_STD3_mapped', [40, 52, 41]], - [[9336, 9336], 'disallowed_STD3_mapped', [40, 53, 41]], - [[9337, 9337], 'disallowed_STD3_mapped', [40, 54, 41]], - [[9338, 9338], 'disallowed_STD3_mapped', [40, 55, 41]], - [[9339, 9339], 'disallowed_STD3_mapped', [40, 56, 41]], - [[9340, 9340], 'disallowed_STD3_mapped', [40, 57, 41]], - [[9341, 9341], 'disallowed_STD3_mapped', [40, 49, 48, 41]], - [[9342, 9342], 'disallowed_STD3_mapped', [40, 49, 49, 41]], - [[9343, 9343], 'disallowed_STD3_mapped', [40, 49, 50, 41]], - [[9344, 9344], 'disallowed_STD3_mapped', [40, 49, 51, 41]], - [[9345, 9345], 'disallowed_STD3_mapped', [40, 49, 52, 41]], - [[9346, 9346], 'disallowed_STD3_mapped', [40, 49, 53, 41]], - [[9347, 9347], 'disallowed_STD3_mapped', [40, 49, 54, 41]], - [[9348, 9348], 'disallowed_STD3_mapped', [40, 49, 55, 41]], - [[9349, 9349], 'disallowed_STD3_mapped', [40, 49, 56, 41]], - [[9350, 9350], 'disallowed_STD3_mapped', [40, 49, 57, 41]], - [[9351, 9351], 'disallowed_STD3_mapped', [40, 50, 48, 41]], - [[9352, 9371], 'disallowed'], - [[9372, 9372], 'disallowed_STD3_mapped', [40, 97, 41]], - [[9373, 9373], 'disallowed_STD3_mapped', [40, 98, 41]], - [[9374, 9374], 'disallowed_STD3_mapped', [40, 99, 41]], - [[9375, 9375], 'disallowed_STD3_mapped', [40, 100, 41]], - [[9376, 9376], 'disallowed_STD3_mapped', [40, 101, 41]], - [[9377, 9377], 'disallowed_STD3_mapped', [40, 102, 41]], - [[9378, 9378], 'disallowed_STD3_mapped', [40, 103, 41]], - [[9379, 9379], 'disallowed_STD3_mapped', [40, 104, 41]], - [[9380, 9380], 'disallowed_STD3_mapped', [40, 105, 41]], - [[9381, 9381], 'disallowed_STD3_mapped', [40, 106, 41]], - [[9382, 9382], 'disallowed_STD3_mapped', [40, 107, 41]], - [[9383, 9383], 'disallowed_STD3_mapped', [40, 108, 41]], - [[9384, 9384], 'disallowed_STD3_mapped', [40, 109, 41]], - [[9385, 9385], 'disallowed_STD3_mapped', [40, 110, 41]], - [[9386, 9386], 'disallowed_STD3_mapped', [40, 111, 41]], - [[9387, 9387], 'disallowed_STD3_mapped', [40, 112, 41]], - [[9388, 9388], 'disallowed_STD3_mapped', [40, 113, 41]], - [[9389, 9389], 'disallowed_STD3_mapped', [40, 114, 41]], - [[9390, 9390], 'disallowed_STD3_mapped', [40, 115, 41]], - [[9391, 9391], 'disallowed_STD3_mapped', [40, 116, 41]], - [[9392, 9392], 'disallowed_STD3_mapped', [40, 117, 41]], - [[9393, 9393], 'disallowed_STD3_mapped', [40, 118, 41]], - [[9394, 9394], 'disallowed_STD3_mapped', [40, 119, 41]], - [[9395, 9395], 'disallowed_STD3_mapped', [40, 120, 41]], - [[9396, 9396], 'disallowed_STD3_mapped', [40, 121, 41]], - [[9397, 9397], 'disallowed_STD3_mapped', [40, 122, 41]], - [[9398, 9398], 'mapped', [97]], - [[9399, 9399], 'mapped', [98]], - [[9400, 9400], 'mapped', [99]], - [[9401, 9401], 'mapped', [100]], - [[9402, 9402], 'mapped', [101]], - [[9403, 9403], 'mapped', [102]], - [[9404, 9404], 'mapped', [103]], - [[9405, 9405], 'mapped', [104]], - [[9406, 9406], 'mapped', [105]], - [[9407, 9407], 'mapped', [106]], - [[9408, 9408], 'mapped', [107]], - [[9409, 9409], 'mapped', [108]], - [[9410, 9410], 'mapped', [109]], - [[9411, 9411], 'mapped', [110]], - [[9412, 9412], 'mapped', [111]], - [[9413, 9413], 'mapped', [112]], - [[9414, 9414], 'mapped', [113]], - [[9415, 9415], 'mapped', [114]], - [[9416, 9416], 'mapped', [115]], - [[9417, 9417], 'mapped', [116]], - [[9418, 9418], 'mapped', [117]], - [[9419, 9419], 'mapped', [118]], - [[9420, 9420], 'mapped', [119]], - [[9421, 9421], 'mapped', [120]], - [[9422, 9422], 'mapped', [121]], - [[9423, 9423], 'mapped', [122]], - [[9424, 9424], 'mapped', [97]], - [[9425, 9425], 'mapped', [98]], - [[9426, 9426], 'mapped', [99]], - [[9427, 9427], 'mapped', [100]], - [[9428, 9428], 'mapped', [101]], - [[9429, 9429], 'mapped', [102]], - [[9430, 9430], 'mapped', [103]], - [[9431, 9431], 'mapped', [104]], - [[9432, 9432], 'mapped', [105]], - [[9433, 9433], 'mapped', [106]], - [[9434, 9434], 'mapped', [107]], - [[9435, 9435], 'mapped', [108]], - [[9436, 9436], 'mapped', [109]], - [[9437, 9437], 'mapped', [110]], - [[9438, 9438], 'mapped', [111]], - [[9439, 9439], 'mapped', [112]], - [[9440, 9440], 'mapped', [113]], - [[9441, 9441], 'mapped', [114]], - [[9442, 9442], 'mapped', [115]], - [[9443, 9443], 'mapped', [116]], - [[9444, 9444], 'mapped', [117]], - [[9445, 9445], 'mapped', [118]], - [[9446, 9446], 'mapped', [119]], - [[9447, 9447], 'mapped', [120]], - [[9448, 9448], 'mapped', [121]], - [[9449, 9449], 'mapped', [122]], - [[9450, 9450], 'mapped', [48]], - [[9451, 9470], 'valid', [], 'NV8'], - [[9471, 9471], 'valid', [], 'NV8'], - [[9472, 9621], 'valid', [], 'NV8'], - [[9622, 9631], 'valid', [], 'NV8'], - [[9632, 9711], 'valid', [], 'NV8'], - [[9712, 9719], 'valid', [], 'NV8'], - [[9720, 9727], 'valid', [], 'NV8'], - [[9728, 9747], 'valid', [], 'NV8'], - [[9748, 9749], 'valid', [], 'NV8'], - [[9750, 9751], 'valid', [], 'NV8'], - [[9752, 9752], 'valid', [], 'NV8'], - [[9753, 9753], 'valid', [], 'NV8'], - [[9754, 9839], 'valid', [], 'NV8'], - [[9840, 9841], 'valid', [], 'NV8'], - [[9842, 9853], 'valid', [], 'NV8'], - [[9854, 9855], 'valid', [], 'NV8'], - [[9856, 9865], 'valid', [], 'NV8'], - [[9866, 9873], 'valid', [], 'NV8'], - [[9874, 9884], 'valid', [], 'NV8'], - [[9885, 9885], 'valid', [], 'NV8'], - [[9886, 9887], 'valid', [], 'NV8'], - [[9888, 9889], 'valid', [], 'NV8'], - [[9890, 9905], 'valid', [], 'NV8'], - [[9906, 9906], 'valid', [], 'NV8'], - [[9907, 9916], 'valid', [], 'NV8'], - [[9917, 9919], 'valid', [], 'NV8'], - [[9920, 9923], 'valid', [], 'NV8'], - [[9924, 9933], 'valid', [], 'NV8'], - [[9934, 9934], 'valid', [], 'NV8'], - [[9935, 9953], 'valid', [], 'NV8'], - [[9954, 9954], 'valid', [], 'NV8'], - [[9955, 9955], 'valid', [], 'NV8'], - [[9956, 9959], 'valid', [], 'NV8'], - [[9960, 9983], 'valid', [], 'NV8'], - [[9984, 9984], 'valid', [], 'NV8'], - [[9985, 9988], 'valid', [], 'NV8'], - [[9989, 9989], 'valid', [], 'NV8'], - [[9990, 9993], 'valid', [], 'NV8'], - [[9994, 9995], 'valid', [], 'NV8'], - [[9996, 10023], 'valid', [], 'NV8'], - [[10024, 10024], 'valid', [], 'NV8'], - [[10025, 10059], 'valid', [], 'NV8'], - [[10060, 10060], 'valid', [], 'NV8'], - [[10061, 10061], 'valid', [], 'NV8'], - [[10062, 10062], 'valid', [], 'NV8'], - [[10063, 10066], 'valid', [], 'NV8'], - [[10067, 10069], 'valid', [], 'NV8'], - [[10070, 10070], 'valid', [], 'NV8'], - [[10071, 10071], 'valid', [], 'NV8'], - [[10072, 10078], 'valid', [], 'NV8'], - [[10079, 10080], 'valid', [], 'NV8'], - [[10081, 10087], 'valid', [], 'NV8'], - [[10088, 10101], 'valid', [], 'NV8'], - [[10102, 10132], 'valid', [], 'NV8'], - [[10133, 10135], 'valid', [], 'NV8'], - [[10136, 10159], 'valid', [], 'NV8'], - [[10160, 10160], 'valid', [], 'NV8'], - [[10161, 10174], 'valid', [], 'NV8'], - [[10175, 10175], 'valid', [], 'NV8'], - [[10176, 10182], 'valid', [], 'NV8'], - [[10183, 10186], 'valid', [], 'NV8'], - [[10187, 10187], 'valid', [], 'NV8'], - [[10188, 10188], 'valid', [], 'NV8'], - [[10189, 10189], 'valid', [], 'NV8'], - [[10190, 10191], 'valid', [], 'NV8'], - [[10192, 10219], 'valid', [], 'NV8'], - [[10220, 10223], 'valid', [], 'NV8'], - [[10224, 10239], 'valid', [], 'NV8'], - [[10240, 10495], 'valid', [], 'NV8'], - [[10496, 10763], 'valid', [], 'NV8'], - [[10764, 10764], 'mapped', [8747, 8747, 8747, 8747]], - [[10765, 10867], 'valid', [], 'NV8'], - [[10868, 10868], 'disallowed_STD3_mapped', [58, 58, 61]], - [[10869, 10869], 'disallowed_STD3_mapped', [61, 61]], - [[10870, 10870], 'disallowed_STD3_mapped', [61, 61, 61]], - [[10871, 10971], 'valid', [], 'NV8'], - [[10972, 10972], 'mapped', [10973, 824]], - [[10973, 11007], 'valid', [], 'NV8'], - [[11008, 11021], 'valid', [], 'NV8'], - [[11022, 11027], 'valid', [], 'NV8'], - [[11028, 11034], 'valid', [], 'NV8'], - [[11035, 11039], 'valid', [], 'NV8'], - [[11040, 11043], 'valid', [], 'NV8'], - [[11044, 11084], 'valid', [], 'NV8'], - [[11085, 11087], 'valid', [], 'NV8'], - [[11088, 11092], 'valid', [], 'NV8'], - [[11093, 11097], 'valid', [], 'NV8'], - [[11098, 11123], 'valid', [], 'NV8'], - [[11124, 11125], 'disallowed'], - [[11126, 11157], 'valid', [], 'NV8'], - [[11158, 11159], 'disallowed'], - [[11160, 11193], 'valid', [], 'NV8'], - [[11194, 11196], 'disallowed'], - [[11197, 11208], 'valid', [], 'NV8'], - [[11209, 11209], 'disallowed'], - [[11210, 11217], 'valid', [], 'NV8'], - [[11218, 11243], 'disallowed'], - [[11244, 11247], 'valid', [], 'NV8'], - [[11248, 11263], 'disallowed'], - [[11264, 11264], 'mapped', [11312]], - [[11265, 11265], 'mapped', [11313]], - [[11266, 11266], 'mapped', [11314]], - [[11267, 11267], 'mapped', [11315]], - [[11268, 11268], 'mapped', [11316]], - [[11269, 11269], 'mapped', [11317]], - [[11270, 11270], 'mapped', [11318]], - [[11271, 11271], 'mapped', [11319]], - [[11272, 11272], 'mapped', [11320]], - [[11273, 11273], 'mapped', [11321]], - [[11274, 11274], 'mapped', [11322]], - [[11275, 11275], 'mapped', [11323]], - [[11276, 11276], 'mapped', [11324]], - [[11277, 11277], 'mapped', [11325]], - [[11278, 11278], 'mapped', [11326]], - [[11279, 11279], 'mapped', [11327]], - [[11280, 11280], 'mapped', [11328]], - [[11281, 11281], 'mapped', [11329]], - [[11282, 11282], 'mapped', [11330]], - [[11283, 11283], 'mapped', [11331]], - [[11284, 11284], 'mapped', [11332]], - [[11285, 11285], 'mapped', [11333]], - [[11286, 11286], 'mapped', [11334]], - [[11287, 11287], 'mapped', [11335]], - [[11288, 11288], 'mapped', [11336]], - [[11289, 11289], 'mapped', [11337]], - [[11290, 11290], 'mapped', [11338]], - [[11291, 11291], 'mapped', [11339]], - [[11292, 11292], 'mapped', [11340]], - [[11293, 11293], 'mapped', [11341]], - [[11294, 11294], 'mapped', [11342]], - [[11295, 11295], 'mapped', [11343]], - [[11296, 11296], 'mapped', [11344]], - [[11297, 11297], 'mapped', [11345]], - [[11298, 11298], 'mapped', [11346]], - [[11299, 11299], 'mapped', [11347]], - [[11300, 11300], 'mapped', [11348]], - [[11301, 11301], 'mapped', [11349]], - [[11302, 11302], 'mapped', [11350]], - [[11303, 11303], 'mapped', [11351]], - [[11304, 11304], 'mapped', [11352]], - [[11305, 11305], 'mapped', [11353]], - [[11306, 11306], 'mapped', [11354]], - [[11307, 11307], 'mapped', [11355]], - [[11308, 11308], 'mapped', [11356]], - [[11309, 11309], 'mapped', [11357]], - [[11310, 11310], 'mapped', [11358]], - [[11311, 11311], 'disallowed'], - [[11312, 11358], 'valid'], - [[11359, 11359], 'disallowed'], - [[11360, 11360], 'mapped', [11361]], - [[11361, 11361], 'valid'], - [[11362, 11362], 'mapped', [619]], - [[11363, 11363], 'mapped', [7549]], - [[11364, 11364], 'mapped', [637]], - [[11365, 11366], 'valid'], - [[11367, 11367], 'mapped', [11368]], - [[11368, 11368], 'valid'], - [[11369, 11369], 'mapped', [11370]], - [[11370, 11370], 'valid'], - [[11371, 11371], 'mapped', [11372]], - [[11372, 11372], 'valid'], - [[11373, 11373], 'mapped', [593]], - [[11374, 11374], 'mapped', [625]], - [[11375, 11375], 'mapped', [592]], - [[11376, 11376], 'mapped', [594]], - [[11377, 11377], 'valid'], - [[11378, 11378], 'mapped', [11379]], - [[11379, 11379], 'valid'], - [[11380, 11380], 'valid'], - [[11381, 11381], 'mapped', [11382]], - [[11382, 11383], 'valid'], - [[11384, 11387], 'valid'], - [[11388, 11388], 'mapped', [106]], - [[11389, 11389], 'mapped', [118]], - [[11390, 11390], 'mapped', [575]], - [[11391, 11391], 'mapped', [576]], - [[11392, 11392], 'mapped', [11393]], - [[11393, 11393], 'valid'], - [[11394, 11394], 'mapped', [11395]], - [[11395, 11395], 'valid'], - [[11396, 11396], 'mapped', [11397]], - [[11397, 11397], 'valid'], - [[11398, 11398], 'mapped', [11399]], - [[11399, 11399], 'valid'], - [[11400, 11400], 'mapped', [11401]], - [[11401, 11401], 'valid'], - [[11402, 11402], 'mapped', [11403]], - [[11403, 11403], 'valid'], - [[11404, 11404], 'mapped', [11405]], - [[11405, 11405], 'valid'], - [[11406, 11406], 'mapped', [11407]], - [[11407, 11407], 'valid'], - [[11408, 11408], 'mapped', [11409]], - [[11409, 11409], 'valid'], - [[11410, 11410], 'mapped', [11411]], - [[11411, 11411], 'valid'], - [[11412, 11412], 'mapped', [11413]], - [[11413, 11413], 'valid'], - [[11414, 11414], 'mapped', [11415]], - [[11415, 11415], 'valid'], - [[11416, 11416], 'mapped', [11417]], - [[11417, 11417], 'valid'], - [[11418, 11418], 'mapped', [11419]], - [[11419, 11419], 'valid'], - [[11420, 11420], 'mapped', [11421]], - [[11421, 11421], 'valid'], - [[11422, 11422], 'mapped', [11423]], - [[11423, 11423], 'valid'], - [[11424, 11424], 'mapped', [11425]], - [[11425, 11425], 'valid'], - [[11426, 11426], 'mapped', [11427]], - [[11427, 11427], 'valid'], - [[11428, 11428], 'mapped', [11429]], - [[11429, 11429], 'valid'], - [[11430, 11430], 'mapped', [11431]], - [[11431, 11431], 'valid'], - [[11432, 11432], 'mapped', [11433]], - [[11433, 11433], 'valid'], - [[11434, 11434], 'mapped', [11435]], - [[11435, 11435], 'valid'], - [[11436, 11436], 'mapped', [11437]], - [[11437, 11437], 'valid'], - [[11438, 11438], 'mapped', [11439]], - [[11439, 11439], 'valid'], - [[11440, 11440], 'mapped', [11441]], - [[11441, 11441], 'valid'], - [[11442, 11442], 'mapped', [11443]], - [[11443, 11443], 'valid'], - [[11444, 11444], 'mapped', [11445]], - [[11445, 11445], 'valid'], - [[11446, 11446], 'mapped', [11447]], - [[11447, 11447], 'valid'], - [[11448, 11448], 'mapped', [11449]], - [[11449, 11449], 'valid'], - [[11450, 11450], 'mapped', [11451]], - [[11451, 11451], 'valid'], - [[11452, 11452], 'mapped', [11453]], - [[11453, 11453], 'valid'], - [[11454, 11454], 'mapped', [11455]], - [[11455, 11455], 'valid'], - [[11456, 11456], 'mapped', [11457]], - [[11457, 11457], 'valid'], - [[11458, 11458], 'mapped', [11459]], - [[11459, 11459], 'valid'], - [[11460, 11460], 'mapped', [11461]], - [[11461, 11461], 'valid'], - [[11462, 11462], 'mapped', [11463]], - [[11463, 11463], 'valid'], - [[11464, 11464], 'mapped', [11465]], - [[11465, 11465], 'valid'], - [[11466, 11466], 'mapped', [11467]], - [[11467, 11467], 'valid'], - [[11468, 11468], 'mapped', [11469]], - [[11469, 11469], 'valid'], - [[11470, 11470], 'mapped', [11471]], - [[11471, 11471], 'valid'], - [[11472, 11472], 'mapped', [11473]], - [[11473, 11473], 'valid'], - [[11474, 11474], 'mapped', [11475]], - [[11475, 11475], 'valid'], - [[11476, 11476], 'mapped', [11477]], - [[11477, 11477], 'valid'], - [[11478, 11478], 'mapped', [11479]], - [[11479, 11479], 'valid'], - [[11480, 11480], 'mapped', [11481]], - [[11481, 11481], 'valid'], - [[11482, 11482], 'mapped', [11483]], - [[11483, 11483], 'valid'], - [[11484, 11484], 'mapped', [11485]], - [[11485, 11485], 'valid'], - [[11486, 11486], 'mapped', [11487]], - [[11487, 11487], 'valid'], - [[11488, 11488], 'mapped', [11489]], - [[11489, 11489], 'valid'], - [[11490, 11490], 'mapped', [11491]], - [[11491, 11492], 'valid'], - [[11493, 11498], 'valid', [], 'NV8'], - [[11499, 11499], 'mapped', [11500]], - [[11500, 11500], 'valid'], - [[11501, 11501], 'mapped', [11502]], - [[11502, 11505], 'valid'], - [[11506, 11506], 'mapped', [11507]], - [[11507, 11507], 'valid'], - [[11508, 11512], 'disallowed'], - [[11513, 11519], 'valid', [], 'NV8'], - [[11520, 11557], 'valid'], - [[11558, 11558], 'disallowed'], - [[11559, 11559], 'valid'], - [[11560, 11564], 'disallowed'], - [[11565, 11565], 'valid'], - [[11566, 11567], 'disallowed'], - [[11568, 11621], 'valid'], - [[11622, 11623], 'valid'], - [[11624, 11630], 'disallowed'], - [[11631, 11631], 'mapped', [11617]], - [[11632, 11632], 'valid', [], 'NV8'], - [[11633, 11646], 'disallowed'], - [[11647, 11647], 'valid'], - [[11648, 11670], 'valid'], - [[11671, 11679], 'disallowed'], - [[11680, 11686], 'valid'], - [[11687, 11687], 'disallowed'], - [[11688, 11694], 'valid'], - [[11695, 11695], 'disallowed'], - [[11696, 11702], 'valid'], - [[11703, 11703], 'disallowed'], - [[11704, 11710], 'valid'], - [[11711, 11711], 'disallowed'], - [[11712, 11718], 'valid'], - [[11719, 11719], 'disallowed'], - [[11720, 11726], 'valid'], - [[11727, 11727], 'disallowed'], - [[11728, 11734], 'valid'], - [[11735, 11735], 'disallowed'], - [[11736, 11742], 'valid'], - [[11743, 11743], 'disallowed'], - [[11744, 11775], 'valid'], - [[11776, 11799], 'valid', [], 'NV8'], - [[11800, 11803], 'valid', [], 'NV8'], - [[11804, 11805], 'valid', [], 'NV8'], - [[11806, 11822], 'valid', [], 'NV8'], - [[11823, 11823], 'valid'], - [[11824, 11824], 'valid', [], 'NV8'], - [[11825, 11825], 'valid', [], 'NV8'], - [[11826, 11835], 'valid', [], 'NV8'], - [[11836, 11842], 'valid', [], 'NV8'], - [[11843, 11903], 'disallowed'], - [[11904, 11929], 'valid', [], 'NV8'], - [[11930, 11930], 'disallowed'], - [[11931, 11934], 'valid', [], 'NV8'], - [[11935, 11935], 'mapped', [27597]], - [[11936, 12018], 'valid', [], 'NV8'], - [[12019, 12019], 'mapped', [40863]], - [[12020, 12031], 'disallowed'], - [[12032, 12032], 'mapped', [19968]], - [[12033, 12033], 'mapped', [20008]], - [[12034, 12034], 'mapped', [20022]], - [[12035, 12035], 'mapped', [20031]], - [[12036, 12036], 'mapped', [20057]], - [[12037, 12037], 'mapped', [20101]], - [[12038, 12038], 'mapped', [20108]], - [[12039, 12039], 'mapped', [20128]], - [[12040, 12040], 'mapped', [20154]], - [[12041, 12041], 'mapped', [20799]], - [[12042, 12042], 'mapped', [20837]], - [[12043, 12043], 'mapped', [20843]], - [[12044, 12044], 'mapped', [20866]], - [[12045, 12045], 'mapped', [20886]], - [[12046, 12046], 'mapped', [20907]], - [[12047, 12047], 'mapped', [20960]], - [[12048, 12048], 'mapped', [20981]], - [[12049, 12049], 'mapped', [20992]], - [[12050, 12050], 'mapped', [21147]], - [[12051, 12051], 'mapped', [21241]], - [[12052, 12052], 'mapped', [21269]], - [[12053, 12053], 'mapped', [21274]], - [[12054, 12054], 'mapped', [21304]], - [[12055, 12055], 'mapped', [21313]], - [[12056, 12056], 'mapped', [21340]], - [[12057, 12057], 'mapped', [21353]], - [[12058, 12058], 'mapped', [21378]], - [[12059, 12059], 'mapped', [21430]], - [[12060, 12060], 'mapped', [21448]], - [[12061, 12061], 'mapped', [21475]], - [[12062, 12062], 'mapped', [22231]], - [[12063, 12063], 'mapped', [22303]], - [[12064, 12064], 'mapped', [22763]], - [[12065, 12065], 'mapped', [22786]], - [[12066, 12066], 'mapped', [22794]], - [[12067, 12067], 'mapped', [22805]], - [[12068, 12068], 'mapped', [22823]], - [[12069, 12069], 'mapped', [22899]], - [[12070, 12070], 'mapped', [23376]], - [[12071, 12071], 'mapped', [23424]], - [[12072, 12072], 'mapped', [23544]], - [[12073, 12073], 'mapped', [23567]], - [[12074, 12074], 'mapped', [23586]], - [[12075, 12075], 'mapped', [23608]], - [[12076, 12076], 'mapped', [23662]], - [[12077, 12077], 'mapped', [23665]], - [[12078, 12078], 'mapped', [24027]], - [[12079, 12079], 'mapped', [24037]], - [[12080, 12080], 'mapped', [24049]], - [[12081, 12081], 'mapped', [24062]], - [[12082, 12082], 'mapped', [24178]], - [[12083, 12083], 'mapped', [24186]], - [[12084, 12084], 'mapped', [24191]], - [[12085, 12085], 'mapped', [24308]], - [[12086, 12086], 'mapped', [24318]], - [[12087, 12087], 'mapped', [24331]], - [[12088, 12088], 'mapped', [24339]], - [[12089, 12089], 'mapped', [24400]], - [[12090, 12090], 'mapped', [24417]], - [[12091, 12091], 'mapped', [24435]], - [[12092, 12092], 'mapped', [24515]], - [[12093, 12093], 'mapped', [25096]], - [[12094, 12094], 'mapped', [25142]], - [[12095, 12095], 'mapped', [25163]], - [[12096, 12096], 'mapped', [25903]], - [[12097, 12097], 'mapped', [25908]], - [[12098, 12098], 'mapped', [25991]], - [[12099, 12099], 'mapped', [26007]], - [[12100, 12100], 'mapped', [26020]], - [[12101, 12101], 'mapped', [26041]], - [[12102, 12102], 'mapped', [26080]], - [[12103, 12103], 'mapped', [26085]], - [[12104, 12104], 'mapped', [26352]], - [[12105, 12105], 'mapped', [26376]], - [[12106, 12106], 'mapped', [26408]], - [[12107, 12107], 'mapped', [27424]], - [[12108, 12108], 'mapped', [27490]], - [[12109, 12109], 'mapped', [27513]], - [[12110, 12110], 'mapped', [27571]], - [[12111, 12111], 'mapped', [27595]], - [[12112, 12112], 'mapped', [27604]], - [[12113, 12113], 'mapped', [27611]], - [[12114, 12114], 'mapped', [27663]], - [[12115, 12115], 'mapped', [27668]], - [[12116, 12116], 'mapped', [27700]], - [[12117, 12117], 'mapped', [28779]], - [[12118, 12118], 'mapped', [29226]], - [[12119, 12119], 'mapped', [29238]], - [[12120, 12120], 'mapped', [29243]], - [[12121, 12121], 'mapped', [29247]], - [[12122, 12122], 'mapped', [29255]], - [[12123, 12123], 'mapped', [29273]], - [[12124, 12124], 'mapped', [29275]], - [[12125, 12125], 'mapped', [29356]], - [[12126, 12126], 'mapped', [29572]], - [[12127, 12127], 'mapped', [29577]], - [[12128, 12128], 'mapped', [29916]], - [[12129, 12129], 'mapped', [29926]], - [[12130, 12130], 'mapped', [29976]], - [[12131, 12131], 'mapped', [29983]], - [[12132, 12132], 'mapped', [29992]], - [[12133, 12133], 'mapped', [3e4]], - [[12134, 12134], 'mapped', [30091]], - [[12135, 12135], 'mapped', [30098]], - [[12136, 12136], 'mapped', [30326]], - [[12137, 12137], 'mapped', [30333]], - [[12138, 12138], 'mapped', [30382]], - [[12139, 12139], 'mapped', [30399]], - [[12140, 12140], 'mapped', [30446]], - [[12141, 12141], 'mapped', [30683]], - [[12142, 12142], 'mapped', [30690]], - [[12143, 12143], 'mapped', [30707]], - [[12144, 12144], 'mapped', [31034]], - [[12145, 12145], 'mapped', [31160]], - [[12146, 12146], 'mapped', [31166]], - [[12147, 12147], 'mapped', [31348]], - [[12148, 12148], 'mapped', [31435]], - [[12149, 12149], 'mapped', [31481]], - [[12150, 12150], 'mapped', [31859]], - [[12151, 12151], 'mapped', [31992]], - [[12152, 12152], 'mapped', [32566]], - [[12153, 12153], 'mapped', [32593]], - [[12154, 12154], 'mapped', [32650]], - [[12155, 12155], 'mapped', [32701]], - [[12156, 12156], 'mapped', [32769]], - [[12157, 12157], 'mapped', [32780]], - [[12158, 12158], 'mapped', [32786]], - [[12159, 12159], 'mapped', [32819]], - [[12160, 12160], 'mapped', [32895]], - [[12161, 12161], 'mapped', [32905]], - [[12162, 12162], 'mapped', [33251]], - [[12163, 12163], 'mapped', [33258]], - [[12164, 12164], 'mapped', [33267]], - [[12165, 12165], 'mapped', [33276]], - [[12166, 12166], 'mapped', [33292]], - [[12167, 12167], 'mapped', [33307]], - [[12168, 12168], 'mapped', [33311]], - [[12169, 12169], 'mapped', [33390]], - [[12170, 12170], 'mapped', [33394]], - [[12171, 12171], 'mapped', [33400]], - [[12172, 12172], 'mapped', [34381]], - [[12173, 12173], 'mapped', [34411]], - [[12174, 12174], 'mapped', [34880]], - [[12175, 12175], 'mapped', [34892]], - [[12176, 12176], 'mapped', [34915]], - [[12177, 12177], 'mapped', [35198]], - [[12178, 12178], 'mapped', [35211]], - [[12179, 12179], 'mapped', [35282]], - [[12180, 12180], 'mapped', [35328]], - [[12181, 12181], 'mapped', [35895]], - [[12182, 12182], 'mapped', [35910]], - [[12183, 12183], 'mapped', [35925]], - [[12184, 12184], 'mapped', [35960]], - [[12185, 12185], 'mapped', [35997]], - [[12186, 12186], 'mapped', [36196]], - [[12187, 12187], 'mapped', [36208]], - [[12188, 12188], 'mapped', [36275]], - [[12189, 12189], 'mapped', [36523]], - [[12190, 12190], 'mapped', [36554]], - [[12191, 12191], 'mapped', [36763]], - [[12192, 12192], 'mapped', [36784]], - [[12193, 12193], 'mapped', [36789]], - [[12194, 12194], 'mapped', [37009]], - [[12195, 12195], 'mapped', [37193]], - [[12196, 12196], 'mapped', [37318]], - [[12197, 12197], 'mapped', [37324]], - [[12198, 12198], 'mapped', [37329]], - [[12199, 12199], 'mapped', [38263]], - [[12200, 12200], 'mapped', [38272]], - [[12201, 12201], 'mapped', [38428]], - [[12202, 12202], 'mapped', [38582]], - [[12203, 12203], 'mapped', [38585]], - [[12204, 12204], 'mapped', [38632]], - [[12205, 12205], 'mapped', [38737]], - [[12206, 12206], 'mapped', [38750]], - [[12207, 12207], 'mapped', [38754]], - [[12208, 12208], 'mapped', [38761]], - [[12209, 12209], 'mapped', [38859]], - [[12210, 12210], 'mapped', [38893]], - [[12211, 12211], 'mapped', [38899]], - [[12212, 12212], 'mapped', [38913]], - [[12213, 12213], 'mapped', [39080]], - [[12214, 12214], 'mapped', [39131]], - [[12215, 12215], 'mapped', [39135]], - [[12216, 12216], 'mapped', [39318]], - [[12217, 12217], 'mapped', [39321]], - [[12218, 12218], 'mapped', [39340]], - [[12219, 12219], 'mapped', [39592]], - [[12220, 12220], 'mapped', [39640]], - [[12221, 12221], 'mapped', [39647]], - [[12222, 12222], 'mapped', [39717]], - [[12223, 12223], 'mapped', [39727]], - [[12224, 12224], 'mapped', [39730]], - [[12225, 12225], 'mapped', [39740]], - [[12226, 12226], 'mapped', [39770]], - [[12227, 12227], 'mapped', [40165]], - [[12228, 12228], 'mapped', [40565]], - [[12229, 12229], 'mapped', [40575]], - [[12230, 12230], 'mapped', [40613]], - [[12231, 12231], 'mapped', [40635]], - [[12232, 12232], 'mapped', [40643]], - [[12233, 12233], 'mapped', [40653]], - [[12234, 12234], 'mapped', [40657]], - [[12235, 12235], 'mapped', [40697]], - [[12236, 12236], 'mapped', [40701]], - [[12237, 12237], 'mapped', [40718]], - [[12238, 12238], 'mapped', [40723]], - [[12239, 12239], 'mapped', [40736]], - [[12240, 12240], 'mapped', [40763]], - [[12241, 12241], 'mapped', [40778]], - [[12242, 12242], 'mapped', [40786]], - [[12243, 12243], 'mapped', [40845]], - [[12244, 12244], 'mapped', [40860]], - [[12245, 12245], 'mapped', [40864]], - [[12246, 12271], 'disallowed'], - [[12272, 12283], 'disallowed'], - [[12284, 12287], 'disallowed'], - [[12288, 12288], 'disallowed_STD3_mapped', [32]], - [[12289, 12289], 'valid', [], 'NV8'], - [[12290, 12290], 'mapped', [46]], - [[12291, 12292], 'valid', [], 'NV8'], - [[12293, 12295], 'valid'], - [[12296, 12329], 'valid', [], 'NV8'], - [[12330, 12333], 'valid'], - [[12334, 12341], 'valid', [], 'NV8'], - [[12342, 12342], 'mapped', [12306]], - [[12343, 12343], 'valid', [], 'NV8'], - [[12344, 12344], 'mapped', [21313]], - [[12345, 12345], 'mapped', [21316]], - [[12346, 12346], 'mapped', [21317]], - [[12347, 12347], 'valid', [], 'NV8'], - [[12348, 12348], 'valid'], - [[12349, 12349], 'valid', [], 'NV8'], - [[12350, 12350], 'valid', [], 'NV8'], - [[12351, 12351], 'valid', [], 'NV8'], - [[12352, 12352], 'disallowed'], - [[12353, 12436], 'valid'], - [[12437, 12438], 'valid'], - [[12439, 12440], 'disallowed'], - [[12441, 12442], 'valid'], - [[12443, 12443], 'disallowed_STD3_mapped', [32, 12441]], - [[12444, 12444], 'disallowed_STD3_mapped', [32, 12442]], - [[12445, 12446], 'valid'], - [[12447, 12447], 'mapped', [12424, 12426]], - [[12448, 12448], 'valid', [], 'NV8'], - [[12449, 12542], 'valid'], - [[12543, 12543], 'mapped', [12467, 12488]], - [[12544, 12548], 'disallowed'], - [[12549, 12588], 'valid'], - [[12589, 12589], 'valid'], - [[12590, 12592], 'disallowed'], - [[12593, 12593], 'mapped', [4352]], - [[12594, 12594], 'mapped', [4353]], - [[12595, 12595], 'mapped', [4522]], - [[12596, 12596], 'mapped', [4354]], - [[12597, 12597], 'mapped', [4524]], - [[12598, 12598], 'mapped', [4525]], - [[12599, 12599], 'mapped', [4355]], - [[12600, 12600], 'mapped', [4356]], - [[12601, 12601], 'mapped', [4357]], - [[12602, 12602], 'mapped', [4528]], - [[12603, 12603], 'mapped', [4529]], - [[12604, 12604], 'mapped', [4530]], - [[12605, 12605], 'mapped', [4531]], - [[12606, 12606], 'mapped', [4532]], - [[12607, 12607], 'mapped', [4533]], - [[12608, 12608], 'mapped', [4378]], - [[12609, 12609], 'mapped', [4358]], - [[12610, 12610], 'mapped', [4359]], - [[12611, 12611], 'mapped', [4360]], - [[12612, 12612], 'mapped', [4385]], - [[12613, 12613], 'mapped', [4361]], - [[12614, 12614], 'mapped', [4362]], - [[12615, 12615], 'mapped', [4363]], - [[12616, 12616], 'mapped', [4364]], - [[12617, 12617], 'mapped', [4365]], - [[12618, 12618], 'mapped', [4366]], - [[12619, 12619], 'mapped', [4367]], - [[12620, 12620], 'mapped', [4368]], - [[12621, 12621], 'mapped', [4369]], - [[12622, 12622], 'mapped', [4370]], - [[12623, 12623], 'mapped', [4449]], - [[12624, 12624], 'mapped', [4450]], - [[12625, 12625], 'mapped', [4451]], - [[12626, 12626], 'mapped', [4452]], - [[12627, 12627], 'mapped', [4453]], - [[12628, 12628], 'mapped', [4454]], - [[12629, 12629], 'mapped', [4455]], - [[12630, 12630], 'mapped', [4456]], - [[12631, 12631], 'mapped', [4457]], - [[12632, 12632], 'mapped', [4458]], - [[12633, 12633], 'mapped', [4459]], - [[12634, 12634], 'mapped', [4460]], - [[12635, 12635], 'mapped', [4461]], - [[12636, 12636], 'mapped', [4462]], - [[12637, 12637], 'mapped', [4463]], - [[12638, 12638], 'mapped', [4464]], - [[12639, 12639], 'mapped', [4465]], - [[12640, 12640], 'mapped', [4466]], - [[12641, 12641], 'mapped', [4467]], - [[12642, 12642], 'mapped', [4468]], - [[12643, 12643], 'mapped', [4469]], - [[12644, 12644], 'disallowed'], - [[12645, 12645], 'mapped', [4372]], - [[12646, 12646], 'mapped', [4373]], - [[12647, 12647], 'mapped', [4551]], - [[12648, 12648], 'mapped', [4552]], - [[12649, 12649], 'mapped', [4556]], - [[12650, 12650], 'mapped', [4558]], - [[12651, 12651], 'mapped', [4563]], - [[12652, 12652], 'mapped', [4567]], - [[12653, 12653], 'mapped', [4569]], - [[12654, 12654], 'mapped', [4380]], - [[12655, 12655], 'mapped', [4573]], - [[12656, 12656], 'mapped', [4575]], - [[12657, 12657], 'mapped', [4381]], - [[12658, 12658], 'mapped', [4382]], - [[12659, 12659], 'mapped', [4384]], - [[12660, 12660], 'mapped', [4386]], - [[12661, 12661], 'mapped', [4387]], - [[12662, 12662], 'mapped', [4391]], - [[12663, 12663], 'mapped', [4393]], - [[12664, 12664], 'mapped', [4395]], - [[12665, 12665], 'mapped', [4396]], - [[12666, 12666], 'mapped', [4397]], - [[12667, 12667], 'mapped', [4398]], - [[12668, 12668], 'mapped', [4399]], - [[12669, 12669], 'mapped', [4402]], - [[12670, 12670], 'mapped', [4406]], - [[12671, 12671], 'mapped', [4416]], - [[12672, 12672], 'mapped', [4423]], - [[12673, 12673], 'mapped', [4428]], - [[12674, 12674], 'mapped', [4593]], - [[12675, 12675], 'mapped', [4594]], - [[12676, 12676], 'mapped', [4439]], - [[12677, 12677], 'mapped', [4440]], - [[12678, 12678], 'mapped', [4441]], - [[12679, 12679], 'mapped', [4484]], - [[12680, 12680], 'mapped', [4485]], - [[12681, 12681], 'mapped', [4488]], - [[12682, 12682], 'mapped', [4497]], - [[12683, 12683], 'mapped', [4498]], - [[12684, 12684], 'mapped', [4500]], - [[12685, 12685], 'mapped', [4510]], - [[12686, 12686], 'mapped', [4513]], - [[12687, 12687], 'disallowed'], - [[12688, 12689], 'valid', [], 'NV8'], - [[12690, 12690], 'mapped', [19968]], - [[12691, 12691], 'mapped', [20108]], - [[12692, 12692], 'mapped', [19977]], - [[12693, 12693], 'mapped', [22235]], - [[12694, 12694], 'mapped', [19978]], - [[12695, 12695], 'mapped', [20013]], - [[12696, 12696], 'mapped', [19979]], - [[12697, 12697], 'mapped', [30002]], - [[12698, 12698], 'mapped', [20057]], - [[12699, 12699], 'mapped', [19993]], - [[12700, 12700], 'mapped', [19969]], - [[12701, 12701], 'mapped', [22825]], - [[12702, 12702], 'mapped', [22320]], - [[12703, 12703], 'mapped', [20154]], - [[12704, 12727], 'valid'], - [[12728, 12730], 'valid'], - [[12731, 12735], 'disallowed'], - [[12736, 12751], 'valid', [], 'NV8'], - [[12752, 12771], 'valid', [], 'NV8'], - [[12772, 12783], 'disallowed'], - [[12784, 12799], 'valid'], - [[12800, 12800], 'disallowed_STD3_mapped', [40, 4352, 41]], - [[12801, 12801], 'disallowed_STD3_mapped', [40, 4354, 41]], - [[12802, 12802], 'disallowed_STD3_mapped', [40, 4355, 41]], - [[12803, 12803], 'disallowed_STD3_mapped', [40, 4357, 41]], - [[12804, 12804], 'disallowed_STD3_mapped', [40, 4358, 41]], - [[12805, 12805], 'disallowed_STD3_mapped', [40, 4359, 41]], - [[12806, 12806], 'disallowed_STD3_mapped', [40, 4361, 41]], - [[12807, 12807], 'disallowed_STD3_mapped', [40, 4363, 41]], - [[12808, 12808], 'disallowed_STD3_mapped', [40, 4364, 41]], - [[12809, 12809], 'disallowed_STD3_mapped', [40, 4366, 41]], - [[12810, 12810], 'disallowed_STD3_mapped', [40, 4367, 41]], - [[12811, 12811], 'disallowed_STD3_mapped', [40, 4368, 41]], - [[12812, 12812], 'disallowed_STD3_mapped', [40, 4369, 41]], - [[12813, 12813], 'disallowed_STD3_mapped', [40, 4370, 41]], - [[12814, 12814], 'disallowed_STD3_mapped', [40, 44032, 41]], - [[12815, 12815], 'disallowed_STD3_mapped', [40, 45208, 41]], - [[12816, 12816], 'disallowed_STD3_mapped', [40, 45796, 41]], - [[12817, 12817], 'disallowed_STD3_mapped', [40, 46972, 41]], - [[12818, 12818], 'disallowed_STD3_mapped', [40, 47560, 41]], - [[12819, 12819], 'disallowed_STD3_mapped', [40, 48148, 41]], - [[12820, 12820], 'disallowed_STD3_mapped', [40, 49324, 41]], - [[12821, 12821], 'disallowed_STD3_mapped', [40, 50500, 41]], - [[12822, 12822], 'disallowed_STD3_mapped', [40, 51088, 41]], - [[12823, 12823], 'disallowed_STD3_mapped', [40, 52264, 41]], - [[12824, 12824], 'disallowed_STD3_mapped', [40, 52852, 41]], - [[12825, 12825], 'disallowed_STD3_mapped', [40, 53440, 41]], - [[12826, 12826], 'disallowed_STD3_mapped', [40, 54028, 41]], - [[12827, 12827], 'disallowed_STD3_mapped', [40, 54616, 41]], - [[12828, 12828], 'disallowed_STD3_mapped', [40, 51452, 41]], - [[12829, 12829], 'disallowed_STD3_mapped', [40, 50724, 51204, 41]], - [[12830, 12830], 'disallowed_STD3_mapped', [40, 50724, 54980, 41]], - [[12831, 12831], 'disallowed'], - [[12832, 12832], 'disallowed_STD3_mapped', [40, 19968, 41]], - [[12833, 12833], 'disallowed_STD3_mapped', [40, 20108, 41]], - [[12834, 12834], 'disallowed_STD3_mapped', [40, 19977, 41]], - [[12835, 12835], 'disallowed_STD3_mapped', [40, 22235, 41]], - [[12836, 12836], 'disallowed_STD3_mapped', [40, 20116, 41]], - [[12837, 12837], 'disallowed_STD3_mapped', [40, 20845, 41]], - [[12838, 12838], 'disallowed_STD3_mapped', [40, 19971, 41]], - [[12839, 12839], 'disallowed_STD3_mapped', [40, 20843, 41]], - [[12840, 12840], 'disallowed_STD3_mapped', [40, 20061, 41]], - [[12841, 12841], 'disallowed_STD3_mapped', [40, 21313, 41]], - [[12842, 12842], 'disallowed_STD3_mapped', [40, 26376, 41]], - [[12843, 12843], 'disallowed_STD3_mapped', [40, 28779, 41]], - [[12844, 12844], 'disallowed_STD3_mapped', [40, 27700, 41]], - [[12845, 12845], 'disallowed_STD3_mapped', [40, 26408, 41]], - [[12846, 12846], 'disallowed_STD3_mapped', [40, 37329, 41]], - [[12847, 12847], 'disallowed_STD3_mapped', [40, 22303, 41]], - [[12848, 12848], 'disallowed_STD3_mapped', [40, 26085, 41]], - [[12849, 12849], 'disallowed_STD3_mapped', [40, 26666, 41]], - [[12850, 12850], 'disallowed_STD3_mapped', [40, 26377, 41]], - [[12851, 12851], 'disallowed_STD3_mapped', [40, 31038, 41]], - [[12852, 12852], 'disallowed_STD3_mapped', [40, 21517, 41]], - [[12853, 12853], 'disallowed_STD3_mapped', [40, 29305, 41]], - [[12854, 12854], 'disallowed_STD3_mapped', [40, 36001, 41]], - [[12855, 12855], 'disallowed_STD3_mapped', [40, 31069, 41]], - [[12856, 12856], 'disallowed_STD3_mapped', [40, 21172, 41]], - [[12857, 12857], 'disallowed_STD3_mapped', [40, 20195, 41]], - [[12858, 12858], 'disallowed_STD3_mapped', [40, 21628, 41]], - [[12859, 12859], 'disallowed_STD3_mapped', [40, 23398, 41]], - [[12860, 12860], 'disallowed_STD3_mapped', [40, 30435, 41]], - [[12861, 12861], 'disallowed_STD3_mapped', [40, 20225, 41]], - [[12862, 12862], 'disallowed_STD3_mapped', [40, 36039, 41]], - [[12863, 12863], 'disallowed_STD3_mapped', [40, 21332, 41]], - [[12864, 12864], 'disallowed_STD3_mapped', [40, 31085, 41]], - [[12865, 12865], 'disallowed_STD3_mapped', [40, 20241, 41]], - [[12866, 12866], 'disallowed_STD3_mapped', [40, 33258, 41]], - [[12867, 12867], 'disallowed_STD3_mapped', [40, 33267, 41]], - [[12868, 12868], 'mapped', [21839]], - [[12869, 12869], 'mapped', [24188]], - [[12870, 12870], 'mapped', [25991]], - [[12871, 12871], 'mapped', [31631]], - [[12872, 12879], 'valid', [], 'NV8'], - [[12880, 12880], 'mapped', [112, 116, 101]], - [[12881, 12881], 'mapped', [50, 49]], - [[12882, 12882], 'mapped', [50, 50]], - [[12883, 12883], 'mapped', [50, 51]], - [[12884, 12884], 'mapped', [50, 52]], - [[12885, 12885], 'mapped', [50, 53]], - [[12886, 12886], 'mapped', [50, 54]], - [[12887, 12887], 'mapped', [50, 55]], - [[12888, 12888], 'mapped', [50, 56]], - [[12889, 12889], 'mapped', [50, 57]], - [[12890, 12890], 'mapped', [51, 48]], - [[12891, 12891], 'mapped', [51, 49]], - [[12892, 12892], 'mapped', [51, 50]], - [[12893, 12893], 'mapped', [51, 51]], - [[12894, 12894], 'mapped', [51, 52]], - [[12895, 12895], 'mapped', [51, 53]], - [[12896, 12896], 'mapped', [4352]], - [[12897, 12897], 'mapped', [4354]], - [[12898, 12898], 'mapped', [4355]], - [[12899, 12899], 'mapped', [4357]], - [[12900, 12900], 'mapped', [4358]], - [[12901, 12901], 'mapped', [4359]], - [[12902, 12902], 'mapped', [4361]], - [[12903, 12903], 'mapped', [4363]], - [[12904, 12904], 'mapped', [4364]], - [[12905, 12905], 'mapped', [4366]], - [[12906, 12906], 'mapped', [4367]], - [[12907, 12907], 'mapped', [4368]], - [[12908, 12908], 'mapped', [4369]], - [[12909, 12909], 'mapped', [4370]], - [[12910, 12910], 'mapped', [44032]], - [[12911, 12911], 'mapped', [45208]], - [[12912, 12912], 'mapped', [45796]], - [[12913, 12913], 'mapped', [46972]], - [[12914, 12914], 'mapped', [47560]], - [[12915, 12915], 'mapped', [48148]], - [[12916, 12916], 'mapped', [49324]], - [[12917, 12917], 'mapped', [50500]], - [[12918, 12918], 'mapped', [51088]], - [[12919, 12919], 'mapped', [52264]], - [[12920, 12920], 'mapped', [52852]], - [[12921, 12921], 'mapped', [53440]], - [[12922, 12922], 'mapped', [54028]], - [[12923, 12923], 'mapped', [54616]], - [[12924, 12924], 'mapped', [52280, 44256]], - [[12925, 12925], 'mapped', [51452, 51032]], - [[12926, 12926], 'mapped', [50864]], - [[12927, 12927], 'valid', [], 'NV8'], - [[12928, 12928], 'mapped', [19968]], - [[12929, 12929], 'mapped', [20108]], - [[12930, 12930], 'mapped', [19977]], - [[12931, 12931], 'mapped', [22235]], - [[12932, 12932], 'mapped', [20116]], - [[12933, 12933], 'mapped', [20845]], - [[12934, 12934], 'mapped', [19971]], - [[12935, 12935], 'mapped', [20843]], - [[12936, 12936], 'mapped', [20061]], - [[12937, 12937], 'mapped', [21313]], - [[12938, 12938], 'mapped', [26376]], - [[12939, 12939], 'mapped', [28779]], - [[12940, 12940], 'mapped', [27700]], - [[12941, 12941], 'mapped', [26408]], - [[12942, 12942], 'mapped', [37329]], - [[12943, 12943], 'mapped', [22303]], - [[12944, 12944], 'mapped', [26085]], - [[12945, 12945], 'mapped', [26666]], - [[12946, 12946], 'mapped', [26377]], - [[12947, 12947], 'mapped', [31038]], - [[12948, 12948], 'mapped', [21517]], - [[12949, 12949], 'mapped', [29305]], - [[12950, 12950], 'mapped', [36001]], - [[12951, 12951], 'mapped', [31069]], - [[12952, 12952], 'mapped', [21172]], - [[12953, 12953], 'mapped', [31192]], - [[12954, 12954], 'mapped', [30007]], - [[12955, 12955], 'mapped', [22899]], - [[12956, 12956], 'mapped', [36969]], - [[12957, 12957], 'mapped', [20778]], - [[12958, 12958], 'mapped', [21360]], - [[12959, 12959], 'mapped', [27880]], - [[12960, 12960], 'mapped', [38917]], - [[12961, 12961], 'mapped', [20241]], - [[12962, 12962], 'mapped', [20889]], - [[12963, 12963], 'mapped', [27491]], - [[12964, 12964], 'mapped', [19978]], - [[12965, 12965], 'mapped', [20013]], - [[12966, 12966], 'mapped', [19979]], - [[12967, 12967], 'mapped', [24038]], - [[12968, 12968], 'mapped', [21491]], - [[12969, 12969], 'mapped', [21307]], - [[12970, 12970], 'mapped', [23447]], - [[12971, 12971], 'mapped', [23398]], - [[12972, 12972], 'mapped', [30435]], - [[12973, 12973], 'mapped', [20225]], - [[12974, 12974], 'mapped', [36039]], - [[12975, 12975], 'mapped', [21332]], - [[12976, 12976], 'mapped', [22812]], - [[12977, 12977], 'mapped', [51, 54]], - [[12978, 12978], 'mapped', [51, 55]], - [[12979, 12979], 'mapped', [51, 56]], - [[12980, 12980], 'mapped', [51, 57]], - [[12981, 12981], 'mapped', [52, 48]], - [[12982, 12982], 'mapped', [52, 49]], - [[12983, 12983], 'mapped', [52, 50]], - [[12984, 12984], 'mapped', [52, 51]], - [[12985, 12985], 'mapped', [52, 52]], - [[12986, 12986], 'mapped', [52, 53]], - [[12987, 12987], 'mapped', [52, 54]], - [[12988, 12988], 'mapped', [52, 55]], - [[12989, 12989], 'mapped', [52, 56]], - [[12990, 12990], 'mapped', [52, 57]], - [[12991, 12991], 'mapped', [53, 48]], - [[12992, 12992], 'mapped', [49, 26376]], - [[12993, 12993], 'mapped', [50, 26376]], - [[12994, 12994], 'mapped', [51, 26376]], - [[12995, 12995], 'mapped', [52, 26376]], - [[12996, 12996], 'mapped', [53, 26376]], - [[12997, 12997], 'mapped', [54, 26376]], - [[12998, 12998], 'mapped', [55, 26376]], - [[12999, 12999], 'mapped', [56, 26376]], - [[13e3, 13e3], 'mapped', [57, 26376]], - [[13001, 13001], 'mapped', [49, 48, 26376]], - [[13002, 13002], 'mapped', [49, 49, 26376]], - [[13003, 13003], 'mapped', [49, 50, 26376]], - [[13004, 13004], 'mapped', [104, 103]], - [[13005, 13005], 'mapped', [101, 114, 103]], - [[13006, 13006], 'mapped', [101, 118]], - [[13007, 13007], 'mapped', [108, 116, 100]], - [[13008, 13008], 'mapped', [12450]], - [[13009, 13009], 'mapped', [12452]], - [[13010, 13010], 'mapped', [12454]], - [[13011, 13011], 'mapped', [12456]], - [[13012, 13012], 'mapped', [12458]], - [[13013, 13013], 'mapped', [12459]], - [[13014, 13014], 'mapped', [12461]], - [[13015, 13015], 'mapped', [12463]], - [[13016, 13016], 'mapped', [12465]], - [[13017, 13017], 'mapped', [12467]], - [[13018, 13018], 'mapped', [12469]], - [[13019, 13019], 'mapped', [12471]], - [[13020, 13020], 'mapped', [12473]], - [[13021, 13021], 'mapped', [12475]], - [[13022, 13022], 'mapped', [12477]], - [[13023, 13023], 'mapped', [12479]], - [[13024, 13024], 'mapped', [12481]], - [[13025, 13025], 'mapped', [12484]], - [[13026, 13026], 'mapped', [12486]], - [[13027, 13027], 'mapped', [12488]], - [[13028, 13028], 'mapped', [12490]], - [[13029, 13029], 'mapped', [12491]], - [[13030, 13030], 'mapped', [12492]], - [[13031, 13031], 'mapped', [12493]], - [[13032, 13032], 'mapped', [12494]], - [[13033, 13033], 'mapped', [12495]], - [[13034, 13034], 'mapped', [12498]], - [[13035, 13035], 'mapped', [12501]], - [[13036, 13036], 'mapped', [12504]], - [[13037, 13037], 'mapped', [12507]], - [[13038, 13038], 'mapped', [12510]], - [[13039, 13039], 'mapped', [12511]], - [[13040, 13040], 'mapped', [12512]], - [[13041, 13041], 'mapped', [12513]], - [[13042, 13042], 'mapped', [12514]], - [[13043, 13043], 'mapped', [12516]], - [[13044, 13044], 'mapped', [12518]], - [[13045, 13045], 'mapped', [12520]], - [[13046, 13046], 'mapped', [12521]], - [[13047, 13047], 'mapped', [12522]], - [[13048, 13048], 'mapped', [12523]], - [[13049, 13049], 'mapped', [12524]], - [[13050, 13050], 'mapped', [12525]], - [[13051, 13051], 'mapped', [12527]], - [[13052, 13052], 'mapped', [12528]], - [[13053, 13053], 'mapped', [12529]], - [[13054, 13054], 'mapped', [12530]], - [[13055, 13055], 'disallowed'], - [[13056, 13056], 'mapped', [12450, 12497, 12540, 12488]], - [[13057, 13057], 'mapped', [12450, 12523, 12501, 12449]], - [[13058, 13058], 'mapped', [12450, 12531, 12506, 12450]], - [[13059, 13059], 'mapped', [12450, 12540, 12523]], - [[13060, 13060], 'mapped', [12452, 12491, 12531, 12464]], - [[13061, 13061], 'mapped', [12452, 12531, 12481]], - [[13062, 13062], 'mapped', [12454, 12457, 12531]], - [[13063, 13063], 'mapped', [12456, 12473, 12463, 12540, 12489]], - [[13064, 13064], 'mapped', [12456, 12540, 12459, 12540]], - [[13065, 13065], 'mapped', [12458, 12531, 12473]], - [[13066, 13066], 'mapped', [12458, 12540, 12512]], - [[13067, 13067], 'mapped', [12459, 12452, 12522]], - [[13068, 13068], 'mapped', [12459, 12521, 12483, 12488]], - [[13069, 13069], 'mapped', [12459, 12525, 12522, 12540]], - [[13070, 13070], 'mapped', [12460, 12525, 12531]], - [[13071, 13071], 'mapped', [12460, 12531, 12510]], - [[13072, 13072], 'mapped', [12462, 12460]], - [[13073, 13073], 'mapped', [12462, 12491, 12540]], - [[13074, 13074], 'mapped', [12461, 12517, 12522, 12540]], - [[13075, 13075], 'mapped', [12462, 12523, 12480, 12540]], - [[13076, 13076], 'mapped', [12461, 12525]], - [[13077, 13077], 'mapped', [12461, 12525, 12464, 12521, 12512]], - [[13078, 13078], 'mapped', [12461, 12525, 12513, 12540, 12488, 12523]], - [[13079, 13079], 'mapped', [12461, 12525, 12527, 12483, 12488]], - [[13080, 13080], 'mapped', [12464, 12521, 12512]], - [[13081, 13081], 'mapped', [12464, 12521, 12512, 12488, 12531]], - [[13082, 13082], 'mapped', [12463, 12523, 12476, 12452, 12525]], - [[13083, 13083], 'mapped', [12463, 12525, 12540, 12493]], - [[13084, 13084], 'mapped', [12465, 12540, 12473]], - [[13085, 13085], 'mapped', [12467, 12523, 12490]], - [[13086, 13086], 'mapped', [12467, 12540, 12509]], - [[13087, 13087], 'mapped', [12469, 12452, 12463, 12523]], - [[13088, 13088], 'mapped', [12469, 12531, 12481, 12540, 12512]], - [[13089, 13089], 'mapped', [12471, 12522, 12531, 12464]], - [[13090, 13090], 'mapped', [12475, 12531, 12481]], - [[13091, 13091], 'mapped', [12475, 12531, 12488]], - [[13092, 13092], 'mapped', [12480, 12540, 12473]], - [[13093, 13093], 'mapped', [12487, 12471]], - [[13094, 13094], 'mapped', [12489, 12523]], - [[13095, 13095], 'mapped', [12488, 12531]], - [[13096, 13096], 'mapped', [12490, 12494]], - [[13097, 13097], 'mapped', [12494, 12483, 12488]], - [[13098, 13098], 'mapped', [12495, 12452, 12484]], - [[13099, 13099], 'mapped', [12497, 12540, 12475, 12531, 12488]], - [[13100, 13100], 'mapped', [12497, 12540, 12484]], - [[13101, 13101], 'mapped', [12496, 12540, 12524, 12523]], - [[13102, 13102], 'mapped', [12500, 12450, 12473, 12488, 12523]], - [[13103, 13103], 'mapped', [12500, 12463, 12523]], - [[13104, 13104], 'mapped', [12500, 12467]], - [[13105, 13105], 'mapped', [12499, 12523]], - [[13106, 13106], 'mapped', [12501, 12449, 12521, 12483, 12489]], - [[13107, 13107], 'mapped', [12501, 12451, 12540, 12488]], - [[13108, 13108], 'mapped', [12502, 12483, 12471, 12455, 12523]], - [[13109, 13109], 'mapped', [12501, 12521, 12531]], - [[13110, 13110], 'mapped', [12504, 12463, 12479, 12540, 12523]], - [[13111, 13111], 'mapped', [12506, 12477]], - [[13112, 13112], 'mapped', [12506, 12491, 12498]], - [[13113, 13113], 'mapped', [12504, 12523, 12484]], - [[13114, 13114], 'mapped', [12506, 12531, 12473]], - [[13115, 13115], 'mapped', [12506, 12540, 12472]], - [[13116, 13116], 'mapped', [12505, 12540, 12479]], - [[13117, 13117], 'mapped', [12509, 12452, 12531, 12488]], - [[13118, 13118], 'mapped', [12508, 12523, 12488]], - [[13119, 13119], 'mapped', [12507, 12531]], - [[13120, 13120], 'mapped', [12509, 12531, 12489]], - [[13121, 13121], 'mapped', [12507, 12540, 12523]], - [[13122, 13122], 'mapped', [12507, 12540, 12531]], - [[13123, 13123], 'mapped', [12510, 12452, 12463, 12525]], - [[13124, 13124], 'mapped', [12510, 12452, 12523]], - [[13125, 13125], 'mapped', [12510, 12483, 12495]], - [[13126, 13126], 'mapped', [12510, 12523, 12463]], - [[13127, 13127], 'mapped', [12510, 12531, 12471, 12519, 12531]], - [[13128, 13128], 'mapped', [12511, 12463, 12525, 12531]], - [[13129, 13129], 'mapped', [12511, 12522]], - [[13130, 13130], 'mapped', [12511, 12522, 12496, 12540, 12523]], - [[13131, 13131], 'mapped', [12513, 12460]], - [[13132, 13132], 'mapped', [12513, 12460, 12488, 12531]], - [[13133, 13133], 'mapped', [12513, 12540, 12488, 12523]], - [[13134, 13134], 'mapped', [12516, 12540, 12489]], - [[13135, 13135], 'mapped', [12516, 12540, 12523]], - [[13136, 13136], 'mapped', [12518, 12450, 12531]], - [[13137, 13137], 'mapped', [12522, 12483, 12488, 12523]], - [[13138, 13138], 'mapped', [12522, 12521]], - [[13139, 13139], 'mapped', [12523, 12500, 12540]], - [[13140, 13140], 'mapped', [12523, 12540, 12502, 12523]], - [[13141, 13141], 'mapped', [12524, 12512]], - [[13142, 13142], 'mapped', [12524, 12531, 12488, 12466, 12531]], - [[13143, 13143], 'mapped', [12527, 12483, 12488]], - [[13144, 13144], 'mapped', [48, 28857]], - [[13145, 13145], 'mapped', [49, 28857]], - [[13146, 13146], 'mapped', [50, 28857]], - [[13147, 13147], 'mapped', [51, 28857]], - [[13148, 13148], 'mapped', [52, 28857]], - [[13149, 13149], 'mapped', [53, 28857]], - [[13150, 13150], 'mapped', [54, 28857]], - [[13151, 13151], 'mapped', [55, 28857]], - [[13152, 13152], 'mapped', [56, 28857]], - [[13153, 13153], 'mapped', [57, 28857]], - [[13154, 13154], 'mapped', [49, 48, 28857]], - [[13155, 13155], 'mapped', [49, 49, 28857]], - [[13156, 13156], 'mapped', [49, 50, 28857]], - [[13157, 13157], 'mapped', [49, 51, 28857]], - [[13158, 13158], 'mapped', [49, 52, 28857]], - [[13159, 13159], 'mapped', [49, 53, 28857]], - [[13160, 13160], 'mapped', [49, 54, 28857]], - [[13161, 13161], 'mapped', [49, 55, 28857]], - [[13162, 13162], 'mapped', [49, 56, 28857]], - [[13163, 13163], 'mapped', [49, 57, 28857]], - [[13164, 13164], 'mapped', [50, 48, 28857]], - [[13165, 13165], 'mapped', [50, 49, 28857]], - [[13166, 13166], 'mapped', [50, 50, 28857]], - [[13167, 13167], 'mapped', [50, 51, 28857]], - [[13168, 13168], 'mapped', [50, 52, 28857]], - [[13169, 13169], 'mapped', [104, 112, 97]], - [[13170, 13170], 'mapped', [100, 97]], - [[13171, 13171], 'mapped', [97, 117]], - [[13172, 13172], 'mapped', [98, 97, 114]], - [[13173, 13173], 'mapped', [111, 118]], - [[13174, 13174], 'mapped', [112, 99]], - [[13175, 13175], 'mapped', [100, 109]], - [[13176, 13176], 'mapped', [100, 109, 50]], - [[13177, 13177], 'mapped', [100, 109, 51]], - [[13178, 13178], 'mapped', [105, 117]], - [[13179, 13179], 'mapped', [24179, 25104]], - [[13180, 13180], 'mapped', [26157, 21644]], - [[13181, 13181], 'mapped', [22823, 27491]], - [[13182, 13182], 'mapped', [26126, 27835]], - [[13183, 13183], 'mapped', [26666, 24335, 20250, 31038]], - [[13184, 13184], 'mapped', [112, 97]], - [[13185, 13185], 'mapped', [110, 97]], - [[13186, 13186], 'mapped', [956, 97]], - [[13187, 13187], 'mapped', [109, 97]], - [[13188, 13188], 'mapped', [107, 97]], - [[13189, 13189], 'mapped', [107, 98]], - [[13190, 13190], 'mapped', [109, 98]], - [[13191, 13191], 'mapped', [103, 98]], - [[13192, 13192], 'mapped', [99, 97, 108]], - [[13193, 13193], 'mapped', [107, 99, 97, 108]], - [[13194, 13194], 'mapped', [112, 102]], - [[13195, 13195], 'mapped', [110, 102]], - [[13196, 13196], 'mapped', [956, 102]], - [[13197, 13197], 'mapped', [956, 103]], - [[13198, 13198], 'mapped', [109, 103]], - [[13199, 13199], 'mapped', [107, 103]], - [[13200, 13200], 'mapped', [104, 122]], - [[13201, 13201], 'mapped', [107, 104, 122]], - [[13202, 13202], 'mapped', [109, 104, 122]], - [[13203, 13203], 'mapped', [103, 104, 122]], - [[13204, 13204], 'mapped', [116, 104, 122]], - [[13205, 13205], 'mapped', [956, 108]], - [[13206, 13206], 'mapped', [109, 108]], - [[13207, 13207], 'mapped', [100, 108]], - [[13208, 13208], 'mapped', [107, 108]], - [[13209, 13209], 'mapped', [102, 109]], - [[13210, 13210], 'mapped', [110, 109]], - [[13211, 13211], 'mapped', [956, 109]], - [[13212, 13212], 'mapped', [109, 109]], - [[13213, 13213], 'mapped', [99, 109]], - [[13214, 13214], 'mapped', [107, 109]], - [[13215, 13215], 'mapped', [109, 109, 50]], - [[13216, 13216], 'mapped', [99, 109, 50]], - [[13217, 13217], 'mapped', [109, 50]], - [[13218, 13218], 'mapped', [107, 109, 50]], - [[13219, 13219], 'mapped', [109, 109, 51]], - [[13220, 13220], 'mapped', [99, 109, 51]], - [[13221, 13221], 'mapped', [109, 51]], - [[13222, 13222], 'mapped', [107, 109, 51]], - [[13223, 13223], 'mapped', [109, 8725, 115]], - [[13224, 13224], 'mapped', [109, 8725, 115, 50]], - [[13225, 13225], 'mapped', [112, 97]], - [[13226, 13226], 'mapped', [107, 112, 97]], - [[13227, 13227], 'mapped', [109, 112, 97]], - [[13228, 13228], 'mapped', [103, 112, 97]], - [[13229, 13229], 'mapped', [114, 97, 100]], - [[13230, 13230], 'mapped', [114, 97, 100, 8725, 115]], - [[13231, 13231], 'mapped', [114, 97, 100, 8725, 115, 50]], - [[13232, 13232], 'mapped', [112, 115]], - [[13233, 13233], 'mapped', [110, 115]], - [[13234, 13234], 'mapped', [956, 115]], - [[13235, 13235], 'mapped', [109, 115]], - [[13236, 13236], 'mapped', [112, 118]], - [[13237, 13237], 'mapped', [110, 118]], - [[13238, 13238], 'mapped', [956, 118]], - [[13239, 13239], 'mapped', [109, 118]], - [[13240, 13240], 'mapped', [107, 118]], - [[13241, 13241], 'mapped', [109, 118]], - [[13242, 13242], 'mapped', [112, 119]], - [[13243, 13243], 'mapped', [110, 119]], - [[13244, 13244], 'mapped', [956, 119]], - [[13245, 13245], 'mapped', [109, 119]], - [[13246, 13246], 'mapped', [107, 119]], - [[13247, 13247], 'mapped', [109, 119]], - [[13248, 13248], 'mapped', [107, 969]], - [[13249, 13249], 'mapped', [109, 969]], - [[13250, 13250], 'disallowed'], - [[13251, 13251], 'mapped', [98, 113]], - [[13252, 13252], 'mapped', [99, 99]], - [[13253, 13253], 'mapped', [99, 100]], - [[13254, 13254], 'mapped', [99, 8725, 107, 103]], - [[13255, 13255], 'disallowed'], - [[13256, 13256], 'mapped', [100, 98]], - [[13257, 13257], 'mapped', [103, 121]], - [[13258, 13258], 'mapped', [104, 97]], - [[13259, 13259], 'mapped', [104, 112]], - [[13260, 13260], 'mapped', [105, 110]], - [[13261, 13261], 'mapped', [107, 107]], - [[13262, 13262], 'mapped', [107, 109]], - [[13263, 13263], 'mapped', [107, 116]], - [[13264, 13264], 'mapped', [108, 109]], - [[13265, 13265], 'mapped', [108, 110]], - [[13266, 13266], 'mapped', [108, 111, 103]], - [[13267, 13267], 'mapped', [108, 120]], - [[13268, 13268], 'mapped', [109, 98]], - [[13269, 13269], 'mapped', [109, 105, 108]], - [[13270, 13270], 'mapped', [109, 111, 108]], - [[13271, 13271], 'mapped', [112, 104]], - [[13272, 13272], 'disallowed'], - [[13273, 13273], 'mapped', [112, 112, 109]], - [[13274, 13274], 'mapped', [112, 114]], - [[13275, 13275], 'mapped', [115, 114]], - [[13276, 13276], 'mapped', [115, 118]], - [[13277, 13277], 'mapped', [119, 98]], - [[13278, 13278], 'mapped', [118, 8725, 109]], - [[13279, 13279], 'mapped', [97, 8725, 109]], - [[13280, 13280], 'mapped', [49, 26085]], - [[13281, 13281], 'mapped', [50, 26085]], - [[13282, 13282], 'mapped', [51, 26085]], - [[13283, 13283], 'mapped', [52, 26085]], - [[13284, 13284], 'mapped', [53, 26085]], - [[13285, 13285], 'mapped', [54, 26085]], - [[13286, 13286], 'mapped', [55, 26085]], - [[13287, 13287], 'mapped', [56, 26085]], - [[13288, 13288], 'mapped', [57, 26085]], - [[13289, 13289], 'mapped', [49, 48, 26085]], - [[13290, 13290], 'mapped', [49, 49, 26085]], - [[13291, 13291], 'mapped', [49, 50, 26085]], - [[13292, 13292], 'mapped', [49, 51, 26085]], - [[13293, 13293], 'mapped', [49, 52, 26085]], - [[13294, 13294], 'mapped', [49, 53, 26085]], - [[13295, 13295], 'mapped', [49, 54, 26085]], - [[13296, 13296], 'mapped', [49, 55, 26085]], - [[13297, 13297], 'mapped', [49, 56, 26085]], - [[13298, 13298], 'mapped', [49, 57, 26085]], - [[13299, 13299], 'mapped', [50, 48, 26085]], - [[13300, 13300], 'mapped', [50, 49, 26085]], - [[13301, 13301], 'mapped', [50, 50, 26085]], - [[13302, 13302], 'mapped', [50, 51, 26085]], - [[13303, 13303], 'mapped', [50, 52, 26085]], - [[13304, 13304], 'mapped', [50, 53, 26085]], - [[13305, 13305], 'mapped', [50, 54, 26085]], - [[13306, 13306], 'mapped', [50, 55, 26085]], - [[13307, 13307], 'mapped', [50, 56, 26085]], - [[13308, 13308], 'mapped', [50, 57, 26085]], - [[13309, 13309], 'mapped', [51, 48, 26085]], - [[13310, 13310], 'mapped', [51, 49, 26085]], - [[13311, 13311], 'mapped', [103, 97, 108]], - [[13312, 19893], 'valid'], - [[19894, 19903], 'disallowed'], - [[19904, 19967], 'valid', [], 'NV8'], - [[19968, 40869], 'valid'], - [[40870, 40891], 'valid'], - [[40892, 40899], 'valid'], - [[40900, 40907], 'valid'], - [[40908, 40908], 'valid'], - [[40909, 40917], 'valid'], - [[40918, 40959], 'disallowed'], - [[40960, 42124], 'valid'], - [[42125, 42127], 'disallowed'], - [[42128, 42145], 'valid', [], 'NV8'], - [[42146, 42147], 'valid', [], 'NV8'], - [[42148, 42163], 'valid', [], 'NV8'], - [[42164, 42164], 'valid', [], 'NV8'], - [[42165, 42176], 'valid', [], 'NV8'], - [[42177, 42177], 'valid', [], 'NV8'], - [[42178, 42180], 'valid', [], 'NV8'], - [[42181, 42181], 'valid', [], 'NV8'], - [[42182, 42182], 'valid', [], 'NV8'], - [[42183, 42191], 'disallowed'], - [[42192, 42237], 'valid'], - [[42238, 42239], 'valid', [], 'NV8'], - [[42240, 42508], 'valid'], - [[42509, 42511], 'valid', [], 'NV8'], - [[42512, 42539], 'valid'], - [[42540, 42559], 'disallowed'], - [[42560, 42560], 'mapped', [42561]], - [[42561, 42561], 'valid'], - [[42562, 42562], 'mapped', [42563]], - [[42563, 42563], 'valid'], - [[42564, 42564], 'mapped', [42565]], - [[42565, 42565], 'valid'], - [[42566, 42566], 'mapped', [42567]], - [[42567, 42567], 'valid'], - [[42568, 42568], 'mapped', [42569]], - [[42569, 42569], 'valid'], - [[42570, 42570], 'mapped', [42571]], - [[42571, 42571], 'valid'], - [[42572, 42572], 'mapped', [42573]], - [[42573, 42573], 'valid'], - [[42574, 42574], 'mapped', [42575]], - [[42575, 42575], 'valid'], - [[42576, 42576], 'mapped', [42577]], - [[42577, 42577], 'valid'], - [[42578, 42578], 'mapped', [42579]], - [[42579, 42579], 'valid'], - [[42580, 42580], 'mapped', [42581]], - [[42581, 42581], 'valid'], - [[42582, 42582], 'mapped', [42583]], - [[42583, 42583], 'valid'], - [[42584, 42584], 'mapped', [42585]], - [[42585, 42585], 'valid'], - [[42586, 42586], 'mapped', [42587]], - [[42587, 42587], 'valid'], - [[42588, 42588], 'mapped', [42589]], - [[42589, 42589], 'valid'], - [[42590, 42590], 'mapped', [42591]], - [[42591, 42591], 'valid'], - [[42592, 42592], 'mapped', [42593]], - [[42593, 42593], 'valid'], - [[42594, 42594], 'mapped', [42595]], - [[42595, 42595], 'valid'], - [[42596, 42596], 'mapped', [42597]], - [[42597, 42597], 'valid'], - [[42598, 42598], 'mapped', [42599]], - [[42599, 42599], 'valid'], - [[42600, 42600], 'mapped', [42601]], - [[42601, 42601], 'valid'], - [[42602, 42602], 'mapped', [42603]], - [[42603, 42603], 'valid'], - [[42604, 42604], 'mapped', [42605]], - [[42605, 42607], 'valid'], - [[42608, 42611], 'valid', [], 'NV8'], - [[42612, 42619], 'valid'], - [[42620, 42621], 'valid'], - [[42622, 42622], 'valid', [], 'NV8'], - [[42623, 42623], 'valid'], - [[42624, 42624], 'mapped', [42625]], - [[42625, 42625], 'valid'], - [[42626, 42626], 'mapped', [42627]], - [[42627, 42627], 'valid'], - [[42628, 42628], 'mapped', [42629]], - [[42629, 42629], 'valid'], - [[42630, 42630], 'mapped', [42631]], - [[42631, 42631], 'valid'], - [[42632, 42632], 'mapped', [42633]], - [[42633, 42633], 'valid'], - [[42634, 42634], 'mapped', [42635]], - [[42635, 42635], 'valid'], - [[42636, 42636], 'mapped', [42637]], - [[42637, 42637], 'valid'], - [[42638, 42638], 'mapped', [42639]], - [[42639, 42639], 'valid'], - [[42640, 42640], 'mapped', [42641]], - [[42641, 42641], 'valid'], - [[42642, 42642], 'mapped', [42643]], - [[42643, 42643], 'valid'], - [[42644, 42644], 'mapped', [42645]], - [[42645, 42645], 'valid'], - [[42646, 42646], 'mapped', [42647]], - [[42647, 42647], 'valid'], - [[42648, 42648], 'mapped', [42649]], - [[42649, 42649], 'valid'], - [[42650, 42650], 'mapped', [42651]], - [[42651, 42651], 'valid'], - [[42652, 42652], 'mapped', [1098]], - [[42653, 42653], 'mapped', [1100]], - [[42654, 42654], 'valid'], - [[42655, 42655], 'valid'], - [[42656, 42725], 'valid'], - [[42726, 42735], 'valid', [], 'NV8'], - [[42736, 42737], 'valid'], - [[42738, 42743], 'valid', [], 'NV8'], - [[42744, 42751], 'disallowed'], - [[42752, 42774], 'valid', [], 'NV8'], - [[42775, 42778], 'valid'], - [[42779, 42783], 'valid'], - [[42784, 42785], 'valid', [], 'NV8'], - [[42786, 42786], 'mapped', [42787]], - [[42787, 42787], 'valid'], - [[42788, 42788], 'mapped', [42789]], - [[42789, 42789], 'valid'], - [[42790, 42790], 'mapped', [42791]], - [[42791, 42791], 'valid'], - [[42792, 42792], 'mapped', [42793]], - [[42793, 42793], 'valid'], - [[42794, 42794], 'mapped', [42795]], - [[42795, 42795], 'valid'], - [[42796, 42796], 'mapped', [42797]], - [[42797, 42797], 'valid'], - [[42798, 42798], 'mapped', [42799]], - [[42799, 42801], 'valid'], - [[42802, 42802], 'mapped', [42803]], - [[42803, 42803], 'valid'], - [[42804, 42804], 'mapped', [42805]], - [[42805, 42805], 'valid'], - [[42806, 42806], 'mapped', [42807]], - [[42807, 42807], 'valid'], - [[42808, 42808], 'mapped', [42809]], - [[42809, 42809], 'valid'], - [[42810, 42810], 'mapped', [42811]], - [[42811, 42811], 'valid'], - [[42812, 42812], 'mapped', [42813]], - [[42813, 42813], 'valid'], - [[42814, 42814], 'mapped', [42815]], - [[42815, 42815], 'valid'], - [[42816, 42816], 'mapped', [42817]], - [[42817, 42817], 'valid'], - [[42818, 42818], 'mapped', [42819]], - [[42819, 42819], 'valid'], - [[42820, 42820], 'mapped', [42821]], - [[42821, 42821], 'valid'], - [[42822, 42822], 'mapped', [42823]], - [[42823, 42823], 'valid'], - [[42824, 42824], 'mapped', [42825]], - [[42825, 42825], 'valid'], - [[42826, 42826], 'mapped', [42827]], - [[42827, 42827], 'valid'], - [[42828, 42828], 'mapped', [42829]], - [[42829, 42829], 'valid'], - [[42830, 42830], 'mapped', [42831]], - [[42831, 42831], 'valid'], - [[42832, 42832], 'mapped', [42833]], - [[42833, 42833], 'valid'], - [[42834, 42834], 'mapped', [42835]], - [[42835, 42835], 'valid'], - [[42836, 42836], 'mapped', [42837]], - [[42837, 42837], 'valid'], - [[42838, 42838], 'mapped', [42839]], - [[42839, 42839], 'valid'], - [[42840, 42840], 'mapped', [42841]], - [[42841, 42841], 'valid'], - [[42842, 42842], 'mapped', [42843]], - [[42843, 42843], 'valid'], - [[42844, 42844], 'mapped', [42845]], - [[42845, 42845], 'valid'], - [[42846, 42846], 'mapped', [42847]], - [[42847, 42847], 'valid'], - [[42848, 42848], 'mapped', [42849]], - [[42849, 42849], 'valid'], - [[42850, 42850], 'mapped', [42851]], - [[42851, 42851], 'valid'], - [[42852, 42852], 'mapped', [42853]], - [[42853, 42853], 'valid'], - [[42854, 42854], 'mapped', [42855]], - [[42855, 42855], 'valid'], - [[42856, 42856], 'mapped', [42857]], - [[42857, 42857], 'valid'], - [[42858, 42858], 'mapped', [42859]], - [[42859, 42859], 'valid'], - [[42860, 42860], 'mapped', [42861]], - [[42861, 42861], 'valid'], - [[42862, 42862], 'mapped', [42863]], - [[42863, 42863], 'valid'], - [[42864, 42864], 'mapped', [42863]], - [[42865, 42872], 'valid'], - [[42873, 42873], 'mapped', [42874]], - [[42874, 42874], 'valid'], - [[42875, 42875], 'mapped', [42876]], - [[42876, 42876], 'valid'], - [[42877, 42877], 'mapped', [7545]], - [[42878, 42878], 'mapped', [42879]], - [[42879, 42879], 'valid'], - [[42880, 42880], 'mapped', [42881]], - [[42881, 42881], 'valid'], - [[42882, 42882], 'mapped', [42883]], - [[42883, 42883], 'valid'], - [[42884, 42884], 'mapped', [42885]], - [[42885, 42885], 'valid'], - [[42886, 42886], 'mapped', [42887]], - [[42887, 42888], 'valid'], - [[42889, 42890], 'valid', [], 'NV8'], - [[42891, 42891], 'mapped', [42892]], - [[42892, 42892], 'valid'], - [[42893, 42893], 'mapped', [613]], - [[42894, 42894], 'valid'], - [[42895, 42895], 'valid'], - [[42896, 42896], 'mapped', [42897]], - [[42897, 42897], 'valid'], - [[42898, 42898], 'mapped', [42899]], - [[42899, 42899], 'valid'], - [[42900, 42901], 'valid'], - [[42902, 42902], 'mapped', [42903]], - [[42903, 42903], 'valid'], - [[42904, 42904], 'mapped', [42905]], - [[42905, 42905], 'valid'], - [[42906, 42906], 'mapped', [42907]], - [[42907, 42907], 'valid'], - [[42908, 42908], 'mapped', [42909]], - [[42909, 42909], 'valid'], - [[42910, 42910], 'mapped', [42911]], - [[42911, 42911], 'valid'], - [[42912, 42912], 'mapped', [42913]], - [[42913, 42913], 'valid'], - [[42914, 42914], 'mapped', [42915]], - [[42915, 42915], 'valid'], - [[42916, 42916], 'mapped', [42917]], - [[42917, 42917], 'valid'], - [[42918, 42918], 'mapped', [42919]], - [[42919, 42919], 'valid'], - [[42920, 42920], 'mapped', [42921]], - [[42921, 42921], 'valid'], - [[42922, 42922], 'mapped', [614]], - [[42923, 42923], 'mapped', [604]], - [[42924, 42924], 'mapped', [609]], - [[42925, 42925], 'mapped', [620]], - [[42926, 42927], 'disallowed'], - [[42928, 42928], 'mapped', [670]], - [[42929, 42929], 'mapped', [647]], - [[42930, 42930], 'mapped', [669]], - [[42931, 42931], 'mapped', [43859]], - [[42932, 42932], 'mapped', [42933]], - [[42933, 42933], 'valid'], - [[42934, 42934], 'mapped', [42935]], - [[42935, 42935], 'valid'], - [[42936, 42998], 'disallowed'], - [[42999, 42999], 'valid'], - [[43e3, 43e3], 'mapped', [295]], - [[43001, 43001], 'mapped', [339]], - [[43002, 43002], 'valid'], - [[43003, 43007], 'valid'], - [[43008, 43047], 'valid'], - [[43048, 43051], 'valid', [], 'NV8'], - [[43052, 43055], 'disallowed'], - [[43056, 43065], 'valid', [], 'NV8'], - [[43066, 43071], 'disallowed'], - [[43072, 43123], 'valid'], - [[43124, 43127], 'valid', [], 'NV8'], - [[43128, 43135], 'disallowed'], - [[43136, 43204], 'valid'], - [[43205, 43213], 'disallowed'], - [[43214, 43215], 'valid', [], 'NV8'], - [[43216, 43225], 'valid'], - [[43226, 43231], 'disallowed'], - [[43232, 43255], 'valid'], - [[43256, 43258], 'valid', [], 'NV8'], - [[43259, 43259], 'valid'], - [[43260, 43260], 'valid', [], 'NV8'], - [[43261, 43261], 'valid'], - [[43262, 43263], 'disallowed'], - [[43264, 43309], 'valid'], - [[43310, 43311], 'valid', [], 'NV8'], - [[43312, 43347], 'valid'], - [[43348, 43358], 'disallowed'], - [[43359, 43359], 'valid', [], 'NV8'], - [[43360, 43388], 'valid', [], 'NV8'], - [[43389, 43391], 'disallowed'], - [[43392, 43456], 'valid'], - [[43457, 43469], 'valid', [], 'NV8'], - [[43470, 43470], 'disallowed'], - [[43471, 43481], 'valid'], - [[43482, 43485], 'disallowed'], - [[43486, 43487], 'valid', [], 'NV8'], - [[43488, 43518], 'valid'], - [[43519, 43519], 'disallowed'], - [[43520, 43574], 'valid'], - [[43575, 43583], 'disallowed'], - [[43584, 43597], 'valid'], - [[43598, 43599], 'disallowed'], - [[43600, 43609], 'valid'], - [[43610, 43611], 'disallowed'], - [[43612, 43615], 'valid', [], 'NV8'], - [[43616, 43638], 'valid'], - [[43639, 43641], 'valid', [], 'NV8'], - [[43642, 43643], 'valid'], - [[43644, 43647], 'valid'], - [[43648, 43714], 'valid'], - [[43715, 43738], 'disallowed'], - [[43739, 43741], 'valid'], - [[43742, 43743], 'valid', [], 'NV8'], - [[43744, 43759], 'valid'], - [[43760, 43761], 'valid', [], 'NV8'], - [[43762, 43766], 'valid'], - [[43767, 43776], 'disallowed'], - [[43777, 43782], 'valid'], - [[43783, 43784], 'disallowed'], - [[43785, 43790], 'valid'], - [[43791, 43792], 'disallowed'], - [[43793, 43798], 'valid'], - [[43799, 43807], 'disallowed'], - [[43808, 43814], 'valid'], - [[43815, 43815], 'disallowed'], - [[43816, 43822], 'valid'], - [[43823, 43823], 'disallowed'], - [[43824, 43866], 'valid'], - [[43867, 43867], 'valid', [], 'NV8'], - [[43868, 43868], 'mapped', [42791]], - [[43869, 43869], 'mapped', [43831]], - [[43870, 43870], 'mapped', [619]], - [[43871, 43871], 'mapped', [43858]], - [[43872, 43875], 'valid'], - [[43876, 43877], 'valid'], - [[43878, 43887], 'disallowed'], - [[43888, 43888], 'mapped', [5024]], - [[43889, 43889], 'mapped', [5025]], - [[43890, 43890], 'mapped', [5026]], - [[43891, 43891], 'mapped', [5027]], - [[43892, 43892], 'mapped', [5028]], - [[43893, 43893], 'mapped', [5029]], - [[43894, 43894], 'mapped', [5030]], - [[43895, 43895], 'mapped', [5031]], - [[43896, 43896], 'mapped', [5032]], - [[43897, 43897], 'mapped', [5033]], - [[43898, 43898], 'mapped', [5034]], - [[43899, 43899], 'mapped', [5035]], - [[43900, 43900], 'mapped', [5036]], - [[43901, 43901], 'mapped', [5037]], - [[43902, 43902], 'mapped', [5038]], - [[43903, 43903], 'mapped', [5039]], - [[43904, 43904], 'mapped', [5040]], - [[43905, 43905], 'mapped', [5041]], - [[43906, 43906], 'mapped', [5042]], - [[43907, 43907], 'mapped', [5043]], - [[43908, 43908], 'mapped', [5044]], - [[43909, 43909], 'mapped', [5045]], - [[43910, 43910], 'mapped', [5046]], - [[43911, 43911], 'mapped', [5047]], - [[43912, 43912], 'mapped', [5048]], - [[43913, 43913], 'mapped', [5049]], - [[43914, 43914], 'mapped', [5050]], - [[43915, 43915], 'mapped', [5051]], - [[43916, 43916], 'mapped', [5052]], - [[43917, 43917], 'mapped', [5053]], - [[43918, 43918], 'mapped', [5054]], - [[43919, 43919], 'mapped', [5055]], - [[43920, 43920], 'mapped', [5056]], - [[43921, 43921], 'mapped', [5057]], - [[43922, 43922], 'mapped', [5058]], - [[43923, 43923], 'mapped', [5059]], - [[43924, 43924], 'mapped', [5060]], - [[43925, 43925], 'mapped', [5061]], - [[43926, 43926], 'mapped', [5062]], - [[43927, 43927], 'mapped', [5063]], - [[43928, 43928], 'mapped', [5064]], - [[43929, 43929], 'mapped', [5065]], - [[43930, 43930], 'mapped', [5066]], - [[43931, 43931], 'mapped', [5067]], - [[43932, 43932], 'mapped', [5068]], - [[43933, 43933], 'mapped', [5069]], - [[43934, 43934], 'mapped', [5070]], - [[43935, 43935], 'mapped', [5071]], - [[43936, 43936], 'mapped', [5072]], - [[43937, 43937], 'mapped', [5073]], - [[43938, 43938], 'mapped', [5074]], - [[43939, 43939], 'mapped', [5075]], - [[43940, 43940], 'mapped', [5076]], - [[43941, 43941], 'mapped', [5077]], - [[43942, 43942], 'mapped', [5078]], - [[43943, 43943], 'mapped', [5079]], - [[43944, 43944], 'mapped', [5080]], - [[43945, 43945], 'mapped', [5081]], - [[43946, 43946], 'mapped', [5082]], - [[43947, 43947], 'mapped', [5083]], - [[43948, 43948], 'mapped', [5084]], - [[43949, 43949], 'mapped', [5085]], - [[43950, 43950], 'mapped', [5086]], - [[43951, 43951], 'mapped', [5087]], - [[43952, 43952], 'mapped', [5088]], - [[43953, 43953], 'mapped', [5089]], - [[43954, 43954], 'mapped', [5090]], - [[43955, 43955], 'mapped', [5091]], - [[43956, 43956], 'mapped', [5092]], - [[43957, 43957], 'mapped', [5093]], - [[43958, 43958], 'mapped', [5094]], - [[43959, 43959], 'mapped', [5095]], - [[43960, 43960], 'mapped', [5096]], - [[43961, 43961], 'mapped', [5097]], - [[43962, 43962], 'mapped', [5098]], - [[43963, 43963], 'mapped', [5099]], - [[43964, 43964], 'mapped', [5100]], - [[43965, 43965], 'mapped', [5101]], - [[43966, 43966], 'mapped', [5102]], - [[43967, 43967], 'mapped', [5103]], - [[43968, 44010], 'valid'], - [[44011, 44011], 'valid', [], 'NV8'], - [[44012, 44013], 'valid'], - [[44014, 44015], 'disallowed'], - [[44016, 44025], 'valid'], - [[44026, 44031], 'disallowed'], - [[44032, 55203], 'valid'], - [[55204, 55215], 'disallowed'], - [[55216, 55238], 'valid', [], 'NV8'], - [[55239, 55242], 'disallowed'], - [[55243, 55291], 'valid', [], 'NV8'], - [[55292, 55295], 'disallowed'], - [[55296, 57343], 'disallowed'], - [[57344, 63743], 'disallowed'], - [[63744, 63744], 'mapped', [35912]], - [[63745, 63745], 'mapped', [26356]], - [[63746, 63746], 'mapped', [36554]], - [[63747, 63747], 'mapped', [36040]], - [[63748, 63748], 'mapped', [28369]], - [[63749, 63749], 'mapped', [20018]], - [[63750, 63750], 'mapped', [21477]], - [[63751, 63752], 'mapped', [40860]], - [[63753, 63753], 'mapped', [22865]], - [[63754, 63754], 'mapped', [37329]], - [[63755, 63755], 'mapped', [21895]], - [[63756, 63756], 'mapped', [22856]], - [[63757, 63757], 'mapped', [25078]], - [[63758, 63758], 'mapped', [30313]], - [[63759, 63759], 'mapped', [32645]], - [[63760, 63760], 'mapped', [34367]], - [[63761, 63761], 'mapped', [34746]], - [[63762, 63762], 'mapped', [35064]], - [[63763, 63763], 'mapped', [37007]], - [[63764, 63764], 'mapped', [27138]], - [[63765, 63765], 'mapped', [27931]], - [[63766, 63766], 'mapped', [28889]], - [[63767, 63767], 'mapped', [29662]], - [[63768, 63768], 'mapped', [33853]], - [[63769, 63769], 'mapped', [37226]], - [[63770, 63770], 'mapped', [39409]], - [[63771, 63771], 'mapped', [20098]], - [[63772, 63772], 'mapped', [21365]], - [[63773, 63773], 'mapped', [27396]], - [[63774, 63774], 'mapped', [29211]], - [[63775, 63775], 'mapped', [34349]], - [[63776, 63776], 'mapped', [40478]], - [[63777, 63777], 'mapped', [23888]], - [[63778, 63778], 'mapped', [28651]], - [[63779, 63779], 'mapped', [34253]], - [[63780, 63780], 'mapped', [35172]], - [[63781, 63781], 'mapped', [25289]], - [[63782, 63782], 'mapped', [33240]], - [[63783, 63783], 'mapped', [34847]], - [[63784, 63784], 'mapped', [24266]], - [[63785, 63785], 'mapped', [26391]], - [[63786, 63786], 'mapped', [28010]], - [[63787, 63787], 'mapped', [29436]], - [[63788, 63788], 'mapped', [37070]], - [[63789, 63789], 'mapped', [20358]], - [[63790, 63790], 'mapped', [20919]], - [[63791, 63791], 'mapped', [21214]], - [[63792, 63792], 'mapped', [25796]], - [[63793, 63793], 'mapped', [27347]], - [[63794, 63794], 'mapped', [29200]], - [[63795, 63795], 'mapped', [30439]], - [[63796, 63796], 'mapped', [32769]], - [[63797, 63797], 'mapped', [34310]], - [[63798, 63798], 'mapped', [34396]], - [[63799, 63799], 'mapped', [36335]], - [[63800, 63800], 'mapped', [38706]], - [[63801, 63801], 'mapped', [39791]], - [[63802, 63802], 'mapped', [40442]], - [[63803, 63803], 'mapped', [30860]], - [[63804, 63804], 'mapped', [31103]], - [[63805, 63805], 'mapped', [32160]], - [[63806, 63806], 'mapped', [33737]], - [[63807, 63807], 'mapped', [37636]], - [[63808, 63808], 'mapped', [40575]], - [[63809, 63809], 'mapped', [35542]], - [[63810, 63810], 'mapped', [22751]], - [[63811, 63811], 'mapped', [24324]], - [[63812, 63812], 'mapped', [31840]], - [[63813, 63813], 'mapped', [32894]], - [[63814, 63814], 'mapped', [29282]], - [[63815, 63815], 'mapped', [30922]], - [[63816, 63816], 'mapped', [36034]], - [[63817, 63817], 'mapped', [38647]], - [[63818, 63818], 'mapped', [22744]], - [[63819, 63819], 'mapped', [23650]], - [[63820, 63820], 'mapped', [27155]], - [[63821, 63821], 'mapped', [28122]], - [[63822, 63822], 'mapped', [28431]], - [[63823, 63823], 'mapped', [32047]], - [[63824, 63824], 'mapped', [32311]], - [[63825, 63825], 'mapped', [38475]], - [[63826, 63826], 'mapped', [21202]], - [[63827, 63827], 'mapped', [32907]], - [[63828, 63828], 'mapped', [20956]], - [[63829, 63829], 'mapped', [20940]], - [[63830, 63830], 'mapped', [31260]], - [[63831, 63831], 'mapped', [32190]], - [[63832, 63832], 'mapped', [33777]], - [[63833, 63833], 'mapped', [38517]], - [[63834, 63834], 'mapped', [35712]], - [[63835, 63835], 'mapped', [25295]], - [[63836, 63836], 'mapped', [27138]], - [[63837, 63837], 'mapped', [35582]], - [[63838, 63838], 'mapped', [20025]], - [[63839, 63839], 'mapped', [23527]], - [[63840, 63840], 'mapped', [24594]], - [[63841, 63841], 'mapped', [29575]], - [[63842, 63842], 'mapped', [30064]], - [[63843, 63843], 'mapped', [21271]], - [[63844, 63844], 'mapped', [30971]], - [[63845, 63845], 'mapped', [20415]], - [[63846, 63846], 'mapped', [24489]], - [[63847, 63847], 'mapped', [19981]], - [[63848, 63848], 'mapped', [27852]], - [[63849, 63849], 'mapped', [25976]], - [[63850, 63850], 'mapped', [32034]], - [[63851, 63851], 'mapped', [21443]], - [[63852, 63852], 'mapped', [22622]], - [[63853, 63853], 'mapped', [30465]], - [[63854, 63854], 'mapped', [33865]], - [[63855, 63855], 'mapped', [35498]], - [[63856, 63856], 'mapped', [27578]], - [[63857, 63857], 'mapped', [36784]], - [[63858, 63858], 'mapped', [27784]], - [[63859, 63859], 'mapped', [25342]], - [[63860, 63860], 'mapped', [33509]], - [[63861, 63861], 'mapped', [25504]], - [[63862, 63862], 'mapped', [30053]], - [[63863, 63863], 'mapped', [20142]], - [[63864, 63864], 'mapped', [20841]], - [[63865, 63865], 'mapped', [20937]], - [[63866, 63866], 'mapped', [26753]], - [[63867, 63867], 'mapped', [31975]], - [[63868, 63868], 'mapped', [33391]], - [[63869, 63869], 'mapped', [35538]], - [[63870, 63870], 'mapped', [37327]], - [[63871, 63871], 'mapped', [21237]], - [[63872, 63872], 'mapped', [21570]], - [[63873, 63873], 'mapped', [22899]], - [[63874, 63874], 'mapped', [24300]], - [[63875, 63875], 'mapped', [26053]], - [[63876, 63876], 'mapped', [28670]], - [[63877, 63877], 'mapped', [31018]], - [[63878, 63878], 'mapped', [38317]], - [[63879, 63879], 'mapped', [39530]], - [[63880, 63880], 'mapped', [40599]], - [[63881, 63881], 'mapped', [40654]], - [[63882, 63882], 'mapped', [21147]], - [[63883, 63883], 'mapped', [26310]], - [[63884, 63884], 'mapped', [27511]], - [[63885, 63885], 'mapped', [36706]], - [[63886, 63886], 'mapped', [24180]], - [[63887, 63887], 'mapped', [24976]], - [[63888, 63888], 'mapped', [25088]], - [[63889, 63889], 'mapped', [25754]], - [[63890, 63890], 'mapped', [28451]], - [[63891, 63891], 'mapped', [29001]], - [[63892, 63892], 'mapped', [29833]], - [[63893, 63893], 'mapped', [31178]], - [[63894, 63894], 'mapped', [32244]], - [[63895, 63895], 'mapped', [32879]], - [[63896, 63896], 'mapped', [36646]], - [[63897, 63897], 'mapped', [34030]], - [[63898, 63898], 'mapped', [36899]], - [[63899, 63899], 'mapped', [37706]], - [[63900, 63900], 'mapped', [21015]], - [[63901, 63901], 'mapped', [21155]], - [[63902, 63902], 'mapped', [21693]], - [[63903, 63903], 'mapped', [28872]], - [[63904, 63904], 'mapped', [35010]], - [[63905, 63905], 'mapped', [35498]], - [[63906, 63906], 'mapped', [24265]], - [[63907, 63907], 'mapped', [24565]], - [[63908, 63908], 'mapped', [25467]], - [[63909, 63909], 'mapped', [27566]], - [[63910, 63910], 'mapped', [31806]], - [[63911, 63911], 'mapped', [29557]], - [[63912, 63912], 'mapped', [20196]], - [[63913, 63913], 'mapped', [22265]], - [[63914, 63914], 'mapped', [23527]], - [[63915, 63915], 'mapped', [23994]], - [[63916, 63916], 'mapped', [24604]], - [[63917, 63917], 'mapped', [29618]], - [[63918, 63918], 'mapped', [29801]], - [[63919, 63919], 'mapped', [32666]], - [[63920, 63920], 'mapped', [32838]], - [[63921, 63921], 'mapped', [37428]], - [[63922, 63922], 'mapped', [38646]], - [[63923, 63923], 'mapped', [38728]], - [[63924, 63924], 'mapped', [38936]], - [[63925, 63925], 'mapped', [20363]], - [[63926, 63926], 'mapped', [31150]], - [[63927, 63927], 'mapped', [37300]], - [[63928, 63928], 'mapped', [38584]], - [[63929, 63929], 'mapped', [24801]], - [[63930, 63930], 'mapped', [20102]], - [[63931, 63931], 'mapped', [20698]], - [[63932, 63932], 'mapped', [23534]], - [[63933, 63933], 'mapped', [23615]], - [[63934, 63934], 'mapped', [26009]], - [[63935, 63935], 'mapped', [27138]], - [[63936, 63936], 'mapped', [29134]], - [[63937, 63937], 'mapped', [30274]], - [[63938, 63938], 'mapped', [34044]], - [[63939, 63939], 'mapped', [36988]], - [[63940, 63940], 'mapped', [40845]], - [[63941, 63941], 'mapped', [26248]], - [[63942, 63942], 'mapped', [38446]], - [[63943, 63943], 'mapped', [21129]], - [[63944, 63944], 'mapped', [26491]], - [[63945, 63945], 'mapped', [26611]], - [[63946, 63946], 'mapped', [27969]], - [[63947, 63947], 'mapped', [28316]], - [[63948, 63948], 'mapped', [29705]], - [[63949, 63949], 'mapped', [30041]], - [[63950, 63950], 'mapped', [30827]], - [[63951, 63951], 'mapped', [32016]], - [[63952, 63952], 'mapped', [39006]], - [[63953, 63953], 'mapped', [20845]], - [[63954, 63954], 'mapped', [25134]], - [[63955, 63955], 'mapped', [38520]], - [[63956, 63956], 'mapped', [20523]], - [[63957, 63957], 'mapped', [23833]], - [[63958, 63958], 'mapped', [28138]], - [[63959, 63959], 'mapped', [36650]], - [[63960, 63960], 'mapped', [24459]], - [[63961, 63961], 'mapped', [24900]], - [[63962, 63962], 'mapped', [26647]], - [[63963, 63963], 'mapped', [29575]], - [[63964, 63964], 'mapped', [38534]], - [[63965, 63965], 'mapped', [21033]], - [[63966, 63966], 'mapped', [21519]], - [[63967, 63967], 'mapped', [23653]], - [[63968, 63968], 'mapped', [26131]], - [[63969, 63969], 'mapped', [26446]], - [[63970, 63970], 'mapped', [26792]], - [[63971, 63971], 'mapped', [27877]], - [[63972, 63972], 'mapped', [29702]], - [[63973, 63973], 'mapped', [30178]], - [[63974, 63974], 'mapped', [32633]], - [[63975, 63975], 'mapped', [35023]], - [[63976, 63976], 'mapped', [35041]], - [[63977, 63977], 'mapped', [37324]], - [[63978, 63978], 'mapped', [38626]], - [[63979, 63979], 'mapped', [21311]], - [[63980, 63980], 'mapped', [28346]], - [[63981, 63981], 'mapped', [21533]], - [[63982, 63982], 'mapped', [29136]], - [[63983, 63983], 'mapped', [29848]], - [[63984, 63984], 'mapped', [34298]], - [[63985, 63985], 'mapped', [38563]], - [[63986, 63986], 'mapped', [40023]], - [[63987, 63987], 'mapped', [40607]], - [[63988, 63988], 'mapped', [26519]], - [[63989, 63989], 'mapped', [28107]], - [[63990, 63990], 'mapped', [33256]], - [[63991, 63991], 'mapped', [31435]], - [[63992, 63992], 'mapped', [31520]], - [[63993, 63993], 'mapped', [31890]], - [[63994, 63994], 'mapped', [29376]], - [[63995, 63995], 'mapped', [28825]], - [[63996, 63996], 'mapped', [35672]], - [[63997, 63997], 'mapped', [20160]], - [[63998, 63998], 'mapped', [33590]], - [[63999, 63999], 'mapped', [21050]], - [[64e3, 64e3], 'mapped', [20999]], - [[64001, 64001], 'mapped', [24230]], - [[64002, 64002], 'mapped', [25299]], - [[64003, 64003], 'mapped', [31958]], - [[64004, 64004], 'mapped', [23429]], - [[64005, 64005], 'mapped', [27934]], - [[64006, 64006], 'mapped', [26292]], - [[64007, 64007], 'mapped', [36667]], - [[64008, 64008], 'mapped', [34892]], - [[64009, 64009], 'mapped', [38477]], - [[64010, 64010], 'mapped', [35211]], - [[64011, 64011], 'mapped', [24275]], - [[64012, 64012], 'mapped', [20800]], - [[64013, 64013], 'mapped', [21952]], - [[64014, 64015], 'valid'], - [[64016, 64016], 'mapped', [22618]], - [[64017, 64017], 'valid'], - [[64018, 64018], 'mapped', [26228]], - [[64019, 64020], 'valid'], - [[64021, 64021], 'mapped', [20958]], - [[64022, 64022], 'mapped', [29482]], - [[64023, 64023], 'mapped', [30410]], - [[64024, 64024], 'mapped', [31036]], - [[64025, 64025], 'mapped', [31070]], - [[64026, 64026], 'mapped', [31077]], - [[64027, 64027], 'mapped', [31119]], - [[64028, 64028], 'mapped', [38742]], - [[64029, 64029], 'mapped', [31934]], - [[64030, 64030], 'mapped', [32701]], - [[64031, 64031], 'valid'], - [[64032, 64032], 'mapped', [34322]], - [[64033, 64033], 'valid'], - [[64034, 64034], 'mapped', [35576]], - [[64035, 64036], 'valid'], - [[64037, 64037], 'mapped', [36920]], - [[64038, 64038], 'mapped', [37117]], - [[64039, 64041], 'valid'], - [[64042, 64042], 'mapped', [39151]], - [[64043, 64043], 'mapped', [39164]], - [[64044, 64044], 'mapped', [39208]], - [[64045, 64045], 'mapped', [40372]], - [[64046, 64046], 'mapped', [37086]], - [[64047, 64047], 'mapped', [38583]], - [[64048, 64048], 'mapped', [20398]], - [[64049, 64049], 'mapped', [20711]], - [[64050, 64050], 'mapped', [20813]], - [[64051, 64051], 'mapped', [21193]], - [[64052, 64052], 'mapped', [21220]], - [[64053, 64053], 'mapped', [21329]], - [[64054, 64054], 'mapped', [21917]], - [[64055, 64055], 'mapped', [22022]], - [[64056, 64056], 'mapped', [22120]], - [[64057, 64057], 'mapped', [22592]], - [[64058, 64058], 'mapped', [22696]], - [[64059, 64059], 'mapped', [23652]], - [[64060, 64060], 'mapped', [23662]], - [[64061, 64061], 'mapped', [24724]], - [[64062, 64062], 'mapped', [24936]], - [[64063, 64063], 'mapped', [24974]], - [[64064, 64064], 'mapped', [25074]], - [[64065, 64065], 'mapped', [25935]], - [[64066, 64066], 'mapped', [26082]], - [[64067, 64067], 'mapped', [26257]], - [[64068, 64068], 'mapped', [26757]], - [[64069, 64069], 'mapped', [28023]], - [[64070, 64070], 'mapped', [28186]], - [[64071, 64071], 'mapped', [28450]], - [[64072, 64072], 'mapped', [29038]], - [[64073, 64073], 'mapped', [29227]], - [[64074, 64074], 'mapped', [29730]], - [[64075, 64075], 'mapped', [30865]], - [[64076, 64076], 'mapped', [31038]], - [[64077, 64077], 'mapped', [31049]], - [[64078, 64078], 'mapped', [31048]], - [[64079, 64079], 'mapped', [31056]], - [[64080, 64080], 'mapped', [31062]], - [[64081, 64081], 'mapped', [31069]], - [[64082, 64082], 'mapped', [31117]], - [[64083, 64083], 'mapped', [31118]], - [[64084, 64084], 'mapped', [31296]], - [[64085, 64085], 'mapped', [31361]], - [[64086, 64086], 'mapped', [31680]], - [[64087, 64087], 'mapped', [32244]], - [[64088, 64088], 'mapped', [32265]], - [[64089, 64089], 'mapped', [32321]], - [[64090, 64090], 'mapped', [32626]], - [[64091, 64091], 'mapped', [32773]], - [[64092, 64092], 'mapped', [33261]], - [[64093, 64094], 'mapped', [33401]], - [[64095, 64095], 'mapped', [33879]], - [[64096, 64096], 'mapped', [35088]], - [[64097, 64097], 'mapped', [35222]], - [[64098, 64098], 'mapped', [35585]], - [[64099, 64099], 'mapped', [35641]], - [[64100, 64100], 'mapped', [36051]], - [[64101, 64101], 'mapped', [36104]], - [[64102, 64102], 'mapped', [36790]], - [[64103, 64103], 'mapped', [36920]], - [[64104, 64104], 'mapped', [38627]], - [[64105, 64105], 'mapped', [38911]], - [[64106, 64106], 'mapped', [38971]], - [[64107, 64107], 'mapped', [24693]], - [[64108, 64108], 'mapped', [148206]], - [[64109, 64109], 'mapped', [33304]], - [[64110, 64111], 'disallowed'], - [[64112, 64112], 'mapped', [20006]], - [[64113, 64113], 'mapped', [20917]], - [[64114, 64114], 'mapped', [20840]], - [[64115, 64115], 'mapped', [20352]], - [[64116, 64116], 'mapped', [20805]], - [[64117, 64117], 'mapped', [20864]], - [[64118, 64118], 'mapped', [21191]], - [[64119, 64119], 'mapped', [21242]], - [[64120, 64120], 'mapped', [21917]], - [[64121, 64121], 'mapped', [21845]], - [[64122, 64122], 'mapped', [21913]], - [[64123, 64123], 'mapped', [21986]], - [[64124, 64124], 'mapped', [22618]], - [[64125, 64125], 'mapped', [22707]], - [[64126, 64126], 'mapped', [22852]], - [[64127, 64127], 'mapped', [22868]], - [[64128, 64128], 'mapped', [23138]], - [[64129, 64129], 'mapped', [23336]], - [[64130, 64130], 'mapped', [24274]], - [[64131, 64131], 'mapped', [24281]], - [[64132, 64132], 'mapped', [24425]], - [[64133, 64133], 'mapped', [24493]], - [[64134, 64134], 'mapped', [24792]], - [[64135, 64135], 'mapped', [24910]], - [[64136, 64136], 'mapped', [24840]], - [[64137, 64137], 'mapped', [24974]], - [[64138, 64138], 'mapped', [24928]], - [[64139, 64139], 'mapped', [25074]], - [[64140, 64140], 'mapped', [25140]], - [[64141, 64141], 'mapped', [25540]], - [[64142, 64142], 'mapped', [25628]], - [[64143, 64143], 'mapped', [25682]], - [[64144, 64144], 'mapped', [25942]], - [[64145, 64145], 'mapped', [26228]], - [[64146, 64146], 'mapped', [26391]], - [[64147, 64147], 'mapped', [26395]], - [[64148, 64148], 'mapped', [26454]], - [[64149, 64149], 'mapped', [27513]], - [[64150, 64150], 'mapped', [27578]], - [[64151, 64151], 'mapped', [27969]], - [[64152, 64152], 'mapped', [28379]], - [[64153, 64153], 'mapped', [28363]], - [[64154, 64154], 'mapped', [28450]], - [[64155, 64155], 'mapped', [28702]], - [[64156, 64156], 'mapped', [29038]], - [[64157, 64157], 'mapped', [30631]], - [[64158, 64158], 'mapped', [29237]], - [[64159, 64159], 'mapped', [29359]], - [[64160, 64160], 'mapped', [29482]], - [[64161, 64161], 'mapped', [29809]], - [[64162, 64162], 'mapped', [29958]], - [[64163, 64163], 'mapped', [30011]], - [[64164, 64164], 'mapped', [30237]], - [[64165, 64165], 'mapped', [30239]], - [[64166, 64166], 'mapped', [30410]], - [[64167, 64167], 'mapped', [30427]], - [[64168, 64168], 'mapped', [30452]], - [[64169, 64169], 'mapped', [30538]], - [[64170, 64170], 'mapped', [30528]], - [[64171, 64171], 'mapped', [30924]], - [[64172, 64172], 'mapped', [31409]], - [[64173, 64173], 'mapped', [31680]], - [[64174, 64174], 'mapped', [31867]], - [[64175, 64175], 'mapped', [32091]], - [[64176, 64176], 'mapped', [32244]], - [[64177, 64177], 'mapped', [32574]], - [[64178, 64178], 'mapped', [32773]], - [[64179, 64179], 'mapped', [33618]], - [[64180, 64180], 'mapped', [33775]], - [[64181, 64181], 'mapped', [34681]], - [[64182, 64182], 'mapped', [35137]], - [[64183, 64183], 'mapped', [35206]], - [[64184, 64184], 'mapped', [35222]], - [[64185, 64185], 'mapped', [35519]], - [[64186, 64186], 'mapped', [35576]], - [[64187, 64187], 'mapped', [35531]], - [[64188, 64188], 'mapped', [35585]], - [[64189, 64189], 'mapped', [35582]], - [[64190, 64190], 'mapped', [35565]], - [[64191, 64191], 'mapped', [35641]], - [[64192, 64192], 'mapped', [35722]], - [[64193, 64193], 'mapped', [36104]], - [[64194, 64194], 'mapped', [36664]], - [[64195, 64195], 'mapped', [36978]], - [[64196, 64196], 'mapped', [37273]], - [[64197, 64197], 'mapped', [37494]], - [[64198, 64198], 'mapped', [38524]], - [[64199, 64199], 'mapped', [38627]], - [[64200, 64200], 'mapped', [38742]], - [[64201, 64201], 'mapped', [38875]], - [[64202, 64202], 'mapped', [38911]], - [[64203, 64203], 'mapped', [38923]], - [[64204, 64204], 'mapped', [38971]], - [[64205, 64205], 'mapped', [39698]], - [[64206, 64206], 'mapped', [40860]], - [[64207, 64207], 'mapped', [141386]], - [[64208, 64208], 'mapped', [141380]], - [[64209, 64209], 'mapped', [144341]], - [[64210, 64210], 'mapped', [15261]], - [[64211, 64211], 'mapped', [16408]], - [[64212, 64212], 'mapped', [16441]], - [[64213, 64213], 'mapped', [152137]], - [[64214, 64214], 'mapped', [154832]], - [[64215, 64215], 'mapped', [163539]], - [[64216, 64216], 'mapped', [40771]], - [[64217, 64217], 'mapped', [40846]], - [[64218, 64255], 'disallowed'], - [[64256, 64256], 'mapped', [102, 102]], - [[64257, 64257], 'mapped', [102, 105]], - [[64258, 64258], 'mapped', [102, 108]], - [[64259, 64259], 'mapped', [102, 102, 105]], - [[64260, 64260], 'mapped', [102, 102, 108]], - [[64261, 64262], 'mapped', [115, 116]], - [[64263, 64274], 'disallowed'], - [[64275, 64275], 'mapped', [1396, 1398]], - [[64276, 64276], 'mapped', [1396, 1381]], - [[64277, 64277], 'mapped', [1396, 1387]], - [[64278, 64278], 'mapped', [1406, 1398]], - [[64279, 64279], 'mapped', [1396, 1389]], - [[64280, 64284], 'disallowed'], - [[64285, 64285], 'mapped', [1497, 1460]], - [[64286, 64286], 'valid'], - [[64287, 64287], 'mapped', [1522, 1463]], - [[64288, 64288], 'mapped', [1506]], - [[64289, 64289], 'mapped', [1488]], - [[64290, 64290], 'mapped', [1491]], - [[64291, 64291], 'mapped', [1492]], - [[64292, 64292], 'mapped', [1499]], - [[64293, 64293], 'mapped', [1500]], - [[64294, 64294], 'mapped', [1501]], - [[64295, 64295], 'mapped', [1512]], - [[64296, 64296], 'mapped', [1514]], - [[64297, 64297], 'disallowed_STD3_mapped', [43]], - [[64298, 64298], 'mapped', [1513, 1473]], - [[64299, 64299], 'mapped', [1513, 1474]], - [[64300, 64300], 'mapped', [1513, 1468, 1473]], - [[64301, 64301], 'mapped', [1513, 1468, 1474]], - [[64302, 64302], 'mapped', [1488, 1463]], - [[64303, 64303], 'mapped', [1488, 1464]], - [[64304, 64304], 'mapped', [1488, 1468]], - [[64305, 64305], 'mapped', [1489, 1468]], - [[64306, 64306], 'mapped', [1490, 1468]], - [[64307, 64307], 'mapped', [1491, 1468]], - [[64308, 64308], 'mapped', [1492, 1468]], - [[64309, 64309], 'mapped', [1493, 1468]], - [[64310, 64310], 'mapped', [1494, 1468]], - [[64311, 64311], 'disallowed'], - [[64312, 64312], 'mapped', [1496, 1468]], - [[64313, 64313], 'mapped', [1497, 1468]], - [[64314, 64314], 'mapped', [1498, 1468]], - [[64315, 64315], 'mapped', [1499, 1468]], - [[64316, 64316], 'mapped', [1500, 1468]], - [[64317, 64317], 'disallowed'], - [[64318, 64318], 'mapped', [1502, 1468]], - [[64319, 64319], 'disallowed'], - [[64320, 64320], 'mapped', [1504, 1468]], - [[64321, 64321], 'mapped', [1505, 1468]], - [[64322, 64322], 'disallowed'], - [[64323, 64323], 'mapped', [1507, 1468]], - [[64324, 64324], 'mapped', [1508, 1468]], - [[64325, 64325], 'disallowed'], - [[64326, 64326], 'mapped', [1510, 1468]], - [[64327, 64327], 'mapped', [1511, 1468]], - [[64328, 64328], 'mapped', [1512, 1468]], - [[64329, 64329], 'mapped', [1513, 1468]], - [[64330, 64330], 'mapped', [1514, 1468]], - [[64331, 64331], 'mapped', [1493, 1465]], - [[64332, 64332], 'mapped', [1489, 1471]], - [[64333, 64333], 'mapped', [1499, 1471]], - [[64334, 64334], 'mapped', [1508, 1471]], - [[64335, 64335], 'mapped', [1488, 1500]], - [[64336, 64337], 'mapped', [1649]], - [[64338, 64341], 'mapped', [1659]], - [[64342, 64345], 'mapped', [1662]], - [[64346, 64349], 'mapped', [1664]], - [[64350, 64353], 'mapped', [1658]], - [[64354, 64357], 'mapped', [1663]], - [[64358, 64361], 'mapped', [1657]], - [[64362, 64365], 'mapped', [1700]], - [[64366, 64369], 'mapped', [1702]], - [[64370, 64373], 'mapped', [1668]], - [[64374, 64377], 'mapped', [1667]], - [[64378, 64381], 'mapped', [1670]], - [[64382, 64385], 'mapped', [1671]], - [[64386, 64387], 'mapped', [1677]], - [[64388, 64389], 'mapped', [1676]], - [[64390, 64391], 'mapped', [1678]], - [[64392, 64393], 'mapped', [1672]], - [[64394, 64395], 'mapped', [1688]], - [[64396, 64397], 'mapped', [1681]], - [[64398, 64401], 'mapped', [1705]], - [[64402, 64405], 'mapped', [1711]], - [[64406, 64409], 'mapped', [1715]], - [[64410, 64413], 'mapped', [1713]], - [[64414, 64415], 'mapped', [1722]], - [[64416, 64419], 'mapped', [1723]], - [[64420, 64421], 'mapped', [1728]], - [[64422, 64425], 'mapped', [1729]], - [[64426, 64429], 'mapped', [1726]], - [[64430, 64431], 'mapped', [1746]], - [[64432, 64433], 'mapped', [1747]], - [[64434, 64449], 'valid', [], 'NV8'], - [[64450, 64466], 'disallowed'], - [[64467, 64470], 'mapped', [1709]], - [[64471, 64472], 'mapped', [1735]], - [[64473, 64474], 'mapped', [1734]], - [[64475, 64476], 'mapped', [1736]], - [[64477, 64477], 'mapped', [1735, 1652]], - [[64478, 64479], 'mapped', [1739]], - [[64480, 64481], 'mapped', [1733]], - [[64482, 64483], 'mapped', [1737]], - [[64484, 64487], 'mapped', [1744]], - [[64488, 64489], 'mapped', [1609]], - [[64490, 64491], 'mapped', [1574, 1575]], - [[64492, 64493], 'mapped', [1574, 1749]], - [[64494, 64495], 'mapped', [1574, 1608]], - [[64496, 64497], 'mapped', [1574, 1735]], - [[64498, 64499], 'mapped', [1574, 1734]], - [[64500, 64501], 'mapped', [1574, 1736]], - [[64502, 64504], 'mapped', [1574, 1744]], - [[64505, 64507], 'mapped', [1574, 1609]], - [[64508, 64511], 'mapped', [1740]], - [[64512, 64512], 'mapped', [1574, 1580]], - [[64513, 64513], 'mapped', [1574, 1581]], - [[64514, 64514], 'mapped', [1574, 1605]], - [[64515, 64515], 'mapped', [1574, 1609]], - [[64516, 64516], 'mapped', [1574, 1610]], - [[64517, 64517], 'mapped', [1576, 1580]], - [[64518, 64518], 'mapped', [1576, 1581]], - [[64519, 64519], 'mapped', [1576, 1582]], - [[64520, 64520], 'mapped', [1576, 1605]], - [[64521, 64521], 'mapped', [1576, 1609]], - [[64522, 64522], 'mapped', [1576, 1610]], - [[64523, 64523], 'mapped', [1578, 1580]], - [[64524, 64524], 'mapped', [1578, 1581]], - [[64525, 64525], 'mapped', [1578, 1582]], - [[64526, 64526], 'mapped', [1578, 1605]], - [[64527, 64527], 'mapped', [1578, 1609]], - [[64528, 64528], 'mapped', [1578, 1610]], - [[64529, 64529], 'mapped', [1579, 1580]], - [[64530, 64530], 'mapped', [1579, 1605]], - [[64531, 64531], 'mapped', [1579, 1609]], - [[64532, 64532], 'mapped', [1579, 1610]], - [[64533, 64533], 'mapped', [1580, 1581]], - [[64534, 64534], 'mapped', [1580, 1605]], - [[64535, 64535], 'mapped', [1581, 1580]], - [[64536, 64536], 'mapped', [1581, 1605]], - [[64537, 64537], 'mapped', [1582, 1580]], - [[64538, 64538], 'mapped', [1582, 1581]], - [[64539, 64539], 'mapped', [1582, 1605]], - [[64540, 64540], 'mapped', [1587, 1580]], - [[64541, 64541], 'mapped', [1587, 1581]], - [[64542, 64542], 'mapped', [1587, 1582]], - [[64543, 64543], 'mapped', [1587, 1605]], - [[64544, 64544], 'mapped', [1589, 1581]], - [[64545, 64545], 'mapped', [1589, 1605]], - [[64546, 64546], 'mapped', [1590, 1580]], - [[64547, 64547], 'mapped', [1590, 1581]], - [[64548, 64548], 'mapped', [1590, 1582]], - [[64549, 64549], 'mapped', [1590, 1605]], - [[64550, 64550], 'mapped', [1591, 1581]], - [[64551, 64551], 'mapped', [1591, 1605]], - [[64552, 64552], 'mapped', [1592, 1605]], - [[64553, 64553], 'mapped', [1593, 1580]], - [[64554, 64554], 'mapped', [1593, 1605]], - [[64555, 64555], 'mapped', [1594, 1580]], - [[64556, 64556], 'mapped', [1594, 1605]], - [[64557, 64557], 'mapped', [1601, 1580]], - [[64558, 64558], 'mapped', [1601, 1581]], - [[64559, 64559], 'mapped', [1601, 1582]], - [[64560, 64560], 'mapped', [1601, 1605]], - [[64561, 64561], 'mapped', [1601, 1609]], - [[64562, 64562], 'mapped', [1601, 1610]], - [[64563, 64563], 'mapped', [1602, 1581]], - [[64564, 64564], 'mapped', [1602, 1605]], - [[64565, 64565], 'mapped', [1602, 1609]], - [[64566, 64566], 'mapped', [1602, 1610]], - [[64567, 64567], 'mapped', [1603, 1575]], - [[64568, 64568], 'mapped', [1603, 1580]], - [[64569, 64569], 'mapped', [1603, 1581]], - [[64570, 64570], 'mapped', [1603, 1582]], - [[64571, 64571], 'mapped', [1603, 1604]], - [[64572, 64572], 'mapped', [1603, 1605]], - [[64573, 64573], 'mapped', [1603, 1609]], - [[64574, 64574], 'mapped', [1603, 1610]], - [[64575, 64575], 'mapped', [1604, 1580]], - [[64576, 64576], 'mapped', [1604, 1581]], - [[64577, 64577], 'mapped', [1604, 1582]], - [[64578, 64578], 'mapped', [1604, 1605]], - [[64579, 64579], 'mapped', [1604, 1609]], - [[64580, 64580], 'mapped', [1604, 1610]], - [[64581, 64581], 'mapped', [1605, 1580]], - [[64582, 64582], 'mapped', [1605, 1581]], - [[64583, 64583], 'mapped', [1605, 1582]], - [[64584, 64584], 'mapped', [1605, 1605]], - [[64585, 64585], 'mapped', [1605, 1609]], - [[64586, 64586], 'mapped', [1605, 1610]], - [[64587, 64587], 'mapped', [1606, 1580]], - [[64588, 64588], 'mapped', [1606, 1581]], - [[64589, 64589], 'mapped', [1606, 1582]], - [[64590, 64590], 'mapped', [1606, 1605]], - [[64591, 64591], 'mapped', [1606, 1609]], - [[64592, 64592], 'mapped', [1606, 1610]], - [[64593, 64593], 'mapped', [1607, 1580]], - [[64594, 64594], 'mapped', [1607, 1605]], - [[64595, 64595], 'mapped', [1607, 1609]], - [[64596, 64596], 'mapped', [1607, 1610]], - [[64597, 64597], 'mapped', [1610, 1580]], - [[64598, 64598], 'mapped', [1610, 1581]], - [[64599, 64599], 'mapped', [1610, 1582]], - [[64600, 64600], 'mapped', [1610, 1605]], - [[64601, 64601], 'mapped', [1610, 1609]], - [[64602, 64602], 'mapped', [1610, 1610]], - [[64603, 64603], 'mapped', [1584, 1648]], - [[64604, 64604], 'mapped', [1585, 1648]], - [[64605, 64605], 'mapped', [1609, 1648]], - [[64606, 64606], 'disallowed_STD3_mapped', [32, 1612, 1617]], - [[64607, 64607], 'disallowed_STD3_mapped', [32, 1613, 1617]], - [[64608, 64608], 'disallowed_STD3_mapped', [32, 1614, 1617]], - [[64609, 64609], 'disallowed_STD3_mapped', [32, 1615, 1617]], - [[64610, 64610], 'disallowed_STD3_mapped', [32, 1616, 1617]], - [[64611, 64611], 'disallowed_STD3_mapped', [32, 1617, 1648]], - [[64612, 64612], 'mapped', [1574, 1585]], - [[64613, 64613], 'mapped', [1574, 1586]], - [[64614, 64614], 'mapped', [1574, 1605]], - [[64615, 64615], 'mapped', [1574, 1606]], - [[64616, 64616], 'mapped', [1574, 1609]], - [[64617, 64617], 'mapped', [1574, 1610]], - [[64618, 64618], 'mapped', [1576, 1585]], - [[64619, 64619], 'mapped', [1576, 1586]], - [[64620, 64620], 'mapped', [1576, 1605]], - [[64621, 64621], 'mapped', [1576, 1606]], - [[64622, 64622], 'mapped', [1576, 1609]], - [[64623, 64623], 'mapped', [1576, 1610]], - [[64624, 64624], 'mapped', [1578, 1585]], - [[64625, 64625], 'mapped', [1578, 1586]], - [[64626, 64626], 'mapped', [1578, 1605]], - [[64627, 64627], 'mapped', [1578, 1606]], - [[64628, 64628], 'mapped', [1578, 1609]], - [[64629, 64629], 'mapped', [1578, 1610]], - [[64630, 64630], 'mapped', [1579, 1585]], - [[64631, 64631], 'mapped', [1579, 1586]], - [[64632, 64632], 'mapped', [1579, 1605]], - [[64633, 64633], 'mapped', [1579, 1606]], - [[64634, 64634], 'mapped', [1579, 1609]], - [[64635, 64635], 'mapped', [1579, 1610]], - [[64636, 64636], 'mapped', [1601, 1609]], - [[64637, 64637], 'mapped', [1601, 1610]], - [[64638, 64638], 'mapped', [1602, 1609]], - [[64639, 64639], 'mapped', [1602, 1610]], - [[64640, 64640], 'mapped', [1603, 1575]], - [[64641, 64641], 'mapped', [1603, 1604]], - [[64642, 64642], 'mapped', [1603, 1605]], - [[64643, 64643], 'mapped', [1603, 1609]], - [[64644, 64644], 'mapped', [1603, 1610]], - [[64645, 64645], 'mapped', [1604, 1605]], - [[64646, 64646], 'mapped', [1604, 1609]], - [[64647, 64647], 'mapped', [1604, 1610]], - [[64648, 64648], 'mapped', [1605, 1575]], - [[64649, 64649], 'mapped', [1605, 1605]], - [[64650, 64650], 'mapped', [1606, 1585]], - [[64651, 64651], 'mapped', [1606, 1586]], - [[64652, 64652], 'mapped', [1606, 1605]], - [[64653, 64653], 'mapped', [1606, 1606]], - [[64654, 64654], 'mapped', [1606, 1609]], - [[64655, 64655], 'mapped', [1606, 1610]], - [[64656, 64656], 'mapped', [1609, 1648]], - [[64657, 64657], 'mapped', [1610, 1585]], - [[64658, 64658], 'mapped', [1610, 1586]], - [[64659, 64659], 'mapped', [1610, 1605]], - [[64660, 64660], 'mapped', [1610, 1606]], - [[64661, 64661], 'mapped', [1610, 1609]], - [[64662, 64662], 'mapped', [1610, 1610]], - [[64663, 64663], 'mapped', [1574, 1580]], - [[64664, 64664], 'mapped', [1574, 1581]], - [[64665, 64665], 'mapped', [1574, 1582]], - [[64666, 64666], 'mapped', [1574, 1605]], - [[64667, 64667], 'mapped', [1574, 1607]], - [[64668, 64668], 'mapped', [1576, 1580]], - [[64669, 64669], 'mapped', [1576, 1581]], - [[64670, 64670], 'mapped', [1576, 1582]], - [[64671, 64671], 'mapped', [1576, 1605]], - [[64672, 64672], 'mapped', [1576, 1607]], - [[64673, 64673], 'mapped', [1578, 1580]], - [[64674, 64674], 'mapped', [1578, 1581]], - [[64675, 64675], 'mapped', [1578, 1582]], - [[64676, 64676], 'mapped', [1578, 1605]], - [[64677, 64677], 'mapped', [1578, 1607]], - [[64678, 64678], 'mapped', [1579, 1605]], - [[64679, 64679], 'mapped', [1580, 1581]], - [[64680, 64680], 'mapped', [1580, 1605]], - [[64681, 64681], 'mapped', [1581, 1580]], - [[64682, 64682], 'mapped', [1581, 1605]], - [[64683, 64683], 'mapped', [1582, 1580]], - [[64684, 64684], 'mapped', [1582, 1605]], - [[64685, 64685], 'mapped', [1587, 1580]], - [[64686, 64686], 'mapped', [1587, 1581]], - [[64687, 64687], 'mapped', [1587, 1582]], - [[64688, 64688], 'mapped', [1587, 1605]], - [[64689, 64689], 'mapped', [1589, 1581]], - [[64690, 64690], 'mapped', [1589, 1582]], - [[64691, 64691], 'mapped', [1589, 1605]], - [[64692, 64692], 'mapped', [1590, 1580]], - [[64693, 64693], 'mapped', [1590, 1581]], - [[64694, 64694], 'mapped', [1590, 1582]], - [[64695, 64695], 'mapped', [1590, 1605]], - [[64696, 64696], 'mapped', [1591, 1581]], - [[64697, 64697], 'mapped', [1592, 1605]], - [[64698, 64698], 'mapped', [1593, 1580]], - [[64699, 64699], 'mapped', [1593, 1605]], - [[64700, 64700], 'mapped', [1594, 1580]], - [[64701, 64701], 'mapped', [1594, 1605]], - [[64702, 64702], 'mapped', [1601, 1580]], - [[64703, 64703], 'mapped', [1601, 1581]], - [[64704, 64704], 'mapped', [1601, 1582]], - [[64705, 64705], 'mapped', [1601, 1605]], - [[64706, 64706], 'mapped', [1602, 1581]], - [[64707, 64707], 'mapped', [1602, 1605]], - [[64708, 64708], 'mapped', [1603, 1580]], - [[64709, 64709], 'mapped', [1603, 1581]], - [[64710, 64710], 'mapped', [1603, 1582]], - [[64711, 64711], 'mapped', [1603, 1604]], - [[64712, 64712], 'mapped', [1603, 1605]], - [[64713, 64713], 'mapped', [1604, 1580]], - [[64714, 64714], 'mapped', [1604, 1581]], - [[64715, 64715], 'mapped', [1604, 1582]], - [[64716, 64716], 'mapped', [1604, 1605]], - [[64717, 64717], 'mapped', [1604, 1607]], - [[64718, 64718], 'mapped', [1605, 1580]], - [[64719, 64719], 'mapped', [1605, 1581]], - [[64720, 64720], 'mapped', [1605, 1582]], - [[64721, 64721], 'mapped', [1605, 1605]], - [[64722, 64722], 'mapped', [1606, 1580]], - [[64723, 64723], 'mapped', [1606, 1581]], - [[64724, 64724], 'mapped', [1606, 1582]], - [[64725, 64725], 'mapped', [1606, 1605]], - [[64726, 64726], 'mapped', [1606, 1607]], - [[64727, 64727], 'mapped', [1607, 1580]], - [[64728, 64728], 'mapped', [1607, 1605]], - [[64729, 64729], 'mapped', [1607, 1648]], - [[64730, 64730], 'mapped', [1610, 1580]], - [[64731, 64731], 'mapped', [1610, 1581]], - [[64732, 64732], 'mapped', [1610, 1582]], - [[64733, 64733], 'mapped', [1610, 1605]], - [[64734, 64734], 'mapped', [1610, 1607]], - [[64735, 64735], 'mapped', [1574, 1605]], - [[64736, 64736], 'mapped', [1574, 1607]], - [[64737, 64737], 'mapped', [1576, 1605]], - [[64738, 64738], 'mapped', [1576, 1607]], - [[64739, 64739], 'mapped', [1578, 1605]], - [[64740, 64740], 'mapped', [1578, 1607]], - [[64741, 64741], 'mapped', [1579, 1605]], - [[64742, 64742], 'mapped', [1579, 1607]], - [[64743, 64743], 'mapped', [1587, 1605]], - [[64744, 64744], 'mapped', [1587, 1607]], - [[64745, 64745], 'mapped', [1588, 1605]], - [[64746, 64746], 'mapped', [1588, 1607]], - [[64747, 64747], 'mapped', [1603, 1604]], - [[64748, 64748], 'mapped', [1603, 1605]], - [[64749, 64749], 'mapped', [1604, 1605]], - [[64750, 64750], 'mapped', [1606, 1605]], - [[64751, 64751], 'mapped', [1606, 1607]], - [[64752, 64752], 'mapped', [1610, 1605]], - [[64753, 64753], 'mapped', [1610, 1607]], - [[64754, 64754], 'mapped', [1600, 1614, 1617]], - [[64755, 64755], 'mapped', [1600, 1615, 1617]], - [[64756, 64756], 'mapped', [1600, 1616, 1617]], - [[64757, 64757], 'mapped', [1591, 1609]], - [[64758, 64758], 'mapped', [1591, 1610]], - [[64759, 64759], 'mapped', [1593, 1609]], - [[64760, 64760], 'mapped', [1593, 1610]], - [[64761, 64761], 'mapped', [1594, 1609]], - [[64762, 64762], 'mapped', [1594, 1610]], - [[64763, 64763], 'mapped', [1587, 1609]], - [[64764, 64764], 'mapped', [1587, 1610]], - [[64765, 64765], 'mapped', [1588, 1609]], - [[64766, 64766], 'mapped', [1588, 1610]], - [[64767, 64767], 'mapped', [1581, 1609]], - [[64768, 64768], 'mapped', [1581, 1610]], - [[64769, 64769], 'mapped', [1580, 1609]], - [[64770, 64770], 'mapped', [1580, 1610]], - [[64771, 64771], 'mapped', [1582, 1609]], - [[64772, 64772], 'mapped', [1582, 1610]], - [[64773, 64773], 'mapped', [1589, 1609]], - [[64774, 64774], 'mapped', [1589, 1610]], - [[64775, 64775], 'mapped', [1590, 1609]], - [[64776, 64776], 'mapped', [1590, 1610]], - [[64777, 64777], 'mapped', [1588, 1580]], - [[64778, 64778], 'mapped', [1588, 1581]], - [[64779, 64779], 'mapped', [1588, 1582]], - [[64780, 64780], 'mapped', [1588, 1605]], - [[64781, 64781], 'mapped', [1588, 1585]], - [[64782, 64782], 'mapped', [1587, 1585]], - [[64783, 64783], 'mapped', [1589, 1585]], - [[64784, 64784], 'mapped', [1590, 1585]], - [[64785, 64785], 'mapped', [1591, 1609]], - [[64786, 64786], 'mapped', [1591, 1610]], - [[64787, 64787], 'mapped', [1593, 1609]], - [[64788, 64788], 'mapped', [1593, 1610]], - [[64789, 64789], 'mapped', [1594, 1609]], - [[64790, 64790], 'mapped', [1594, 1610]], - [[64791, 64791], 'mapped', [1587, 1609]], - [[64792, 64792], 'mapped', [1587, 1610]], - [[64793, 64793], 'mapped', [1588, 1609]], - [[64794, 64794], 'mapped', [1588, 1610]], - [[64795, 64795], 'mapped', [1581, 1609]], - [[64796, 64796], 'mapped', [1581, 1610]], - [[64797, 64797], 'mapped', [1580, 1609]], - [[64798, 64798], 'mapped', [1580, 1610]], - [[64799, 64799], 'mapped', [1582, 1609]], - [[64800, 64800], 'mapped', [1582, 1610]], - [[64801, 64801], 'mapped', [1589, 1609]], - [[64802, 64802], 'mapped', [1589, 1610]], - [[64803, 64803], 'mapped', [1590, 1609]], - [[64804, 64804], 'mapped', [1590, 1610]], - [[64805, 64805], 'mapped', [1588, 1580]], - [[64806, 64806], 'mapped', [1588, 1581]], - [[64807, 64807], 'mapped', [1588, 1582]], - [[64808, 64808], 'mapped', [1588, 1605]], - [[64809, 64809], 'mapped', [1588, 1585]], - [[64810, 64810], 'mapped', [1587, 1585]], - [[64811, 64811], 'mapped', [1589, 1585]], - [[64812, 64812], 'mapped', [1590, 1585]], - [[64813, 64813], 'mapped', [1588, 1580]], - [[64814, 64814], 'mapped', [1588, 1581]], - [[64815, 64815], 'mapped', [1588, 1582]], - [[64816, 64816], 'mapped', [1588, 1605]], - [[64817, 64817], 'mapped', [1587, 1607]], - [[64818, 64818], 'mapped', [1588, 1607]], - [[64819, 64819], 'mapped', [1591, 1605]], - [[64820, 64820], 'mapped', [1587, 1580]], - [[64821, 64821], 'mapped', [1587, 1581]], - [[64822, 64822], 'mapped', [1587, 1582]], - [[64823, 64823], 'mapped', [1588, 1580]], - [[64824, 64824], 'mapped', [1588, 1581]], - [[64825, 64825], 'mapped', [1588, 1582]], - [[64826, 64826], 'mapped', [1591, 1605]], - [[64827, 64827], 'mapped', [1592, 1605]], - [[64828, 64829], 'mapped', [1575, 1611]], - [[64830, 64831], 'valid', [], 'NV8'], - [[64832, 64847], 'disallowed'], - [[64848, 64848], 'mapped', [1578, 1580, 1605]], - [[64849, 64850], 'mapped', [1578, 1581, 1580]], - [[64851, 64851], 'mapped', [1578, 1581, 1605]], - [[64852, 64852], 'mapped', [1578, 1582, 1605]], - [[64853, 64853], 'mapped', [1578, 1605, 1580]], - [[64854, 64854], 'mapped', [1578, 1605, 1581]], - [[64855, 64855], 'mapped', [1578, 1605, 1582]], - [[64856, 64857], 'mapped', [1580, 1605, 1581]], - [[64858, 64858], 'mapped', [1581, 1605, 1610]], - [[64859, 64859], 'mapped', [1581, 1605, 1609]], - [[64860, 64860], 'mapped', [1587, 1581, 1580]], - [[64861, 64861], 'mapped', [1587, 1580, 1581]], - [[64862, 64862], 'mapped', [1587, 1580, 1609]], - [[64863, 64864], 'mapped', [1587, 1605, 1581]], - [[64865, 64865], 'mapped', [1587, 1605, 1580]], - [[64866, 64867], 'mapped', [1587, 1605, 1605]], - [[64868, 64869], 'mapped', [1589, 1581, 1581]], - [[64870, 64870], 'mapped', [1589, 1605, 1605]], - [[64871, 64872], 'mapped', [1588, 1581, 1605]], - [[64873, 64873], 'mapped', [1588, 1580, 1610]], - [[64874, 64875], 'mapped', [1588, 1605, 1582]], - [[64876, 64877], 'mapped', [1588, 1605, 1605]], - [[64878, 64878], 'mapped', [1590, 1581, 1609]], - [[64879, 64880], 'mapped', [1590, 1582, 1605]], - [[64881, 64882], 'mapped', [1591, 1605, 1581]], - [[64883, 64883], 'mapped', [1591, 1605, 1605]], - [[64884, 64884], 'mapped', [1591, 1605, 1610]], - [[64885, 64885], 'mapped', [1593, 1580, 1605]], - [[64886, 64887], 'mapped', [1593, 1605, 1605]], - [[64888, 64888], 'mapped', [1593, 1605, 1609]], - [[64889, 64889], 'mapped', [1594, 1605, 1605]], - [[64890, 64890], 'mapped', [1594, 1605, 1610]], - [[64891, 64891], 'mapped', [1594, 1605, 1609]], - [[64892, 64893], 'mapped', [1601, 1582, 1605]], - [[64894, 64894], 'mapped', [1602, 1605, 1581]], - [[64895, 64895], 'mapped', [1602, 1605, 1605]], - [[64896, 64896], 'mapped', [1604, 1581, 1605]], - [[64897, 64897], 'mapped', [1604, 1581, 1610]], - [[64898, 64898], 'mapped', [1604, 1581, 1609]], - [[64899, 64900], 'mapped', [1604, 1580, 1580]], - [[64901, 64902], 'mapped', [1604, 1582, 1605]], - [[64903, 64904], 'mapped', [1604, 1605, 1581]], - [[64905, 64905], 'mapped', [1605, 1581, 1580]], - [[64906, 64906], 'mapped', [1605, 1581, 1605]], - [[64907, 64907], 'mapped', [1605, 1581, 1610]], - [[64908, 64908], 'mapped', [1605, 1580, 1581]], - [[64909, 64909], 'mapped', [1605, 1580, 1605]], - [[64910, 64910], 'mapped', [1605, 1582, 1580]], - [[64911, 64911], 'mapped', [1605, 1582, 1605]], - [[64912, 64913], 'disallowed'], - [[64914, 64914], 'mapped', [1605, 1580, 1582]], - [[64915, 64915], 'mapped', [1607, 1605, 1580]], - [[64916, 64916], 'mapped', [1607, 1605, 1605]], - [[64917, 64917], 'mapped', [1606, 1581, 1605]], - [[64918, 64918], 'mapped', [1606, 1581, 1609]], - [[64919, 64920], 'mapped', [1606, 1580, 1605]], - [[64921, 64921], 'mapped', [1606, 1580, 1609]], - [[64922, 64922], 'mapped', [1606, 1605, 1610]], - [[64923, 64923], 'mapped', [1606, 1605, 1609]], - [[64924, 64925], 'mapped', [1610, 1605, 1605]], - [[64926, 64926], 'mapped', [1576, 1582, 1610]], - [[64927, 64927], 'mapped', [1578, 1580, 1610]], - [[64928, 64928], 'mapped', [1578, 1580, 1609]], - [[64929, 64929], 'mapped', [1578, 1582, 1610]], - [[64930, 64930], 'mapped', [1578, 1582, 1609]], - [[64931, 64931], 'mapped', [1578, 1605, 1610]], - [[64932, 64932], 'mapped', [1578, 1605, 1609]], - [[64933, 64933], 'mapped', [1580, 1605, 1610]], - [[64934, 64934], 'mapped', [1580, 1581, 1609]], - [[64935, 64935], 'mapped', [1580, 1605, 1609]], - [[64936, 64936], 'mapped', [1587, 1582, 1609]], - [[64937, 64937], 'mapped', [1589, 1581, 1610]], - [[64938, 64938], 'mapped', [1588, 1581, 1610]], - [[64939, 64939], 'mapped', [1590, 1581, 1610]], - [[64940, 64940], 'mapped', [1604, 1580, 1610]], - [[64941, 64941], 'mapped', [1604, 1605, 1610]], - [[64942, 64942], 'mapped', [1610, 1581, 1610]], - [[64943, 64943], 'mapped', [1610, 1580, 1610]], - [[64944, 64944], 'mapped', [1610, 1605, 1610]], - [[64945, 64945], 'mapped', [1605, 1605, 1610]], - [[64946, 64946], 'mapped', [1602, 1605, 1610]], - [[64947, 64947], 'mapped', [1606, 1581, 1610]], - [[64948, 64948], 'mapped', [1602, 1605, 1581]], - [[64949, 64949], 'mapped', [1604, 1581, 1605]], - [[64950, 64950], 'mapped', [1593, 1605, 1610]], - [[64951, 64951], 'mapped', [1603, 1605, 1610]], - [[64952, 64952], 'mapped', [1606, 1580, 1581]], - [[64953, 64953], 'mapped', [1605, 1582, 1610]], - [[64954, 64954], 'mapped', [1604, 1580, 1605]], - [[64955, 64955], 'mapped', [1603, 1605, 1605]], - [[64956, 64956], 'mapped', [1604, 1580, 1605]], - [[64957, 64957], 'mapped', [1606, 1580, 1581]], - [[64958, 64958], 'mapped', [1580, 1581, 1610]], - [[64959, 64959], 'mapped', [1581, 1580, 1610]], - [[64960, 64960], 'mapped', [1605, 1580, 1610]], - [[64961, 64961], 'mapped', [1601, 1605, 1610]], - [[64962, 64962], 'mapped', [1576, 1581, 1610]], - [[64963, 64963], 'mapped', [1603, 1605, 1605]], - [[64964, 64964], 'mapped', [1593, 1580, 1605]], - [[64965, 64965], 'mapped', [1589, 1605, 1605]], - [[64966, 64966], 'mapped', [1587, 1582, 1610]], - [[64967, 64967], 'mapped', [1606, 1580, 1610]], - [[64968, 64975], 'disallowed'], - [[64976, 65007], 'disallowed'], - [[65008, 65008], 'mapped', [1589, 1604, 1746]], - [[65009, 65009], 'mapped', [1602, 1604, 1746]], - [[65010, 65010], 'mapped', [1575, 1604, 1604, 1607]], - [[65011, 65011], 'mapped', [1575, 1603, 1576, 1585]], - [[65012, 65012], 'mapped', [1605, 1581, 1605, 1583]], - [[65013, 65013], 'mapped', [1589, 1604, 1593, 1605]], - [[65014, 65014], 'mapped', [1585, 1587, 1608, 1604]], - [[65015, 65015], 'mapped', [1593, 1604, 1610, 1607]], - [[65016, 65016], 'mapped', [1608, 1587, 1604, 1605]], - [[65017, 65017], 'mapped', [1589, 1604, 1609]], - [ - [65018, 65018], - 'disallowed_STD3_mapped', - [1589, 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605] - ], - [[65019, 65019], 'disallowed_STD3_mapped', [1580, 1604, 32, 1580, 1604, 1575, 1604, 1607]], - [[65020, 65020], 'mapped', [1585, 1740, 1575, 1604]], - [[65021, 65021], 'valid', [], 'NV8'], - [[65022, 65023], 'disallowed'], - [[65024, 65039], 'ignored'], - [[65040, 65040], 'disallowed_STD3_mapped', [44]], - [[65041, 65041], 'mapped', [12289]], - [[65042, 65042], 'disallowed'], - [[65043, 65043], 'disallowed_STD3_mapped', [58]], - [[65044, 65044], 'disallowed_STD3_mapped', [59]], - [[65045, 65045], 'disallowed_STD3_mapped', [33]], - [[65046, 65046], 'disallowed_STD3_mapped', [63]], - [[65047, 65047], 'mapped', [12310]], - [[65048, 65048], 'mapped', [12311]], - [[65049, 65049], 'disallowed'], - [[65050, 65055], 'disallowed'], - [[65056, 65059], 'valid'], - [[65060, 65062], 'valid'], - [[65063, 65069], 'valid'], - [[65070, 65071], 'valid'], - [[65072, 65072], 'disallowed'], - [[65073, 65073], 'mapped', [8212]], - [[65074, 65074], 'mapped', [8211]], - [[65075, 65076], 'disallowed_STD3_mapped', [95]], - [[65077, 65077], 'disallowed_STD3_mapped', [40]], - [[65078, 65078], 'disallowed_STD3_mapped', [41]], - [[65079, 65079], 'disallowed_STD3_mapped', [123]], - [[65080, 65080], 'disallowed_STD3_mapped', [125]], - [[65081, 65081], 'mapped', [12308]], - [[65082, 65082], 'mapped', [12309]], - [[65083, 65083], 'mapped', [12304]], - [[65084, 65084], 'mapped', [12305]], - [[65085, 65085], 'mapped', [12298]], - [[65086, 65086], 'mapped', [12299]], - [[65087, 65087], 'mapped', [12296]], - [[65088, 65088], 'mapped', [12297]], - [[65089, 65089], 'mapped', [12300]], - [[65090, 65090], 'mapped', [12301]], - [[65091, 65091], 'mapped', [12302]], - [[65092, 65092], 'mapped', [12303]], - [[65093, 65094], 'valid', [], 'NV8'], - [[65095, 65095], 'disallowed_STD3_mapped', [91]], - [[65096, 65096], 'disallowed_STD3_mapped', [93]], - [[65097, 65100], 'disallowed_STD3_mapped', [32, 773]], - [[65101, 65103], 'disallowed_STD3_mapped', [95]], - [[65104, 65104], 'disallowed_STD3_mapped', [44]], - [[65105, 65105], 'mapped', [12289]], - [[65106, 65106], 'disallowed'], - [[65107, 65107], 'disallowed'], - [[65108, 65108], 'disallowed_STD3_mapped', [59]], - [[65109, 65109], 'disallowed_STD3_mapped', [58]], - [[65110, 65110], 'disallowed_STD3_mapped', [63]], - [[65111, 65111], 'disallowed_STD3_mapped', [33]], - [[65112, 65112], 'mapped', [8212]], - [[65113, 65113], 'disallowed_STD3_mapped', [40]], - [[65114, 65114], 'disallowed_STD3_mapped', [41]], - [[65115, 65115], 'disallowed_STD3_mapped', [123]], - [[65116, 65116], 'disallowed_STD3_mapped', [125]], - [[65117, 65117], 'mapped', [12308]], - [[65118, 65118], 'mapped', [12309]], - [[65119, 65119], 'disallowed_STD3_mapped', [35]], - [[65120, 65120], 'disallowed_STD3_mapped', [38]], - [[65121, 65121], 'disallowed_STD3_mapped', [42]], - [[65122, 65122], 'disallowed_STD3_mapped', [43]], - [[65123, 65123], 'mapped', [45]], - [[65124, 65124], 'disallowed_STD3_mapped', [60]], - [[65125, 65125], 'disallowed_STD3_mapped', [62]], - [[65126, 65126], 'disallowed_STD3_mapped', [61]], - [[65127, 65127], 'disallowed'], - [[65128, 65128], 'disallowed_STD3_mapped', [92]], - [[65129, 65129], 'disallowed_STD3_mapped', [36]], - [[65130, 65130], 'disallowed_STD3_mapped', [37]], - [[65131, 65131], 'disallowed_STD3_mapped', [64]], - [[65132, 65135], 'disallowed'], - [[65136, 65136], 'disallowed_STD3_mapped', [32, 1611]], - [[65137, 65137], 'mapped', [1600, 1611]], - [[65138, 65138], 'disallowed_STD3_mapped', [32, 1612]], - [[65139, 65139], 'valid'], - [[65140, 65140], 'disallowed_STD3_mapped', [32, 1613]], - [[65141, 65141], 'disallowed'], - [[65142, 65142], 'disallowed_STD3_mapped', [32, 1614]], - [[65143, 65143], 'mapped', [1600, 1614]], - [[65144, 65144], 'disallowed_STD3_mapped', [32, 1615]], - [[65145, 65145], 'mapped', [1600, 1615]], - [[65146, 65146], 'disallowed_STD3_mapped', [32, 1616]], - [[65147, 65147], 'mapped', [1600, 1616]], - [[65148, 65148], 'disallowed_STD3_mapped', [32, 1617]], - [[65149, 65149], 'mapped', [1600, 1617]], - [[65150, 65150], 'disallowed_STD3_mapped', [32, 1618]], - [[65151, 65151], 'mapped', [1600, 1618]], - [[65152, 65152], 'mapped', [1569]], - [[65153, 65154], 'mapped', [1570]], - [[65155, 65156], 'mapped', [1571]], - [[65157, 65158], 'mapped', [1572]], - [[65159, 65160], 'mapped', [1573]], - [[65161, 65164], 'mapped', [1574]], - [[65165, 65166], 'mapped', [1575]], - [[65167, 65170], 'mapped', [1576]], - [[65171, 65172], 'mapped', [1577]], - [[65173, 65176], 'mapped', [1578]], - [[65177, 65180], 'mapped', [1579]], - [[65181, 65184], 'mapped', [1580]], - [[65185, 65188], 'mapped', [1581]], - [[65189, 65192], 'mapped', [1582]], - [[65193, 65194], 'mapped', [1583]], - [[65195, 65196], 'mapped', [1584]], - [[65197, 65198], 'mapped', [1585]], - [[65199, 65200], 'mapped', [1586]], - [[65201, 65204], 'mapped', [1587]], - [[65205, 65208], 'mapped', [1588]], - [[65209, 65212], 'mapped', [1589]], - [[65213, 65216], 'mapped', [1590]], - [[65217, 65220], 'mapped', [1591]], - [[65221, 65224], 'mapped', [1592]], - [[65225, 65228], 'mapped', [1593]], - [[65229, 65232], 'mapped', [1594]], - [[65233, 65236], 'mapped', [1601]], - [[65237, 65240], 'mapped', [1602]], - [[65241, 65244], 'mapped', [1603]], - [[65245, 65248], 'mapped', [1604]], - [[65249, 65252], 'mapped', [1605]], - [[65253, 65256], 'mapped', [1606]], - [[65257, 65260], 'mapped', [1607]], - [[65261, 65262], 'mapped', [1608]], - [[65263, 65264], 'mapped', [1609]], - [[65265, 65268], 'mapped', [1610]], - [[65269, 65270], 'mapped', [1604, 1570]], - [[65271, 65272], 'mapped', [1604, 1571]], - [[65273, 65274], 'mapped', [1604, 1573]], - [[65275, 65276], 'mapped', [1604, 1575]], - [[65277, 65278], 'disallowed'], - [[65279, 65279], 'ignored'], - [[65280, 65280], 'disallowed'], - [[65281, 65281], 'disallowed_STD3_mapped', [33]], - [[65282, 65282], 'disallowed_STD3_mapped', [34]], - [[65283, 65283], 'disallowed_STD3_mapped', [35]], - [[65284, 65284], 'disallowed_STD3_mapped', [36]], - [[65285, 65285], 'disallowed_STD3_mapped', [37]], - [[65286, 65286], 'disallowed_STD3_mapped', [38]], - [[65287, 65287], 'disallowed_STD3_mapped', [39]], - [[65288, 65288], 'disallowed_STD3_mapped', [40]], - [[65289, 65289], 'disallowed_STD3_mapped', [41]], - [[65290, 65290], 'disallowed_STD3_mapped', [42]], - [[65291, 65291], 'disallowed_STD3_mapped', [43]], - [[65292, 65292], 'disallowed_STD3_mapped', [44]], - [[65293, 65293], 'mapped', [45]], - [[65294, 65294], 'mapped', [46]], - [[65295, 65295], 'disallowed_STD3_mapped', [47]], - [[65296, 65296], 'mapped', [48]], - [[65297, 65297], 'mapped', [49]], - [[65298, 65298], 'mapped', [50]], - [[65299, 65299], 'mapped', [51]], - [[65300, 65300], 'mapped', [52]], - [[65301, 65301], 'mapped', [53]], - [[65302, 65302], 'mapped', [54]], - [[65303, 65303], 'mapped', [55]], - [[65304, 65304], 'mapped', [56]], - [[65305, 65305], 'mapped', [57]], - [[65306, 65306], 'disallowed_STD3_mapped', [58]], - [[65307, 65307], 'disallowed_STD3_mapped', [59]], - [[65308, 65308], 'disallowed_STD3_mapped', [60]], - [[65309, 65309], 'disallowed_STD3_mapped', [61]], - [[65310, 65310], 'disallowed_STD3_mapped', [62]], - [[65311, 65311], 'disallowed_STD3_mapped', [63]], - [[65312, 65312], 'disallowed_STD3_mapped', [64]], - [[65313, 65313], 'mapped', [97]], - [[65314, 65314], 'mapped', [98]], - [[65315, 65315], 'mapped', [99]], - [[65316, 65316], 'mapped', [100]], - [[65317, 65317], 'mapped', [101]], - [[65318, 65318], 'mapped', [102]], - [[65319, 65319], 'mapped', [103]], - [[65320, 65320], 'mapped', [104]], - [[65321, 65321], 'mapped', [105]], - [[65322, 65322], 'mapped', [106]], - [[65323, 65323], 'mapped', [107]], - [[65324, 65324], 'mapped', [108]], - [[65325, 65325], 'mapped', [109]], - [[65326, 65326], 'mapped', [110]], - [[65327, 65327], 'mapped', [111]], - [[65328, 65328], 'mapped', [112]], - [[65329, 65329], 'mapped', [113]], - [[65330, 65330], 'mapped', [114]], - [[65331, 65331], 'mapped', [115]], - [[65332, 65332], 'mapped', [116]], - [[65333, 65333], 'mapped', [117]], - [[65334, 65334], 'mapped', [118]], - [[65335, 65335], 'mapped', [119]], - [[65336, 65336], 'mapped', [120]], - [[65337, 65337], 'mapped', [121]], - [[65338, 65338], 'mapped', [122]], - [[65339, 65339], 'disallowed_STD3_mapped', [91]], - [[65340, 65340], 'disallowed_STD3_mapped', [92]], - [[65341, 65341], 'disallowed_STD3_mapped', [93]], - [[65342, 65342], 'disallowed_STD3_mapped', [94]], - [[65343, 65343], 'disallowed_STD3_mapped', [95]], - [[65344, 65344], 'disallowed_STD3_mapped', [96]], - [[65345, 65345], 'mapped', [97]], - [[65346, 65346], 'mapped', [98]], - [[65347, 65347], 'mapped', [99]], - [[65348, 65348], 'mapped', [100]], - [[65349, 65349], 'mapped', [101]], - [[65350, 65350], 'mapped', [102]], - [[65351, 65351], 'mapped', [103]], - [[65352, 65352], 'mapped', [104]], - [[65353, 65353], 'mapped', [105]], - [[65354, 65354], 'mapped', [106]], - [[65355, 65355], 'mapped', [107]], - [[65356, 65356], 'mapped', [108]], - [[65357, 65357], 'mapped', [109]], - [[65358, 65358], 'mapped', [110]], - [[65359, 65359], 'mapped', [111]], - [[65360, 65360], 'mapped', [112]], - [[65361, 65361], 'mapped', [113]], - [[65362, 65362], 'mapped', [114]], - [[65363, 65363], 'mapped', [115]], - [[65364, 65364], 'mapped', [116]], - [[65365, 65365], 'mapped', [117]], - [[65366, 65366], 'mapped', [118]], - [[65367, 65367], 'mapped', [119]], - [[65368, 65368], 'mapped', [120]], - [[65369, 65369], 'mapped', [121]], - [[65370, 65370], 'mapped', [122]], - [[65371, 65371], 'disallowed_STD3_mapped', [123]], - [[65372, 65372], 'disallowed_STD3_mapped', [124]], - [[65373, 65373], 'disallowed_STD3_mapped', [125]], - [[65374, 65374], 'disallowed_STD3_mapped', [126]], - [[65375, 65375], 'mapped', [10629]], - [[65376, 65376], 'mapped', [10630]], - [[65377, 65377], 'mapped', [46]], - [[65378, 65378], 'mapped', [12300]], - [[65379, 65379], 'mapped', [12301]], - [[65380, 65380], 'mapped', [12289]], - [[65381, 65381], 'mapped', [12539]], - [[65382, 65382], 'mapped', [12530]], - [[65383, 65383], 'mapped', [12449]], - [[65384, 65384], 'mapped', [12451]], - [[65385, 65385], 'mapped', [12453]], - [[65386, 65386], 'mapped', [12455]], - [[65387, 65387], 'mapped', [12457]], - [[65388, 65388], 'mapped', [12515]], - [[65389, 65389], 'mapped', [12517]], - [[65390, 65390], 'mapped', [12519]], - [[65391, 65391], 'mapped', [12483]], - [[65392, 65392], 'mapped', [12540]], - [[65393, 65393], 'mapped', [12450]], - [[65394, 65394], 'mapped', [12452]], - [[65395, 65395], 'mapped', [12454]], - [[65396, 65396], 'mapped', [12456]], - [[65397, 65397], 'mapped', [12458]], - [[65398, 65398], 'mapped', [12459]], - [[65399, 65399], 'mapped', [12461]], - [[65400, 65400], 'mapped', [12463]], - [[65401, 65401], 'mapped', [12465]], - [[65402, 65402], 'mapped', [12467]], - [[65403, 65403], 'mapped', [12469]], - [[65404, 65404], 'mapped', [12471]], - [[65405, 65405], 'mapped', [12473]], - [[65406, 65406], 'mapped', [12475]], - [[65407, 65407], 'mapped', [12477]], - [[65408, 65408], 'mapped', [12479]], - [[65409, 65409], 'mapped', [12481]], - [[65410, 65410], 'mapped', [12484]], - [[65411, 65411], 'mapped', [12486]], - [[65412, 65412], 'mapped', [12488]], - [[65413, 65413], 'mapped', [12490]], - [[65414, 65414], 'mapped', [12491]], - [[65415, 65415], 'mapped', [12492]], - [[65416, 65416], 'mapped', [12493]], - [[65417, 65417], 'mapped', [12494]], - [[65418, 65418], 'mapped', [12495]], - [[65419, 65419], 'mapped', [12498]], - [[65420, 65420], 'mapped', [12501]], - [[65421, 65421], 'mapped', [12504]], - [[65422, 65422], 'mapped', [12507]], - [[65423, 65423], 'mapped', [12510]], - [[65424, 65424], 'mapped', [12511]], - [[65425, 65425], 'mapped', [12512]], - [[65426, 65426], 'mapped', [12513]], - [[65427, 65427], 'mapped', [12514]], - [[65428, 65428], 'mapped', [12516]], - [[65429, 65429], 'mapped', [12518]], - [[65430, 65430], 'mapped', [12520]], - [[65431, 65431], 'mapped', [12521]], - [[65432, 65432], 'mapped', [12522]], - [[65433, 65433], 'mapped', [12523]], - [[65434, 65434], 'mapped', [12524]], - [[65435, 65435], 'mapped', [12525]], - [[65436, 65436], 'mapped', [12527]], - [[65437, 65437], 'mapped', [12531]], - [[65438, 65438], 'mapped', [12441]], - [[65439, 65439], 'mapped', [12442]], - [[65440, 65440], 'disallowed'], - [[65441, 65441], 'mapped', [4352]], - [[65442, 65442], 'mapped', [4353]], - [[65443, 65443], 'mapped', [4522]], - [[65444, 65444], 'mapped', [4354]], - [[65445, 65445], 'mapped', [4524]], - [[65446, 65446], 'mapped', [4525]], - [[65447, 65447], 'mapped', [4355]], - [[65448, 65448], 'mapped', [4356]], - [[65449, 65449], 'mapped', [4357]], - [[65450, 65450], 'mapped', [4528]], - [[65451, 65451], 'mapped', [4529]], - [[65452, 65452], 'mapped', [4530]], - [[65453, 65453], 'mapped', [4531]], - [[65454, 65454], 'mapped', [4532]], - [[65455, 65455], 'mapped', [4533]], - [[65456, 65456], 'mapped', [4378]], - [[65457, 65457], 'mapped', [4358]], - [[65458, 65458], 'mapped', [4359]], - [[65459, 65459], 'mapped', [4360]], - [[65460, 65460], 'mapped', [4385]], - [[65461, 65461], 'mapped', [4361]], - [[65462, 65462], 'mapped', [4362]], - [[65463, 65463], 'mapped', [4363]], - [[65464, 65464], 'mapped', [4364]], - [[65465, 65465], 'mapped', [4365]], - [[65466, 65466], 'mapped', [4366]], - [[65467, 65467], 'mapped', [4367]], - [[65468, 65468], 'mapped', [4368]], - [[65469, 65469], 'mapped', [4369]], - [[65470, 65470], 'mapped', [4370]], - [[65471, 65473], 'disallowed'], - [[65474, 65474], 'mapped', [4449]], - [[65475, 65475], 'mapped', [4450]], - [[65476, 65476], 'mapped', [4451]], - [[65477, 65477], 'mapped', [4452]], - [[65478, 65478], 'mapped', [4453]], - [[65479, 65479], 'mapped', [4454]], - [[65480, 65481], 'disallowed'], - [[65482, 65482], 'mapped', [4455]], - [[65483, 65483], 'mapped', [4456]], - [[65484, 65484], 'mapped', [4457]], - [[65485, 65485], 'mapped', [4458]], - [[65486, 65486], 'mapped', [4459]], - [[65487, 65487], 'mapped', [4460]], - [[65488, 65489], 'disallowed'], - [[65490, 65490], 'mapped', [4461]], - [[65491, 65491], 'mapped', [4462]], - [[65492, 65492], 'mapped', [4463]], - [[65493, 65493], 'mapped', [4464]], - [[65494, 65494], 'mapped', [4465]], - [[65495, 65495], 'mapped', [4466]], - [[65496, 65497], 'disallowed'], - [[65498, 65498], 'mapped', [4467]], - [[65499, 65499], 'mapped', [4468]], - [[65500, 65500], 'mapped', [4469]], - [[65501, 65503], 'disallowed'], - [[65504, 65504], 'mapped', [162]], - [[65505, 65505], 'mapped', [163]], - [[65506, 65506], 'mapped', [172]], - [[65507, 65507], 'disallowed_STD3_mapped', [32, 772]], - [[65508, 65508], 'mapped', [166]], - [[65509, 65509], 'mapped', [165]], - [[65510, 65510], 'mapped', [8361]], - [[65511, 65511], 'disallowed'], - [[65512, 65512], 'mapped', [9474]], - [[65513, 65513], 'mapped', [8592]], - [[65514, 65514], 'mapped', [8593]], - [[65515, 65515], 'mapped', [8594]], - [[65516, 65516], 'mapped', [8595]], - [[65517, 65517], 'mapped', [9632]], - [[65518, 65518], 'mapped', [9675]], - [[65519, 65528], 'disallowed'], - [[65529, 65531], 'disallowed'], - [[65532, 65532], 'disallowed'], - [[65533, 65533], 'disallowed'], - [[65534, 65535], 'disallowed'], - [[65536, 65547], 'valid'], - [[65548, 65548], 'disallowed'], - [[65549, 65574], 'valid'], - [[65575, 65575], 'disallowed'], - [[65576, 65594], 'valid'], - [[65595, 65595], 'disallowed'], - [[65596, 65597], 'valid'], - [[65598, 65598], 'disallowed'], - [[65599, 65613], 'valid'], - [[65614, 65615], 'disallowed'], - [[65616, 65629], 'valid'], - [[65630, 65663], 'disallowed'], - [[65664, 65786], 'valid'], - [[65787, 65791], 'disallowed'], - [[65792, 65794], 'valid', [], 'NV8'], - [[65795, 65798], 'disallowed'], - [[65799, 65843], 'valid', [], 'NV8'], - [[65844, 65846], 'disallowed'], - [[65847, 65855], 'valid', [], 'NV8'], - [[65856, 65930], 'valid', [], 'NV8'], - [[65931, 65932], 'valid', [], 'NV8'], - [[65933, 65935], 'disallowed'], - [[65936, 65947], 'valid', [], 'NV8'], - [[65948, 65951], 'disallowed'], - [[65952, 65952], 'valid', [], 'NV8'], - [[65953, 65999], 'disallowed'], - [[66e3, 66044], 'valid', [], 'NV8'], - [[66045, 66045], 'valid'], - [[66046, 66175], 'disallowed'], - [[66176, 66204], 'valid'], - [[66205, 66207], 'disallowed'], - [[66208, 66256], 'valid'], - [[66257, 66271], 'disallowed'], - [[66272, 66272], 'valid'], - [[66273, 66299], 'valid', [], 'NV8'], - [[66300, 66303], 'disallowed'], - [[66304, 66334], 'valid'], - [[66335, 66335], 'valid'], - [[66336, 66339], 'valid', [], 'NV8'], - [[66340, 66351], 'disallowed'], - [[66352, 66368], 'valid'], - [[66369, 66369], 'valid', [], 'NV8'], - [[66370, 66377], 'valid'], - [[66378, 66378], 'valid', [], 'NV8'], - [[66379, 66383], 'disallowed'], - [[66384, 66426], 'valid'], - [[66427, 66431], 'disallowed'], - [[66432, 66461], 'valid'], - [[66462, 66462], 'disallowed'], - [[66463, 66463], 'valid', [], 'NV8'], - [[66464, 66499], 'valid'], - [[66500, 66503], 'disallowed'], - [[66504, 66511], 'valid'], - [[66512, 66517], 'valid', [], 'NV8'], - [[66518, 66559], 'disallowed'], - [[66560, 66560], 'mapped', [66600]], - [[66561, 66561], 'mapped', [66601]], - [[66562, 66562], 'mapped', [66602]], - [[66563, 66563], 'mapped', [66603]], - [[66564, 66564], 'mapped', [66604]], - [[66565, 66565], 'mapped', [66605]], - [[66566, 66566], 'mapped', [66606]], - [[66567, 66567], 'mapped', [66607]], - [[66568, 66568], 'mapped', [66608]], - [[66569, 66569], 'mapped', [66609]], - [[66570, 66570], 'mapped', [66610]], - [[66571, 66571], 'mapped', [66611]], - [[66572, 66572], 'mapped', [66612]], - [[66573, 66573], 'mapped', [66613]], - [[66574, 66574], 'mapped', [66614]], - [[66575, 66575], 'mapped', [66615]], - [[66576, 66576], 'mapped', [66616]], - [[66577, 66577], 'mapped', [66617]], - [[66578, 66578], 'mapped', [66618]], - [[66579, 66579], 'mapped', [66619]], - [[66580, 66580], 'mapped', [66620]], - [[66581, 66581], 'mapped', [66621]], - [[66582, 66582], 'mapped', [66622]], - [[66583, 66583], 'mapped', [66623]], - [[66584, 66584], 'mapped', [66624]], - [[66585, 66585], 'mapped', [66625]], - [[66586, 66586], 'mapped', [66626]], - [[66587, 66587], 'mapped', [66627]], - [[66588, 66588], 'mapped', [66628]], - [[66589, 66589], 'mapped', [66629]], - [[66590, 66590], 'mapped', [66630]], - [[66591, 66591], 'mapped', [66631]], - [[66592, 66592], 'mapped', [66632]], - [[66593, 66593], 'mapped', [66633]], - [[66594, 66594], 'mapped', [66634]], - [[66595, 66595], 'mapped', [66635]], - [[66596, 66596], 'mapped', [66636]], - [[66597, 66597], 'mapped', [66637]], - [[66598, 66598], 'mapped', [66638]], - [[66599, 66599], 'mapped', [66639]], - [[66600, 66637], 'valid'], - [[66638, 66717], 'valid'], - [[66718, 66719], 'disallowed'], - [[66720, 66729], 'valid'], - [[66730, 66815], 'disallowed'], - [[66816, 66855], 'valid'], - [[66856, 66863], 'disallowed'], - [[66864, 66915], 'valid'], - [[66916, 66926], 'disallowed'], - [[66927, 66927], 'valid', [], 'NV8'], - [[66928, 67071], 'disallowed'], - [[67072, 67382], 'valid'], - [[67383, 67391], 'disallowed'], - [[67392, 67413], 'valid'], - [[67414, 67423], 'disallowed'], - [[67424, 67431], 'valid'], - [[67432, 67583], 'disallowed'], - [[67584, 67589], 'valid'], - [[67590, 67591], 'disallowed'], - [[67592, 67592], 'valid'], - [[67593, 67593], 'disallowed'], - [[67594, 67637], 'valid'], - [[67638, 67638], 'disallowed'], - [[67639, 67640], 'valid'], - [[67641, 67643], 'disallowed'], - [[67644, 67644], 'valid'], - [[67645, 67646], 'disallowed'], - [[67647, 67647], 'valid'], - [[67648, 67669], 'valid'], - [[67670, 67670], 'disallowed'], - [[67671, 67679], 'valid', [], 'NV8'], - [[67680, 67702], 'valid'], - [[67703, 67711], 'valid', [], 'NV8'], - [[67712, 67742], 'valid'], - [[67743, 67750], 'disallowed'], - [[67751, 67759], 'valid', [], 'NV8'], - [[67760, 67807], 'disallowed'], - [[67808, 67826], 'valid'], - [[67827, 67827], 'disallowed'], - [[67828, 67829], 'valid'], - [[67830, 67834], 'disallowed'], - [[67835, 67839], 'valid', [], 'NV8'], - [[67840, 67861], 'valid'], - [[67862, 67865], 'valid', [], 'NV8'], - [[67866, 67867], 'valid', [], 'NV8'], - [[67868, 67870], 'disallowed'], - [[67871, 67871], 'valid', [], 'NV8'], - [[67872, 67897], 'valid'], - [[67898, 67902], 'disallowed'], - [[67903, 67903], 'valid', [], 'NV8'], - [[67904, 67967], 'disallowed'], - [[67968, 68023], 'valid'], - [[68024, 68027], 'disallowed'], - [[68028, 68029], 'valid', [], 'NV8'], - [[68030, 68031], 'valid'], - [[68032, 68047], 'valid', [], 'NV8'], - [[68048, 68049], 'disallowed'], - [[68050, 68095], 'valid', [], 'NV8'], - [[68096, 68099], 'valid'], - [[68100, 68100], 'disallowed'], - [[68101, 68102], 'valid'], - [[68103, 68107], 'disallowed'], - [[68108, 68115], 'valid'], - [[68116, 68116], 'disallowed'], - [[68117, 68119], 'valid'], - [[68120, 68120], 'disallowed'], - [[68121, 68147], 'valid'], - [[68148, 68151], 'disallowed'], - [[68152, 68154], 'valid'], - [[68155, 68158], 'disallowed'], - [[68159, 68159], 'valid'], - [[68160, 68167], 'valid', [], 'NV8'], - [[68168, 68175], 'disallowed'], - [[68176, 68184], 'valid', [], 'NV8'], - [[68185, 68191], 'disallowed'], - [[68192, 68220], 'valid'], - [[68221, 68223], 'valid', [], 'NV8'], - [[68224, 68252], 'valid'], - [[68253, 68255], 'valid', [], 'NV8'], - [[68256, 68287], 'disallowed'], - [[68288, 68295], 'valid'], - [[68296, 68296], 'valid', [], 'NV8'], - [[68297, 68326], 'valid'], - [[68327, 68330], 'disallowed'], - [[68331, 68342], 'valid', [], 'NV8'], - [[68343, 68351], 'disallowed'], - [[68352, 68405], 'valid'], - [[68406, 68408], 'disallowed'], - [[68409, 68415], 'valid', [], 'NV8'], - [[68416, 68437], 'valid'], - [[68438, 68439], 'disallowed'], - [[68440, 68447], 'valid', [], 'NV8'], - [[68448, 68466], 'valid'], - [[68467, 68471], 'disallowed'], - [[68472, 68479], 'valid', [], 'NV8'], - [[68480, 68497], 'valid'], - [[68498, 68504], 'disallowed'], - [[68505, 68508], 'valid', [], 'NV8'], - [[68509, 68520], 'disallowed'], - [[68521, 68527], 'valid', [], 'NV8'], - [[68528, 68607], 'disallowed'], - [[68608, 68680], 'valid'], - [[68681, 68735], 'disallowed'], - [[68736, 68736], 'mapped', [68800]], - [[68737, 68737], 'mapped', [68801]], - [[68738, 68738], 'mapped', [68802]], - [[68739, 68739], 'mapped', [68803]], - [[68740, 68740], 'mapped', [68804]], - [[68741, 68741], 'mapped', [68805]], - [[68742, 68742], 'mapped', [68806]], - [[68743, 68743], 'mapped', [68807]], - [[68744, 68744], 'mapped', [68808]], - [[68745, 68745], 'mapped', [68809]], - [[68746, 68746], 'mapped', [68810]], - [[68747, 68747], 'mapped', [68811]], - [[68748, 68748], 'mapped', [68812]], - [[68749, 68749], 'mapped', [68813]], - [[68750, 68750], 'mapped', [68814]], - [[68751, 68751], 'mapped', [68815]], - [[68752, 68752], 'mapped', [68816]], - [[68753, 68753], 'mapped', [68817]], - [[68754, 68754], 'mapped', [68818]], - [[68755, 68755], 'mapped', [68819]], - [[68756, 68756], 'mapped', [68820]], - [[68757, 68757], 'mapped', [68821]], - [[68758, 68758], 'mapped', [68822]], - [[68759, 68759], 'mapped', [68823]], - [[68760, 68760], 'mapped', [68824]], - [[68761, 68761], 'mapped', [68825]], - [[68762, 68762], 'mapped', [68826]], - [[68763, 68763], 'mapped', [68827]], - [[68764, 68764], 'mapped', [68828]], - [[68765, 68765], 'mapped', [68829]], - [[68766, 68766], 'mapped', [68830]], - [[68767, 68767], 'mapped', [68831]], - [[68768, 68768], 'mapped', [68832]], - [[68769, 68769], 'mapped', [68833]], - [[68770, 68770], 'mapped', [68834]], - [[68771, 68771], 'mapped', [68835]], - [[68772, 68772], 'mapped', [68836]], - [[68773, 68773], 'mapped', [68837]], - [[68774, 68774], 'mapped', [68838]], - [[68775, 68775], 'mapped', [68839]], - [[68776, 68776], 'mapped', [68840]], - [[68777, 68777], 'mapped', [68841]], - [[68778, 68778], 'mapped', [68842]], - [[68779, 68779], 'mapped', [68843]], - [[68780, 68780], 'mapped', [68844]], - [[68781, 68781], 'mapped', [68845]], - [[68782, 68782], 'mapped', [68846]], - [[68783, 68783], 'mapped', [68847]], - [[68784, 68784], 'mapped', [68848]], - [[68785, 68785], 'mapped', [68849]], - [[68786, 68786], 'mapped', [68850]], - [[68787, 68799], 'disallowed'], - [[68800, 68850], 'valid'], - [[68851, 68857], 'disallowed'], - [[68858, 68863], 'valid', [], 'NV8'], - [[68864, 69215], 'disallowed'], - [[69216, 69246], 'valid', [], 'NV8'], - [[69247, 69631], 'disallowed'], - [[69632, 69702], 'valid'], - [[69703, 69709], 'valid', [], 'NV8'], - [[69710, 69713], 'disallowed'], - [[69714, 69733], 'valid', [], 'NV8'], - [[69734, 69743], 'valid'], - [[69744, 69758], 'disallowed'], - [[69759, 69759], 'valid'], - [[69760, 69818], 'valid'], - [[69819, 69820], 'valid', [], 'NV8'], - [[69821, 69821], 'disallowed'], - [[69822, 69825], 'valid', [], 'NV8'], - [[69826, 69839], 'disallowed'], - [[69840, 69864], 'valid'], - [[69865, 69871], 'disallowed'], - [[69872, 69881], 'valid'], - [[69882, 69887], 'disallowed'], - [[69888, 69940], 'valid'], - [[69941, 69941], 'disallowed'], - [[69942, 69951], 'valid'], - [[69952, 69955], 'valid', [], 'NV8'], - [[69956, 69967], 'disallowed'], - [[69968, 70003], 'valid'], - [[70004, 70005], 'valid', [], 'NV8'], - [[70006, 70006], 'valid'], - [[70007, 70015], 'disallowed'], - [[70016, 70084], 'valid'], - [[70085, 70088], 'valid', [], 'NV8'], - [[70089, 70089], 'valid', [], 'NV8'], - [[70090, 70092], 'valid'], - [[70093, 70093], 'valid', [], 'NV8'], - [[70094, 70095], 'disallowed'], - [[70096, 70105], 'valid'], - [[70106, 70106], 'valid'], - [[70107, 70107], 'valid', [], 'NV8'], - [[70108, 70108], 'valid'], - [[70109, 70111], 'valid', [], 'NV8'], - [[70112, 70112], 'disallowed'], - [[70113, 70132], 'valid', [], 'NV8'], - [[70133, 70143], 'disallowed'], - [[70144, 70161], 'valid'], - [[70162, 70162], 'disallowed'], - [[70163, 70199], 'valid'], - [[70200, 70205], 'valid', [], 'NV8'], - [[70206, 70271], 'disallowed'], - [[70272, 70278], 'valid'], - [[70279, 70279], 'disallowed'], - [[70280, 70280], 'valid'], - [[70281, 70281], 'disallowed'], - [[70282, 70285], 'valid'], - [[70286, 70286], 'disallowed'], - [[70287, 70301], 'valid'], - [[70302, 70302], 'disallowed'], - [[70303, 70312], 'valid'], - [[70313, 70313], 'valid', [], 'NV8'], - [[70314, 70319], 'disallowed'], - [[70320, 70378], 'valid'], - [[70379, 70383], 'disallowed'], - [[70384, 70393], 'valid'], - [[70394, 70399], 'disallowed'], - [[70400, 70400], 'valid'], - [[70401, 70403], 'valid'], - [[70404, 70404], 'disallowed'], - [[70405, 70412], 'valid'], - [[70413, 70414], 'disallowed'], - [[70415, 70416], 'valid'], - [[70417, 70418], 'disallowed'], - [[70419, 70440], 'valid'], - [[70441, 70441], 'disallowed'], - [[70442, 70448], 'valid'], - [[70449, 70449], 'disallowed'], - [[70450, 70451], 'valid'], - [[70452, 70452], 'disallowed'], - [[70453, 70457], 'valid'], - [[70458, 70459], 'disallowed'], - [[70460, 70468], 'valid'], - [[70469, 70470], 'disallowed'], - [[70471, 70472], 'valid'], - [[70473, 70474], 'disallowed'], - [[70475, 70477], 'valid'], - [[70478, 70479], 'disallowed'], - [[70480, 70480], 'valid'], - [[70481, 70486], 'disallowed'], - [[70487, 70487], 'valid'], - [[70488, 70492], 'disallowed'], - [[70493, 70499], 'valid'], - [[70500, 70501], 'disallowed'], - [[70502, 70508], 'valid'], - [[70509, 70511], 'disallowed'], - [[70512, 70516], 'valid'], - [[70517, 70783], 'disallowed'], - [[70784, 70853], 'valid'], - [[70854, 70854], 'valid', [], 'NV8'], - [[70855, 70855], 'valid'], - [[70856, 70863], 'disallowed'], - [[70864, 70873], 'valid'], - [[70874, 71039], 'disallowed'], - [[71040, 71093], 'valid'], - [[71094, 71095], 'disallowed'], - [[71096, 71104], 'valid'], - [[71105, 71113], 'valid', [], 'NV8'], - [[71114, 71127], 'valid', [], 'NV8'], - [[71128, 71133], 'valid'], - [[71134, 71167], 'disallowed'], - [[71168, 71232], 'valid'], - [[71233, 71235], 'valid', [], 'NV8'], - [[71236, 71236], 'valid'], - [[71237, 71247], 'disallowed'], - [[71248, 71257], 'valid'], - [[71258, 71295], 'disallowed'], - [[71296, 71351], 'valid'], - [[71352, 71359], 'disallowed'], - [[71360, 71369], 'valid'], - [[71370, 71423], 'disallowed'], - [[71424, 71449], 'valid'], - [[71450, 71452], 'disallowed'], - [[71453, 71467], 'valid'], - [[71468, 71471], 'disallowed'], - [[71472, 71481], 'valid'], - [[71482, 71487], 'valid', [], 'NV8'], - [[71488, 71839], 'disallowed'], - [[71840, 71840], 'mapped', [71872]], - [[71841, 71841], 'mapped', [71873]], - [[71842, 71842], 'mapped', [71874]], - [[71843, 71843], 'mapped', [71875]], - [[71844, 71844], 'mapped', [71876]], - [[71845, 71845], 'mapped', [71877]], - [[71846, 71846], 'mapped', [71878]], - [[71847, 71847], 'mapped', [71879]], - [[71848, 71848], 'mapped', [71880]], - [[71849, 71849], 'mapped', [71881]], - [[71850, 71850], 'mapped', [71882]], - [[71851, 71851], 'mapped', [71883]], - [[71852, 71852], 'mapped', [71884]], - [[71853, 71853], 'mapped', [71885]], - [[71854, 71854], 'mapped', [71886]], - [[71855, 71855], 'mapped', [71887]], - [[71856, 71856], 'mapped', [71888]], - [[71857, 71857], 'mapped', [71889]], - [[71858, 71858], 'mapped', [71890]], - [[71859, 71859], 'mapped', [71891]], - [[71860, 71860], 'mapped', [71892]], - [[71861, 71861], 'mapped', [71893]], - [[71862, 71862], 'mapped', [71894]], - [[71863, 71863], 'mapped', [71895]], - [[71864, 71864], 'mapped', [71896]], - [[71865, 71865], 'mapped', [71897]], - [[71866, 71866], 'mapped', [71898]], - [[71867, 71867], 'mapped', [71899]], - [[71868, 71868], 'mapped', [71900]], - [[71869, 71869], 'mapped', [71901]], - [[71870, 71870], 'mapped', [71902]], - [[71871, 71871], 'mapped', [71903]], - [[71872, 71913], 'valid'], - [[71914, 71922], 'valid', [], 'NV8'], - [[71923, 71934], 'disallowed'], - [[71935, 71935], 'valid'], - [[71936, 72383], 'disallowed'], - [[72384, 72440], 'valid'], - [[72441, 73727], 'disallowed'], - [[73728, 74606], 'valid'], - [[74607, 74648], 'valid'], - [[74649, 74649], 'valid'], - [[74650, 74751], 'disallowed'], - [[74752, 74850], 'valid', [], 'NV8'], - [[74851, 74862], 'valid', [], 'NV8'], - [[74863, 74863], 'disallowed'], - [[74864, 74867], 'valid', [], 'NV8'], - [[74868, 74868], 'valid', [], 'NV8'], - [[74869, 74879], 'disallowed'], - [[74880, 75075], 'valid'], - [[75076, 77823], 'disallowed'], - [[77824, 78894], 'valid'], - [[78895, 82943], 'disallowed'], - [[82944, 83526], 'valid'], - [[83527, 92159], 'disallowed'], - [[92160, 92728], 'valid'], - [[92729, 92735], 'disallowed'], - [[92736, 92766], 'valid'], - [[92767, 92767], 'disallowed'], - [[92768, 92777], 'valid'], - [[92778, 92781], 'disallowed'], - [[92782, 92783], 'valid', [], 'NV8'], - [[92784, 92879], 'disallowed'], - [[92880, 92909], 'valid'], - [[92910, 92911], 'disallowed'], - [[92912, 92916], 'valid'], - [[92917, 92917], 'valid', [], 'NV8'], - [[92918, 92927], 'disallowed'], - [[92928, 92982], 'valid'], - [[92983, 92991], 'valid', [], 'NV8'], - [[92992, 92995], 'valid'], - [[92996, 92997], 'valid', [], 'NV8'], - [[92998, 93007], 'disallowed'], - [[93008, 93017], 'valid'], - [[93018, 93018], 'disallowed'], - [[93019, 93025], 'valid', [], 'NV8'], - [[93026, 93026], 'disallowed'], - [[93027, 93047], 'valid'], - [[93048, 93052], 'disallowed'], - [[93053, 93071], 'valid'], - [[93072, 93951], 'disallowed'], - [[93952, 94020], 'valid'], - [[94021, 94031], 'disallowed'], - [[94032, 94078], 'valid'], - [[94079, 94094], 'disallowed'], - [[94095, 94111], 'valid'], - [[94112, 110591], 'disallowed'], - [[110592, 110593], 'valid'], - [[110594, 113663], 'disallowed'], - [[113664, 113770], 'valid'], - [[113771, 113775], 'disallowed'], - [[113776, 113788], 'valid'], - [[113789, 113791], 'disallowed'], - [[113792, 113800], 'valid'], - [[113801, 113807], 'disallowed'], - [[113808, 113817], 'valid'], - [[113818, 113819], 'disallowed'], - [[113820, 113820], 'valid', [], 'NV8'], - [[113821, 113822], 'valid'], - [[113823, 113823], 'valid', [], 'NV8'], - [[113824, 113827], 'ignored'], - [[113828, 118783], 'disallowed'], - [[118784, 119029], 'valid', [], 'NV8'], - [[119030, 119039], 'disallowed'], - [[119040, 119078], 'valid', [], 'NV8'], - [[119079, 119080], 'disallowed'], - [[119081, 119081], 'valid', [], 'NV8'], - [[119082, 119133], 'valid', [], 'NV8'], - [[119134, 119134], 'mapped', [119127, 119141]], - [[119135, 119135], 'mapped', [119128, 119141]], - [[119136, 119136], 'mapped', [119128, 119141, 119150]], - [[119137, 119137], 'mapped', [119128, 119141, 119151]], - [[119138, 119138], 'mapped', [119128, 119141, 119152]], - [[119139, 119139], 'mapped', [119128, 119141, 119153]], - [[119140, 119140], 'mapped', [119128, 119141, 119154]], - [[119141, 119154], 'valid', [], 'NV8'], - [[119155, 119162], 'disallowed'], - [[119163, 119226], 'valid', [], 'NV8'], - [[119227, 119227], 'mapped', [119225, 119141]], - [[119228, 119228], 'mapped', [119226, 119141]], - [[119229, 119229], 'mapped', [119225, 119141, 119150]], - [[119230, 119230], 'mapped', [119226, 119141, 119150]], - [[119231, 119231], 'mapped', [119225, 119141, 119151]], - [[119232, 119232], 'mapped', [119226, 119141, 119151]], - [[119233, 119261], 'valid', [], 'NV8'], - [[119262, 119272], 'valid', [], 'NV8'], - [[119273, 119295], 'disallowed'], - [[119296, 119365], 'valid', [], 'NV8'], - [[119366, 119551], 'disallowed'], - [[119552, 119638], 'valid', [], 'NV8'], - [[119639, 119647], 'disallowed'], - [[119648, 119665], 'valid', [], 'NV8'], - [[119666, 119807], 'disallowed'], - [[119808, 119808], 'mapped', [97]], - [[119809, 119809], 'mapped', [98]], - [[119810, 119810], 'mapped', [99]], - [[119811, 119811], 'mapped', [100]], - [[119812, 119812], 'mapped', [101]], - [[119813, 119813], 'mapped', [102]], - [[119814, 119814], 'mapped', [103]], - [[119815, 119815], 'mapped', [104]], - [[119816, 119816], 'mapped', [105]], - [[119817, 119817], 'mapped', [106]], - [[119818, 119818], 'mapped', [107]], - [[119819, 119819], 'mapped', [108]], - [[119820, 119820], 'mapped', [109]], - [[119821, 119821], 'mapped', [110]], - [[119822, 119822], 'mapped', [111]], - [[119823, 119823], 'mapped', [112]], - [[119824, 119824], 'mapped', [113]], - [[119825, 119825], 'mapped', [114]], - [[119826, 119826], 'mapped', [115]], - [[119827, 119827], 'mapped', [116]], - [[119828, 119828], 'mapped', [117]], - [[119829, 119829], 'mapped', [118]], - [[119830, 119830], 'mapped', [119]], - [[119831, 119831], 'mapped', [120]], - [[119832, 119832], 'mapped', [121]], - [[119833, 119833], 'mapped', [122]], - [[119834, 119834], 'mapped', [97]], - [[119835, 119835], 'mapped', [98]], - [[119836, 119836], 'mapped', [99]], - [[119837, 119837], 'mapped', [100]], - [[119838, 119838], 'mapped', [101]], - [[119839, 119839], 'mapped', [102]], - [[119840, 119840], 'mapped', [103]], - [[119841, 119841], 'mapped', [104]], - [[119842, 119842], 'mapped', [105]], - [[119843, 119843], 'mapped', [106]], - [[119844, 119844], 'mapped', [107]], - [[119845, 119845], 'mapped', [108]], - [[119846, 119846], 'mapped', [109]], - [[119847, 119847], 'mapped', [110]], - [[119848, 119848], 'mapped', [111]], - [[119849, 119849], 'mapped', [112]], - [[119850, 119850], 'mapped', [113]], - [[119851, 119851], 'mapped', [114]], - [[119852, 119852], 'mapped', [115]], - [[119853, 119853], 'mapped', [116]], - [[119854, 119854], 'mapped', [117]], - [[119855, 119855], 'mapped', [118]], - [[119856, 119856], 'mapped', [119]], - [[119857, 119857], 'mapped', [120]], - [[119858, 119858], 'mapped', [121]], - [[119859, 119859], 'mapped', [122]], - [[119860, 119860], 'mapped', [97]], - [[119861, 119861], 'mapped', [98]], - [[119862, 119862], 'mapped', [99]], - [[119863, 119863], 'mapped', [100]], - [[119864, 119864], 'mapped', [101]], - [[119865, 119865], 'mapped', [102]], - [[119866, 119866], 'mapped', [103]], - [[119867, 119867], 'mapped', [104]], - [[119868, 119868], 'mapped', [105]], - [[119869, 119869], 'mapped', [106]], - [[119870, 119870], 'mapped', [107]], - [[119871, 119871], 'mapped', [108]], - [[119872, 119872], 'mapped', [109]], - [[119873, 119873], 'mapped', [110]], - [[119874, 119874], 'mapped', [111]], - [[119875, 119875], 'mapped', [112]], - [[119876, 119876], 'mapped', [113]], - [[119877, 119877], 'mapped', [114]], - [[119878, 119878], 'mapped', [115]], - [[119879, 119879], 'mapped', [116]], - [[119880, 119880], 'mapped', [117]], - [[119881, 119881], 'mapped', [118]], - [[119882, 119882], 'mapped', [119]], - [[119883, 119883], 'mapped', [120]], - [[119884, 119884], 'mapped', [121]], - [[119885, 119885], 'mapped', [122]], - [[119886, 119886], 'mapped', [97]], - [[119887, 119887], 'mapped', [98]], - [[119888, 119888], 'mapped', [99]], - [[119889, 119889], 'mapped', [100]], - [[119890, 119890], 'mapped', [101]], - [[119891, 119891], 'mapped', [102]], - [[119892, 119892], 'mapped', [103]], - [[119893, 119893], 'disallowed'], - [[119894, 119894], 'mapped', [105]], - [[119895, 119895], 'mapped', [106]], - [[119896, 119896], 'mapped', [107]], - [[119897, 119897], 'mapped', [108]], - [[119898, 119898], 'mapped', [109]], - [[119899, 119899], 'mapped', [110]], - [[119900, 119900], 'mapped', [111]], - [[119901, 119901], 'mapped', [112]], - [[119902, 119902], 'mapped', [113]], - [[119903, 119903], 'mapped', [114]], - [[119904, 119904], 'mapped', [115]], - [[119905, 119905], 'mapped', [116]], - [[119906, 119906], 'mapped', [117]], - [[119907, 119907], 'mapped', [118]], - [[119908, 119908], 'mapped', [119]], - [[119909, 119909], 'mapped', [120]], - [[119910, 119910], 'mapped', [121]], - [[119911, 119911], 'mapped', [122]], - [[119912, 119912], 'mapped', [97]], - [[119913, 119913], 'mapped', [98]], - [[119914, 119914], 'mapped', [99]], - [[119915, 119915], 'mapped', [100]], - [[119916, 119916], 'mapped', [101]], - [[119917, 119917], 'mapped', [102]], - [[119918, 119918], 'mapped', [103]], - [[119919, 119919], 'mapped', [104]], - [[119920, 119920], 'mapped', [105]], - [[119921, 119921], 'mapped', [106]], - [[119922, 119922], 'mapped', [107]], - [[119923, 119923], 'mapped', [108]], - [[119924, 119924], 'mapped', [109]], - [[119925, 119925], 'mapped', [110]], - [[119926, 119926], 'mapped', [111]], - [[119927, 119927], 'mapped', [112]], - [[119928, 119928], 'mapped', [113]], - [[119929, 119929], 'mapped', [114]], - [[119930, 119930], 'mapped', [115]], - [[119931, 119931], 'mapped', [116]], - [[119932, 119932], 'mapped', [117]], - [[119933, 119933], 'mapped', [118]], - [[119934, 119934], 'mapped', [119]], - [[119935, 119935], 'mapped', [120]], - [[119936, 119936], 'mapped', [121]], - [[119937, 119937], 'mapped', [122]], - [[119938, 119938], 'mapped', [97]], - [[119939, 119939], 'mapped', [98]], - [[119940, 119940], 'mapped', [99]], - [[119941, 119941], 'mapped', [100]], - [[119942, 119942], 'mapped', [101]], - [[119943, 119943], 'mapped', [102]], - [[119944, 119944], 'mapped', [103]], - [[119945, 119945], 'mapped', [104]], - [[119946, 119946], 'mapped', [105]], - [[119947, 119947], 'mapped', [106]], - [[119948, 119948], 'mapped', [107]], - [[119949, 119949], 'mapped', [108]], - [[119950, 119950], 'mapped', [109]], - [[119951, 119951], 'mapped', [110]], - [[119952, 119952], 'mapped', [111]], - [[119953, 119953], 'mapped', [112]], - [[119954, 119954], 'mapped', [113]], - [[119955, 119955], 'mapped', [114]], - [[119956, 119956], 'mapped', [115]], - [[119957, 119957], 'mapped', [116]], - [[119958, 119958], 'mapped', [117]], - [[119959, 119959], 'mapped', [118]], - [[119960, 119960], 'mapped', [119]], - [[119961, 119961], 'mapped', [120]], - [[119962, 119962], 'mapped', [121]], - [[119963, 119963], 'mapped', [122]], - [[119964, 119964], 'mapped', [97]], - [[119965, 119965], 'disallowed'], - [[119966, 119966], 'mapped', [99]], - [[119967, 119967], 'mapped', [100]], - [[119968, 119969], 'disallowed'], - [[119970, 119970], 'mapped', [103]], - [[119971, 119972], 'disallowed'], - [[119973, 119973], 'mapped', [106]], - [[119974, 119974], 'mapped', [107]], - [[119975, 119976], 'disallowed'], - [[119977, 119977], 'mapped', [110]], - [[119978, 119978], 'mapped', [111]], - [[119979, 119979], 'mapped', [112]], - [[119980, 119980], 'mapped', [113]], - [[119981, 119981], 'disallowed'], - [[119982, 119982], 'mapped', [115]], - [[119983, 119983], 'mapped', [116]], - [[119984, 119984], 'mapped', [117]], - [[119985, 119985], 'mapped', [118]], - [[119986, 119986], 'mapped', [119]], - [[119987, 119987], 'mapped', [120]], - [[119988, 119988], 'mapped', [121]], - [[119989, 119989], 'mapped', [122]], - [[119990, 119990], 'mapped', [97]], - [[119991, 119991], 'mapped', [98]], - [[119992, 119992], 'mapped', [99]], - [[119993, 119993], 'mapped', [100]], - [[119994, 119994], 'disallowed'], - [[119995, 119995], 'mapped', [102]], - [[119996, 119996], 'disallowed'], - [[119997, 119997], 'mapped', [104]], - [[119998, 119998], 'mapped', [105]], - [[119999, 119999], 'mapped', [106]], - [[12e4, 12e4], 'mapped', [107]], - [[120001, 120001], 'mapped', [108]], - [[120002, 120002], 'mapped', [109]], - [[120003, 120003], 'mapped', [110]], - [[120004, 120004], 'disallowed'], - [[120005, 120005], 'mapped', [112]], - [[120006, 120006], 'mapped', [113]], - [[120007, 120007], 'mapped', [114]], - [[120008, 120008], 'mapped', [115]], - [[120009, 120009], 'mapped', [116]], - [[120010, 120010], 'mapped', [117]], - [[120011, 120011], 'mapped', [118]], - [[120012, 120012], 'mapped', [119]], - [[120013, 120013], 'mapped', [120]], - [[120014, 120014], 'mapped', [121]], - [[120015, 120015], 'mapped', [122]], - [[120016, 120016], 'mapped', [97]], - [[120017, 120017], 'mapped', [98]], - [[120018, 120018], 'mapped', [99]], - [[120019, 120019], 'mapped', [100]], - [[120020, 120020], 'mapped', [101]], - [[120021, 120021], 'mapped', [102]], - [[120022, 120022], 'mapped', [103]], - [[120023, 120023], 'mapped', [104]], - [[120024, 120024], 'mapped', [105]], - [[120025, 120025], 'mapped', [106]], - [[120026, 120026], 'mapped', [107]], - [[120027, 120027], 'mapped', [108]], - [[120028, 120028], 'mapped', [109]], - [[120029, 120029], 'mapped', [110]], - [[120030, 120030], 'mapped', [111]], - [[120031, 120031], 'mapped', [112]], - [[120032, 120032], 'mapped', [113]], - [[120033, 120033], 'mapped', [114]], - [[120034, 120034], 'mapped', [115]], - [[120035, 120035], 'mapped', [116]], - [[120036, 120036], 'mapped', [117]], - [[120037, 120037], 'mapped', [118]], - [[120038, 120038], 'mapped', [119]], - [[120039, 120039], 'mapped', [120]], - [[120040, 120040], 'mapped', [121]], - [[120041, 120041], 'mapped', [122]], - [[120042, 120042], 'mapped', [97]], - [[120043, 120043], 'mapped', [98]], - [[120044, 120044], 'mapped', [99]], - [[120045, 120045], 'mapped', [100]], - [[120046, 120046], 'mapped', [101]], - [[120047, 120047], 'mapped', [102]], - [[120048, 120048], 'mapped', [103]], - [[120049, 120049], 'mapped', [104]], - [[120050, 120050], 'mapped', [105]], - [[120051, 120051], 'mapped', [106]], - [[120052, 120052], 'mapped', [107]], - [[120053, 120053], 'mapped', [108]], - [[120054, 120054], 'mapped', [109]], - [[120055, 120055], 'mapped', [110]], - [[120056, 120056], 'mapped', [111]], - [[120057, 120057], 'mapped', [112]], - [[120058, 120058], 'mapped', [113]], - [[120059, 120059], 'mapped', [114]], - [[120060, 120060], 'mapped', [115]], - [[120061, 120061], 'mapped', [116]], - [[120062, 120062], 'mapped', [117]], - [[120063, 120063], 'mapped', [118]], - [[120064, 120064], 'mapped', [119]], - [[120065, 120065], 'mapped', [120]], - [[120066, 120066], 'mapped', [121]], - [[120067, 120067], 'mapped', [122]], - [[120068, 120068], 'mapped', [97]], - [[120069, 120069], 'mapped', [98]], - [[120070, 120070], 'disallowed'], - [[120071, 120071], 'mapped', [100]], - [[120072, 120072], 'mapped', [101]], - [[120073, 120073], 'mapped', [102]], - [[120074, 120074], 'mapped', [103]], - [[120075, 120076], 'disallowed'], - [[120077, 120077], 'mapped', [106]], - [[120078, 120078], 'mapped', [107]], - [[120079, 120079], 'mapped', [108]], - [[120080, 120080], 'mapped', [109]], - [[120081, 120081], 'mapped', [110]], - [[120082, 120082], 'mapped', [111]], - [[120083, 120083], 'mapped', [112]], - [[120084, 120084], 'mapped', [113]], - [[120085, 120085], 'disallowed'], - [[120086, 120086], 'mapped', [115]], - [[120087, 120087], 'mapped', [116]], - [[120088, 120088], 'mapped', [117]], - [[120089, 120089], 'mapped', [118]], - [[120090, 120090], 'mapped', [119]], - [[120091, 120091], 'mapped', [120]], - [[120092, 120092], 'mapped', [121]], - [[120093, 120093], 'disallowed'], - [[120094, 120094], 'mapped', [97]], - [[120095, 120095], 'mapped', [98]], - [[120096, 120096], 'mapped', [99]], - [[120097, 120097], 'mapped', [100]], - [[120098, 120098], 'mapped', [101]], - [[120099, 120099], 'mapped', [102]], - [[120100, 120100], 'mapped', [103]], - [[120101, 120101], 'mapped', [104]], - [[120102, 120102], 'mapped', [105]], - [[120103, 120103], 'mapped', [106]], - [[120104, 120104], 'mapped', [107]], - [[120105, 120105], 'mapped', [108]], - [[120106, 120106], 'mapped', [109]], - [[120107, 120107], 'mapped', [110]], - [[120108, 120108], 'mapped', [111]], - [[120109, 120109], 'mapped', [112]], - [[120110, 120110], 'mapped', [113]], - [[120111, 120111], 'mapped', [114]], - [[120112, 120112], 'mapped', [115]], - [[120113, 120113], 'mapped', [116]], - [[120114, 120114], 'mapped', [117]], - [[120115, 120115], 'mapped', [118]], - [[120116, 120116], 'mapped', [119]], - [[120117, 120117], 'mapped', [120]], - [[120118, 120118], 'mapped', [121]], - [[120119, 120119], 'mapped', [122]], - [[120120, 120120], 'mapped', [97]], - [[120121, 120121], 'mapped', [98]], - [[120122, 120122], 'disallowed'], - [[120123, 120123], 'mapped', [100]], - [[120124, 120124], 'mapped', [101]], - [[120125, 120125], 'mapped', [102]], - [[120126, 120126], 'mapped', [103]], - [[120127, 120127], 'disallowed'], - [[120128, 120128], 'mapped', [105]], - [[120129, 120129], 'mapped', [106]], - [[120130, 120130], 'mapped', [107]], - [[120131, 120131], 'mapped', [108]], - [[120132, 120132], 'mapped', [109]], - [[120133, 120133], 'disallowed'], - [[120134, 120134], 'mapped', [111]], - [[120135, 120137], 'disallowed'], - [[120138, 120138], 'mapped', [115]], - [[120139, 120139], 'mapped', [116]], - [[120140, 120140], 'mapped', [117]], - [[120141, 120141], 'mapped', [118]], - [[120142, 120142], 'mapped', [119]], - [[120143, 120143], 'mapped', [120]], - [[120144, 120144], 'mapped', [121]], - [[120145, 120145], 'disallowed'], - [[120146, 120146], 'mapped', [97]], - [[120147, 120147], 'mapped', [98]], - [[120148, 120148], 'mapped', [99]], - [[120149, 120149], 'mapped', [100]], - [[120150, 120150], 'mapped', [101]], - [[120151, 120151], 'mapped', [102]], - [[120152, 120152], 'mapped', [103]], - [[120153, 120153], 'mapped', [104]], - [[120154, 120154], 'mapped', [105]], - [[120155, 120155], 'mapped', [106]], - [[120156, 120156], 'mapped', [107]], - [[120157, 120157], 'mapped', [108]], - [[120158, 120158], 'mapped', [109]], - [[120159, 120159], 'mapped', [110]], - [[120160, 120160], 'mapped', [111]], - [[120161, 120161], 'mapped', [112]], - [[120162, 120162], 'mapped', [113]], - [[120163, 120163], 'mapped', [114]], - [[120164, 120164], 'mapped', [115]], - [[120165, 120165], 'mapped', [116]], - [[120166, 120166], 'mapped', [117]], - [[120167, 120167], 'mapped', [118]], - [[120168, 120168], 'mapped', [119]], - [[120169, 120169], 'mapped', [120]], - [[120170, 120170], 'mapped', [121]], - [[120171, 120171], 'mapped', [122]], - [[120172, 120172], 'mapped', [97]], - [[120173, 120173], 'mapped', [98]], - [[120174, 120174], 'mapped', [99]], - [[120175, 120175], 'mapped', [100]], - [[120176, 120176], 'mapped', [101]], - [[120177, 120177], 'mapped', [102]], - [[120178, 120178], 'mapped', [103]], - [[120179, 120179], 'mapped', [104]], - [[120180, 120180], 'mapped', [105]], - [[120181, 120181], 'mapped', [106]], - [[120182, 120182], 'mapped', [107]], - [[120183, 120183], 'mapped', [108]], - [[120184, 120184], 'mapped', [109]], - [[120185, 120185], 'mapped', [110]], - [[120186, 120186], 'mapped', [111]], - [[120187, 120187], 'mapped', [112]], - [[120188, 120188], 'mapped', [113]], - [[120189, 120189], 'mapped', [114]], - [[120190, 120190], 'mapped', [115]], - [[120191, 120191], 'mapped', [116]], - [[120192, 120192], 'mapped', [117]], - [[120193, 120193], 'mapped', [118]], - [[120194, 120194], 'mapped', [119]], - [[120195, 120195], 'mapped', [120]], - [[120196, 120196], 'mapped', [121]], - [[120197, 120197], 'mapped', [122]], - [[120198, 120198], 'mapped', [97]], - [[120199, 120199], 'mapped', [98]], - [[120200, 120200], 'mapped', [99]], - [[120201, 120201], 'mapped', [100]], - [[120202, 120202], 'mapped', [101]], - [[120203, 120203], 'mapped', [102]], - [[120204, 120204], 'mapped', [103]], - [[120205, 120205], 'mapped', [104]], - [[120206, 120206], 'mapped', [105]], - [[120207, 120207], 'mapped', [106]], - [[120208, 120208], 'mapped', [107]], - [[120209, 120209], 'mapped', [108]], - [[120210, 120210], 'mapped', [109]], - [[120211, 120211], 'mapped', [110]], - [[120212, 120212], 'mapped', [111]], - [[120213, 120213], 'mapped', [112]], - [[120214, 120214], 'mapped', [113]], - [[120215, 120215], 'mapped', [114]], - [[120216, 120216], 'mapped', [115]], - [[120217, 120217], 'mapped', [116]], - [[120218, 120218], 'mapped', [117]], - [[120219, 120219], 'mapped', [118]], - [[120220, 120220], 'mapped', [119]], - [[120221, 120221], 'mapped', [120]], - [[120222, 120222], 'mapped', [121]], - [[120223, 120223], 'mapped', [122]], - [[120224, 120224], 'mapped', [97]], - [[120225, 120225], 'mapped', [98]], - [[120226, 120226], 'mapped', [99]], - [[120227, 120227], 'mapped', [100]], - [[120228, 120228], 'mapped', [101]], - [[120229, 120229], 'mapped', [102]], - [[120230, 120230], 'mapped', [103]], - [[120231, 120231], 'mapped', [104]], - [[120232, 120232], 'mapped', [105]], - [[120233, 120233], 'mapped', [106]], - [[120234, 120234], 'mapped', [107]], - [[120235, 120235], 'mapped', [108]], - [[120236, 120236], 'mapped', [109]], - [[120237, 120237], 'mapped', [110]], - [[120238, 120238], 'mapped', [111]], - [[120239, 120239], 'mapped', [112]], - [[120240, 120240], 'mapped', [113]], - [[120241, 120241], 'mapped', [114]], - [[120242, 120242], 'mapped', [115]], - [[120243, 120243], 'mapped', [116]], - [[120244, 120244], 'mapped', [117]], - [[120245, 120245], 'mapped', [118]], - [[120246, 120246], 'mapped', [119]], - [[120247, 120247], 'mapped', [120]], - [[120248, 120248], 'mapped', [121]], - [[120249, 120249], 'mapped', [122]], - [[120250, 120250], 'mapped', [97]], - [[120251, 120251], 'mapped', [98]], - [[120252, 120252], 'mapped', [99]], - [[120253, 120253], 'mapped', [100]], - [[120254, 120254], 'mapped', [101]], - [[120255, 120255], 'mapped', [102]], - [[120256, 120256], 'mapped', [103]], - [[120257, 120257], 'mapped', [104]], - [[120258, 120258], 'mapped', [105]], - [[120259, 120259], 'mapped', [106]], - [[120260, 120260], 'mapped', [107]], - [[120261, 120261], 'mapped', [108]], - [[120262, 120262], 'mapped', [109]], - [[120263, 120263], 'mapped', [110]], - [[120264, 120264], 'mapped', [111]], - [[120265, 120265], 'mapped', [112]], - [[120266, 120266], 'mapped', [113]], - [[120267, 120267], 'mapped', [114]], - [[120268, 120268], 'mapped', [115]], - [[120269, 120269], 'mapped', [116]], - [[120270, 120270], 'mapped', [117]], - [[120271, 120271], 'mapped', [118]], - [[120272, 120272], 'mapped', [119]], - [[120273, 120273], 'mapped', [120]], - [[120274, 120274], 'mapped', [121]], - [[120275, 120275], 'mapped', [122]], - [[120276, 120276], 'mapped', [97]], - [[120277, 120277], 'mapped', [98]], - [[120278, 120278], 'mapped', [99]], - [[120279, 120279], 'mapped', [100]], - [[120280, 120280], 'mapped', [101]], - [[120281, 120281], 'mapped', [102]], - [[120282, 120282], 'mapped', [103]], - [[120283, 120283], 'mapped', [104]], - [[120284, 120284], 'mapped', [105]], - [[120285, 120285], 'mapped', [106]], - [[120286, 120286], 'mapped', [107]], - [[120287, 120287], 'mapped', [108]], - [[120288, 120288], 'mapped', [109]], - [[120289, 120289], 'mapped', [110]], - [[120290, 120290], 'mapped', [111]], - [[120291, 120291], 'mapped', [112]], - [[120292, 120292], 'mapped', [113]], - [[120293, 120293], 'mapped', [114]], - [[120294, 120294], 'mapped', [115]], - [[120295, 120295], 'mapped', [116]], - [[120296, 120296], 'mapped', [117]], - [[120297, 120297], 'mapped', [118]], - [[120298, 120298], 'mapped', [119]], - [[120299, 120299], 'mapped', [120]], - [[120300, 120300], 'mapped', [121]], - [[120301, 120301], 'mapped', [122]], - [[120302, 120302], 'mapped', [97]], - [[120303, 120303], 'mapped', [98]], - [[120304, 120304], 'mapped', [99]], - [[120305, 120305], 'mapped', [100]], - [[120306, 120306], 'mapped', [101]], - [[120307, 120307], 'mapped', [102]], - [[120308, 120308], 'mapped', [103]], - [[120309, 120309], 'mapped', [104]], - [[120310, 120310], 'mapped', [105]], - [[120311, 120311], 'mapped', [106]], - [[120312, 120312], 'mapped', [107]], - [[120313, 120313], 'mapped', [108]], - [[120314, 120314], 'mapped', [109]], - [[120315, 120315], 'mapped', [110]], - [[120316, 120316], 'mapped', [111]], - [[120317, 120317], 'mapped', [112]], - [[120318, 120318], 'mapped', [113]], - [[120319, 120319], 'mapped', [114]], - [[120320, 120320], 'mapped', [115]], - [[120321, 120321], 'mapped', [116]], - [[120322, 120322], 'mapped', [117]], - [[120323, 120323], 'mapped', [118]], - [[120324, 120324], 'mapped', [119]], - [[120325, 120325], 'mapped', [120]], - [[120326, 120326], 'mapped', [121]], - [[120327, 120327], 'mapped', [122]], - [[120328, 120328], 'mapped', [97]], - [[120329, 120329], 'mapped', [98]], - [[120330, 120330], 'mapped', [99]], - [[120331, 120331], 'mapped', [100]], - [[120332, 120332], 'mapped', [101]], - [[120333, 120333], 'mapped', [102]], - [[120334, 120334], 'mapped', [103]], - [[120335, 120335], 'mapped', [104]], - [[120336, 120336], 'mapped', [105]], - [[120337, 120337], 'mapped', [106]], - [[120338, 120338], 'mapped', [107]], - [[120339, 120339], 'mapped', [108]], - [[120340, 120340], 'mapped', [109]], - [[120341, 120341], 'mapped', [110]], - [[120342, 120342], 'mapped', [111]], - [[120343, 120343], 'mapped', [112]], - [[120344, 120344], 'mapped', [113]], - [[120345, 120345], 'mapped', [114]], - [[120346, 120346], 'mapped', [115]], - [[120347, 120347], 'mapped', [116]], - [[120348, 120348], 'mapped', [117]], - [[120349, 120349], 'mapped', [118]], - [[120350, 120350], 'mapped', [119]], - [[120351, 120351], 'mapped', [120]], - [[120352, 120352], 'mapped', [121]], - [[120353, 120353], 'mapped', [122]], - [[120354, 120354], 'mapped', [97]], - [[120355, 120355], 'mapped', [98]], - [[120356, 120356], 'mapped', [99]], - [[120357, 120357], 'mapped', [100]], - [[120358, 120358], 'mapped', [101]], - [[120359, 120359], 'mapped', [102]], - [[120360, 120360], 'mapped', [103]], - [[120361, 120361], 'mapped', [104]], - [[120362, 120362], 'mapped', [105]], - [[120363, 120363], 'mapped', [106]], - [[120364, 120364], 'mapped', [107]], - [[120365, 120365], 'mapped', [108]], - [[120366, 120366], 'mapped', [109]], - [[120367, 120367], 'mapped', [110]], - [[120368, 120368], 'mapped', [111]], - [[120369, 120369], 'mapped', [112]], - [[120370, 120370], 'mapped', [113]], - [[120371, 120371], 'mapped', [114]], - [[120372, 120372], 'mapped', [115]], - [[120373, 120373], 'mapped', [116]], - [[120374, 120374], 'mapped', [117]], - [[120375, 120375], 'mapped', [118]], - [[120376, 120376], 'mapped', [119]], - [[120377, 120377], 'mapped', [120]], - [[120378, 120378], 'mapped', [121]], - [[120379, 120379], 'mapped', [122]], - [[120380, 120380], 'mapped', [97]], - [[120381, 120381], 'mapped', [98]], - [[120382, 120382], 'mapped', [99]], - [[120383, 120383], 'mapped', [100]], - [[120384, 120384], 'mapped', [101]], - [[120385, 120385], 'mapped', [102]], - [[120386, 120386], 'mapped', [103]], - [[120387, 120387], 'mapped', [104]], - [[120388, 120388], 'mapped', [105]], - [[120389, 120389], 'mapped', [106]], - [[120390, 120390], 'mapped', [107]], - [[120391, 120391], 'mapped', [108]], - [[120392, 120392], 'mapped', [109]], - [[120393, 120393], 'mapped', [110]], - [[120394, 120394], 'mapped', [111]], - [[120395, 120395], 'mapped', [112]], - [[120396, 120396], 'mapped', [113]], - [[120397, 120397], 'mapped', [114]], - [[120398, 120398], 'mapped', [115]], - [[120399, 120399], 'mapped', [116]], - [[120400, 120400], 'mapped', [117]], - [[120401, 120401], 'mapped', [118]], - [[120402, 120402], 'mapped', [119]], - [[120403, 120403], 'mapped', [120]], - [[120404, 120404], 'mapped', [121]], - [[120405, 120405], 'mapped', [122]], - [[120406, 120406], 'mapped', [97]], - [[120407, 120407], 'mapped', [98]], - [[120408, 120408], 'mapped', [99]], - [[120409, 120409], 'mapped', [100]], - [[120410, 120410], 'mapped', [101]], - [[120411, 120411], 'mapped', [102]], - [[120412, 120412], 'mapped', [103]], - [[120413, 120413], 'mapped', [104]], - [[120414, 120414], 'mapped', [105]], - [[120415, 120415], 'mapped', [106]], - [[120416, 120416], 'mapped', [107]], - [[120417, 120417], 'mapped', [108]], - [[120418, 120418], 'mapped', [109]], - [[120419, 120419], 'mapped', [110]], - [[120420, 120420], 'mapped', [111]], - [[120421, 120421], 'mapped', [112]], - [[120422, 120422], 'mapped', [113]], - [[120423, 120423], 'mapped', [114]], - [[120424, 120424], 'mapped', [115]], - [[120425, 120425], 'mapped', [116]], - [[120426, 120426], 'mapped', [117]], - [[120427, 120427], 'mapped', [118]], - [[120428, 120428], 'mapped', [119]], - [[120429, 120429], 'mapped', [120]], - [[120430, 120430], 'mapped', [121]], - [[120431, 120431], 'mapped', [122]], - [[120432, 120432], 'mapped', [97]], - [[120433, 120433], 'mapped', [98]], - [[120434, 120434], 'mapped', [99]], - [[120435, 120435], 'mapped', [100]], - [[120436, 120436], 'mapped', [101]], - [[120437, 120437], 'mapped', [102]], - [[120438, 120438], 'mapped', [103]], - [[120439, 120439], 'mapped', [104]], - [[120440, 120440], 'mapped', [105]], - [[120441, 120441], 'mapped', [106]], - [[120442, 120442], 'mapped', [107]], - [[120443, 120443], 'mapped', [108]], - [[120444, 120444], 'mapped', [109]], - [[120445, 120445], 'mapped', [110]], - [[120446, 120446], 'mapped', [111]], - [[120447, 120447], 'mapped', [112]], - [[120448, 120448], 'mapped', [113]], - [[120449, 120449], 'mapped', [114]], - [[120450, 120450], 'mapped', [115]], - [[120451, 120451], 'mapped', [116]], - [[120452, 120452], 'mapped', [117]], - [[120453, 120453], 'mapped', [118]], - [[120454, 120454], 'mapped', [119]], - [[120455, 120455], 'mapped', [120]], - [[120456, 120456], 'mapped', [121]], - [[120457, 120457], 'mapped', [122]], - [[120458, 120458], 'mapped', [97]], - [[120459, 120459], 'mapped', [98]], - [[120460, 120460], 'mapped', [99]], - [[120461, 120461], 'mapped', [100]], - [[120462, 120462], 'mapped', [101]], - [[120463, 120463], 'mapped', [102]], - [[120464, 120464], 'mapped', [103]], - [[120465, 120465], 'mapped', [104]], - [[120466, 120466], 'mapped', [105]], - [[120467, 120467], 'mapped', [106]], - [[120468, 120468], 'mapped', [107]], - [[120469, 120469], 'mapped', [108]], - [[120470, 120470], 'mapped', [109]], - [[120471, 120471], 'mapped', [110]], - [[120472, 120472], 'mapped', [111]], - [[120473, 120473], 'mapped', [112]], - [[120474, 120474], 'mapped', [113]], - [[120475, 120475], 'mapped', [114]], - [[120476, 120476], 'mapped', [115]], - [[120477, 120477], 'mapped', [116]], - [[120478, 120478], 'mapped', [117]], - [[120479, 120479], 'mapped', [118]], - [[120480, 120480], 'mapped', [119]], - [[120481, 120481], 'mapped', [120]], - [[120482, 120482], 'mapped', [121]], - [[120483, 120483], 'mapped', [122]], - [[120484, 120484], 'mapped', [305]], - [[120485, 120485], 'mapped', [567]], - [[120486, 120487], 'disallowed'], - [[120488, 120488], 'mapped', [945]], - [[120489, 120489], 'mapped', [946]], - [[120490, 120490], 'mapped', [947]], - [[120491, 120491], 'mapped', [948]], - [[120492, 120492], 'mapped', [949]], - [[120493, 120493], 'mapped', [950]], - [[120494, 120494], 'mapped', [951]], - [[120495, 120495], 'mapped', [952]], - [[120496, 120496], 'mapped', [953]], - [[120497, 120497], 'mapped', [954]], - [[120498, 120498], 'mapped', [955]], - [[120499, 120499], 'mapped', [956]], - [[120500, 120500], 'mapped', [957]], - [[120501, 120501], 'mapped', [958]], - [[120502, 120502], 'mapped', [959]], - [[120503, 120503], 'mapped', [960]], - [[120504, 120504], 'mapped', [961]], - [[120505, 120505], 'mapped', [952]], - [[120506, 120506], 'mapped', [963]], - [[120507, 120507], 'mapped', [964]], - [[120508, 120508], 'mapped', [965]], - [[120509, 120509], 'mapped', [966]], - [[120510, 120510], 'mapped', [967]], - [[120511, 120511], 'mapped', [968]], - [[120512, 120512], 'mapped', [969]], - [[120513, 120513], 'mapped', [8711]], - [[120514, 120514], 'mapped', [945]], - [[120515, 120515], 'mapped', [946]], - [[120516, 120516], 'mapped', [947]], - [[120517, 120517], 'mapped', [948]], - [[120518, 120518], 'mapped', [949]], - [[120519, 120519], 'mapped', [950]], - [[120520, 120520], 'mapped', [951]], - [[120521, 120521], 'mapped', [952]], - [[120522, 120522], 'mapped', [953]], - [[120523, 120523], 'mapped', [954]], - [[120524, 120524], 'mapped', [955]], - [[120525, 120525], 'mapped', [956]], - [[120526, 120526], 'mapped', [957]], - [[120527, 120527], 'mapped', [958]], - [[120528, 120528], 'mapped', [959]], - [[120529, 120529], 'mapped', [960]], - [[120530, 120530], 'mapped', [961]], - [[120531, 120532], 'mapped', [963]], - [[120533, 120533], 'mapped', [964]], - [[120534, 120534], 'mapped', [965]], - [[120535, 120535], 'mapped', [966]], - [[120536, 120536], 'mapped', [967]], - [[120537, 120537], 'mapped', [968]], - [[120538, 120538], 'mapped', [969]], - [[120539, 120539], 'mapped', [8706]], - [[120540, 120540], 'mapped', [949]], - [[120541, 120541], 'mapped', [952]], - [[120542, 120542], 'mapped', [954]], - [[120543, 120543], 'mapped', [966]], - [[120544, 120544], 'mapped', [961]], - [[120545, 120545], 'mapped', [960]], - [[120546, 120546], 'mapped', [945]], - [[120547, 120547], 'mapped', [946]], - [[120548, 120548], 'mapped', [947]], - [[120549, 120549], 'mapped', [948]], - [[120550, 120550], 'mapped', [949]], - [[120551, 120551], 'mapped', [950]], - [[120552, 120552], 'mapped', [951]], - [[120553, 120553], 'mapped', [952]], - [[120554, 120554], 'mapped', [953]], - [[120555, 120555], 'mapped', [954]], - [[120556, 120556], 'mapped', [955]], - [[120557, 120557], 'mapped', [956]], - [[120558, 120558], 'mapped', [957]], - [[120559, 120559], 'mapped', [958]], - [[120560, 120560], 'mapped', [959]], - [[120561, 120561], 'mapped', [960]], - [[120562, 120562], 'mapped', [961]], - [[120563, 120563], 'mapped', [952]], - [[120564, 120564], 'mapped', [963]], - [[120565, 120565], 'mapped', [964]], - [[120566, 120566], 'mapped', [965]], - [[120567, 120567], 'mapped', [966]], - [[120568, 120568], 'mapped', [967]], - [[120569, 120569], 'mapped', [968]], - [[120570, 120570], 'mapped', [969]], - [[120571, 120571], 'mapped', [8711]], - [[120572, 120572], 'mapped', [945]], - [[120573, 120573], 'mapped', [946]], - [[120574, 120574], 'mapped', [947]], - [[120575, 120575], 'mapped', [948]], - [[120576, 120576], 'mapped', [949]], - [[120577, 120577], 'mapped', [950]], - [[120578, 120578], 'mapped', [951]], - [[120579, 120579], 'mapped', [952]], - [[120580, 120580], 'mapped', [953]], - [[120581, 120581], 'mapped', [954]], - [[120582, 120582], 'mapped', [955]], - [[120583, 120583], 'mapped', [956]], - [[120584, 120584], 'mapped', [957]], - [[120585, 120585], 'mapped', [958]], - [[120586, 120586], 'mapped', [959]], - [[120587, 120587], 'mapped', [960]], - [[120588, 120588], 'mapped', [961]], - [[120589, 120590], 'mapped', [963]], - [[120591, 120591], 'mapped', [964]], - [[120592, 120592], 'mapped', [965]], - [[120593, 120593], 'mapped', [966]], - [[120594, 120594], 'mapped', [967]], - [[120595, 120595], 'mapped', [968]], - [[120596, 120596], 'mapped', [969]], - [[120597, 120597], 'mapped', [8706]], - [[120598, 120598], 'mapped', [949]], - [[120599, 120599], 'mapped', [952]], - [[120600, 120600], 'mapped', [954]], - [[120601, 120601], 'mapped', [966]], - [[120602, 120602], 'mapped', [961]], - [[120603, 120603], 'mapped', [960]], - [[120604, 120604], 'mapped', [945]], - [[120605, 120605], 'mapped', [946]], - [[120606, 120606], 'mapped', [947]], - [[120607, 120607], 'mapped', [948]], - [[120608, 120608], 'mapped', [949]], - [[120609, 120609], 'mapped', [950]], - [[120610, 120610], 'mapped', [951]], - [[120611, 120611], 'mapped', [952]], - [[120612, 120612], 'mapped', [953]], - [[120613, 120613], 'mapped', [954]], - [[120614, 120614], 'mapped', [955]], - [[120615, 120615], 'mapped', [956]], - [[120616, 120616], 'mapped', [957]], - [[120617, 120617], 'mapped', [958]], - [[120618, 120618], 'mapped', [959]], - [[120619, 120619], 'mapped', [960]], - [[120620, 120620], 'mapped', [961]], - [[120621, 120621], 'mapped', [952]], - [[120622, 120622], 'mapped', [963]], - [[120623, 120623], 'mapped', [964]], - [[120624, 120624], 'mapped', [965]], - [[120625, 120625], 'mapped', [966]], - [[120626, 120626], 'mapped', [967]], - [[120627, 120627], 'mapped', [968]], - [[120628, 120628], 'mapped', [969]], - [[120629, 120629], 'mapped', [8711]], - [[120630, 120630], 'mapped', [945]], - [[120631, 120631], 'mapped', [946]], - [[120632, 120632], 'mapped', [947]], - [[120633, 120633], 'mapped', [948]], - [[120634, 120634], 'mapped', [949]], - [[120635, 120635], 'mapped', [950]], - [[120636, 120636], 'mapped', [951]], - [[120637, 120637], 'mapped', [952]], - [[120638, 120638], 'mapped', [953]], - [[120639, 120639], 'mapped', [954]], - [[120640, 120640], 'mapped', [955]], - [[120641, 120641], 'mapped', [956]], - [[120642, 120642], 'mapped', [957]], - [[120643, 120643], 'mapped', [958]], - [[120644, 120644], 'mapped', [959]], - [[120645, 120645], 'mapped', [960]], - [[120646, 120646], 'mapped', [961]], - [[120647, 120648], 'mapped', [963]], - [[120649, 120649], 'mapped', [964]], - [[120650, 120650], 'mapped', [965]], - [[120651, 120651], 'mapped', [966]], - [[120652, 120652], 'mapped', [967]], - [[120653, 120653], 'mapped', [968]], - [[120654, 120654], 'mapped', [969]], - [[120655, 120655], 'mapped', [8706]], - [[120656, 120656], 'mapped', [949]], - [[120657, 120657], 'mapped', [952]], - [[120658, 120658], 'mapped', [954]], - [[120659, 120659], 'mapped', [966]], - [[120660, 120660], 'mapped', [961]], - [[120661, 120661], 'mapped', [960]], - [[120662, 120662], 'mapped', [945]], - [[120663, 120663], 'mapped', [946]], - [[120664, 120664], 'mapped', [947]], - [[120665, 120665], 'mapped', [948]], - [[120666, 120666], 'mapped', [949]], - [[120667, 120667], 'mapped', [950]], - [[120668, 120668], 'mapped', [951]], - [[120669, 120669], 'mapped', [952]], - [[120670, 120670], 'mapped', [953]], - [[120671, 120671], 'mapped', [954]], - [[120672, 120672], 'mapped', [955]], - [[120673, 120673], 'mapped', [956]], - [[120674, 120674], 'mapped', [957]], - [[120675, 120675], 'mapped', [958]], - [[120676, 120676], 'mapped', [959]], - [[120677, 120677], 'mapped', [960]], - [[120678, 120678], 'mapped', [961]], - [[120679, 120679], 'mapped', [952]], - [[120680, 120680], 'mapped', [963]], - [[120681, 120681], 'mapped', [964]], - [[120682, 120682], 'mapped', [965]], - [[120683, 120683], 'mapped', [966]], - [[120684, 120684], 'mapped', [967]], - [[120685, 120685], 'mapped', [968]], - [[120686, 120686], 'mapped', [969]], - [[120687, 120687], 'mapped', [8711]], - [[120688, 120688], 'mapped', [945]], - [[120689, 120689], 'mapped', [946]], - [[120690, 120690], 'mapped', [947]], - [[120691, 120691], 'mapped', [948]], - [[120692, 120692], 'mapped', [949]], - [[120693, 120693], 'mapped', [950]], - [[120694, 120694], 'mapped', [951]], - [[120695, 120695], 'mapped', [952]], - [[120696, 120696], 'mapped', [953]], - [[120697, 120697], 'mapped', [954]], - [[120698, 120698], 'mapped', [955]], - [[120699, 120699], 'mapped', [956]], - [[120700, 120700], 'mapped', [957]], - [[120701, 120701], 'mapped', [958]], - [[120702, 120702], 'mapped', [959]], - [[120703, 120703], 'mapped', [960]], - [[120704, 120704], 'mapped', [961]], - [[120705, 120706], 'mapped', [963]], - [[120707, 120707], 'mapped', [964]], - [[120708, 120708], 'mapped', [965]], - [[120709, 120709], 'mapped', [966]], - [[120710, 120710], 'mapped', [967]], - [[120711, 120711], 'mapped', [968]], - [[120712, 120712], 'mapped', [969]], - [[120713, 120713], 'mapped', [8706]], - [[120714, 120714], 'mapped', [949]], - [[120715, 120715], 'mapped', [952]], - [[120716, 120716], 'mapped', [954]], - [[120717, 120717], 'mapped', [966]], - [[120718, 120718], 'mapped', [961]], - [[120719, 120719], 'mapped', [960]], - [[120720, 120720], 'mapped', [945]], - [[120721, 120721], 'mapped', [946]], - [[120722, 120722], 'mapped', [947]], - [[120723, 120723], 'mapped', [948]], - [[120724, 120724], 'mapped', [949]], - [[120725, 120725], 'mapped', [950]], - [[120726, 120726], 'mapped', [951]], - [[120727, 120727], 'mapped', [952]], - [[120728, 120728], 'mapped', [953]], - [[120729, 120729], 'mapped', [954]], - [[120730, 120730], 'mapped', [955]], - [[120731, 120731], 'mapped', [956]], - [[120732, 120732], 'mapped', [957]], - [[120733, 120733], 'mapped', [958]], - [[120734, 120734], 'mapped', [959]], - [[120735, 120735], 'mapped', [960]], - [[120736, 120736], 'mapped', [961]], - [[120737, 120737], 'mapped', [952]], - [[120738, 120738], 'mapped', [963]], - [[120739, 120739], 'mapped', [964]], - [[120740, 120740], 'mapped', [965]], - [[120741, 120741], 'mapped', [966]], - [[120742, 120742], 'mapped', [967]], - [[120743, 120743], 'mapped', [968]], - [[120744, 120744], 'mapped', [969]], - [[120745, 120745], 'mapped', [8711]], - [[120746, 120746], 'mapped', [945]], - [[120747, 120747], 'mapped', [946]], - [[120748, 120748], 'mapped', [947]], - [[120749, 120749], 'mapped', [948]], - [[120750, 120750], 'mapped', [949]], - [[120751, 120751], 'mapped', [950]], - [[120752, 120752], 'mapped', [951]], - [[120753, 120753], 'mapped', [952]], - [[120754, 120754], 'mapped', [953]], - [[120755, 120755], 'mapped', [954]], - [[120756, 120756], 'mapped', [955]], - [[120757, 120757], 'mapped', [956]], - [[120758, 120758], 'mapped', [957]], - [[120759, 120759], 'mapped', [958]], - [[120760, 120760], 'mapped', [959]], - [[120761, 120761], 'mapped', [960]], - [[120762, 120762], 'mapped', [961]], - [[120763, 120764], 'mapped', [963]], - [[120765, 120765], 'mapped', [964]], - [[120766, 120766], 'mapped', [965]], - [[120767, 120767], 'mapped', [966]], - [[120768, 120768], 'mapped', [967]], - [[120769, 120769], 'mapped', [968]], - [[120770, 120770], 'mapped', [969]], - [[120771, 120771], 'mapped', [8706]], - [[120772, 120772], 'mapped', [949]], - [[120773, 120773], 'mapped', [952]], - [[120774, 120774], 'mapped', [954]], - [[120775, 120775], 'mapped', [966]], - [[120776, 120776], 'mapped', [961]], - [[120777, 120777], 'mapped', [960]], - [[120778, 120779], 'mapped', [989]], - [[120780, 120781], 'disallowed'], - [[120782, 120782], 'mapped', [48]], - [[120783, 120783], 'mapped', [49]], - [[120784, 120784], 'mapped', [50]], - [[120785, 120785], 'mapped', [51]], - [[120786, 120786], 'mapped', [52]], - [[120787, 120787], 'mapped', [53]], - [[120788, 120788], 'mapped', [54]], - [[120789, 120789], 'mapped', [55]], - [[120790, 120790], 'mapped', [56]], - [[120791, 120791], 'mapped', [57]], - [[120792, 120792], 'mapped', [48]], - [[120793, 120793], 'mapped', [49]], - [[120794, 120794], 'mapped', [50]], - [[120795, 120795], 'mapped', [51]], - [[120796, 120796], 'mapped', [52]], - [[120797, 120797], 'mapped', [53]], - [[120798, 120798], 'mapped', [54]], - [[120799, 120799], 'mapped', [55]], - [[120800, 120800], 'mapped', [56]], - [[120801, 120801], 'mapped', [57]], - [[120802, 120802], 'mapped', [48]], - [[120803, 120803], 'mapped', [49]], - [[120804, 120804], 'mapped', [50]], - [[120805, 120805], 'mapped', [51]], - [[120806, 120806], 'mapped', [52]], - [[120807, 120807], 'mapped', [53]], - [[120808, 120808], 'mapped', [54]], - [[120809, 120809], 'mapped', [55]], - [[120810, 120810], 'mapped', [56]], - [[120811, 120811], 'mapped', [57]], - [[120812, 120812], 'mapped', [48]], - [[120813, 120813], 'mapped', [49]], - [[120814, 120814], 'mapped', [50]], - [[120815, 120815], 'mapped', [51]], - [[120816, 120816], 'mapped', [52]], - [[120817, 120817], 'mapped', [53]], - [[120818, 120818], 'mapped', [54]], - [[120819, 120819], 'mapped', [55]], - [[120820, 120820], 'mapped', [56]], - [[120821, 120821], 'mapped', [57]], - [[120822, 120822], 'mapped', [48]], - [[120823, 120823], 'mapped', [49]], - [[120824, 120824], 'mapped', [50]], - [[120825, 120825], 'mapped', [51]], - [[120826, 120826], 'mapped', [52]], - [[120827, 120827], 'mapped', [53]], - [[120828, 120828], 'mapped', [54]], - [[120829, 120829], 'mapped', [55]], - [[120830, 120830], 'mapped', [56]], - [[120831, 120831], 'mapped', [57]], - [[120832, 121343], 'valid', [], 'NV8'], - [[121344, 121398], 'valid'], - [[121399, 121402], 'valid', [], 'NV8'], - [[121403, 121452], 'valid'], - [[121453, 121460], 'valid', [], 'NV8'], - [[121461, 121461], 'valid'], - [[121462, 121475], 'valid', [], 'NV8'], - [[121476, 121476], 'valid'], - [[121477, 121483], 'valid', [], 'NV8'], - [[121484, 121498], 'disallowed'], - [[121499, 121503], 'valid'], - [[121504, 121504], 'disallowed'], - [[121505, 121519], 'valid'], - [[121520, 124927], 'disallowed'], - [[124928, 125124], 'valid'], - [[125125, 125126], 'disallowed'], - [[125127, 125135], 'valid', [], 'NV8'], - [[125136, 125142], 'valid'], - [[125143, 126463], 'disallowed'], - [[126464, 126464], 'mapped', [1575]], - [[126465, 126465], 'mapped', [1576]], - [[126466, 126466], 'mapped', [1580]], - [[126467, 126467], 'mapped', [1583]], - [[126468, 126468], 'disallowed'], - [[126469, 126469], 'mapped', [1608]], - [[126470, 126470], 'mapped', [1586]], - [[126471, 126471], 'mapped', [1581]], - [[126472, 126472], 'mapped', [1591]], - [[126473, 126473], 'mapped', [1610]], - [[126474, 126474], 'mapped', [1603]], - [[126475, 126475], 'mapped', [1604]], - [[126476, 126476], 'mapped', [1605]], - [[126477, 126477], 'mapped', [1606]], - [[126478, 126478], 'mapped', [1587]], - [[126479, 126479], 'mapped', [1593]], - [[126480, 126480], 'mapped', [1601]], - [[126481, 126481], 'mapped', [1589]], - [[126482, 126482], 'mapped', [1602]], - [[126483, 126483], 'mapped', [1585]], - [[126484, 126484], 'mapped', [1588]], - [[126485, 126485], 'mapped', [1578]], - [[126486, 126486], 'mapped', [1579]], - [[126487, 126487], 'mapped', [1582]], - [[126488, 126488], 'mapped', [1584]], - [[126489, 126489], 'mapped', [1590]], - [[126490, 126490], 'mapped', [1592]], - [[126491, 126491], 'mapped', [1594]], - [[126492, 126492], 'mapped', [1646]], - [[126493, 126493], 'mapped', [1722]], - [[126494, 126494], 'mapped', [1697]], - [[126495, 126495], 'mapped', [1647]], - [[126496, 126496], 'disallowed'], - [[126497, 126497], 'mapped', [1576]], - [[126498, 126498], 'mapped', [1580]], - [[126499, 126499], 'disallowed'], - [[126500, 126500], 'mapped', [1607]], - [[126501, 126502], 'disallowed'], - [[126503, 126503], 'mapped', [1581]], - [[126504, 126504], 'disallowed'], - [[126505, 126505], 'mapped', [1610]], - [[126506, 126506], 'mapped', [1603]], - [[126507, 126507], 'mapped', [1604]], - [[126508, 126508], 'mapped', [1605]], - [[126509, 126509], 'mapped', [1606]], - [[126510, 126510], 'mapped', [1587]], - [[126511, 126511], 'mapped', [1593]], - [[126512, 126512], 'mapped', [1601]], - [[126513, 126513], 'mapped', [1589]], - [[126514, 126514], 'mapped', [1602]], - [[126515, 126515], 'disallowed'], - [[126516, 126516], 'mapped', [1588]], - [[126517, 126517], 'mapped', [1578]], - [[126518, 126518], 'mapped', [1579]], - [[126519, 126519], 'mapped', [1582]], - [[126520, 126520], 'disallowed'], - [[126521, 126521], 'mapped', [1590]], - [[126522, 126522], 'disallowed'], - [[126523, 126523], 'mapped', [1594]], - [[126524, 126529], 'disallowed'], - [[126530, 126530], 'mapped', [1580]], - [[126531, 126534], 'disallowed'], - [[126535, 126535], 'mapped', [1581]], - [[126536, 126536], 'disallowed'], - [[126537, 126537], 'mapped', [1610]], - [[126538, 126538], 'disallowed'], - [[126539, 126539], 'mapped', [1604]], - [[126540, 126540], 'disallowed'], - [[126541, 126541], 'mapped', [1606]], - [[126542, 126542], 'mapped', [1587]], - [[126543, 126543], 'mapped', [1593]], - [[126544, 126544], 'disallowed'], - [[126545, 126545], 'mapped', [1589]], - [[126546, 126546], 'mapped', [1602]], - [[126547, 126547], 'disallowed'], - [[126548, 126548], 'mapped', [1588]], - [[126549, 126550], 'disallowed'], - [[126551, 126551], 'mapped', [1582]], - [[126552, 126552], 'disallowed'], - [[126553, 126553], 'mapped', [1590]], - [[126554, 126554], 'disallowed'], - [[126555, 126555], 'mapped', [1594]], - [[126556, 126556], 'disallowed'], - [[126557, 126557], 'mapped', [1722]], - [[126558, 126558], 'disallowed'], - [[126559, 126559], 'mapped', [1647]], - [[126560, 126560], 'disallowed'], - [[126561, 126561], 'mapped', [1576]], - [[126562, 126562], 'mapped', [1580]], - [[126563, 126563], 'disallowed'], - [[126564, 126564], 'mapped', [1607]], - [[126565, 126566], 'disallowed'], - [[126567, 126567], 'mapped', [1581]], - [[126568, 126568], 'mapped', [1591]], - [[126569, 126569], 'mapped', [1610]], - [[126570, 126570], 'mapped', [1603]], - [[126571, 126571], 'disallowed'], - [[126572, 126572], 'mapped', [1605]], - [[126573, 126573], 'mapped', [1606]], - [[126574, 126574], 'mapped', [1587]], - [[126575, 126575], 'mapped', [1593]], - [[126576, 126576], 'mapped', [1601]], - [[126577, 126577], 'mapped', [1589]], - [[126578, 126578], 'mapped', [1602]], - [[126579, 126579], 'disallowed'], - [[126580, 126580], 'mapped', [1588]], - [[126581, 126581], 'mapped', [1578]], - [[126582, 126582], 'mapped', [1579]], - [[126583, 126583], 'mapped', [1582]], - [[126584, 126584], 'disallowed'], - [[126585, 126585], 'mapped', [1590]], - [[126586, 126586], 'mapped', [1592]], - [[126587, 126587], 'mapped', [1594]], - [[126588, 126588], 'mapped', [1646]], - [[126589, 126589], 'disallowed'], - [[126590, 126590], 'mapped', [1697]], - [[126591, 126591], 'disallowed'], - [[126592, 126592], 'mapped', [1575]], - [[126593, 126593], 'mapped', [1576]], - [[126594, 126594], 'mapped', [1580]], - [[126595, 126595], 'mapped', [1583]], - [[126596, 126596], 'mapped', [1607]], - [[126597, 126597], 'mapped', [1608]], - [[126598, 126598], 'mapped', [1586]], - [[126599, 126599], 'mapped', [1581]], - [[126600, 126600], 'mapped', [1591]], - [[126601, 126601], 'mapped', [1610]], - [[126602, 126602], 'disallowed'], - [[126603, 126603], 'mapped', [1604]], - [[126604, 126604], 'mapped', [1605]], - [[126605, 126605], 'mapped', [1606]], - [[126606, 126606], 'mapped', [1587]], - [[126607, 126607], 'mapped', [1593]], - [[126608, 126608], 'mapped', [1601]], - [[126609, 126609], 'mapped', [1589]], - [[126610, 126610], 'mapped', [1602]], - [[126611, 126611], 'mapped', [1585]], - [[126612, 126612], 'mapped', [1588]], - [[126613, 126613], 'mapped', [1578]], - [[126614, 126614], 'mapped', [1579]], - [[126615, 126615], 'mapped', [1582]], - [[126616, 126616], 'mapped', [1584]], - [[126617, 126617], 'mapped', [1590]], - [[126618, 126618], 'mapped', [1592]], - [[126619, 126619], 'mapped', [1594]], - [[126620, 126624], 'disallowed'], - [[126625, 126625], 'mapped', [1576]], - [[126626, 126626], 'mapped', [1580]], - [[126627, 126627], 'mapped', [1583]], - [[126628, 126628], 'disallowed'], - [[126629, 126629], 'mapped', [1608]], - [[126630, 126630], 'mapped', [1586]], - [[126631, 126631], 'mapped', [1581]], - [[126632, 126632], 'mapped', [1591]], - [[126633, 126633], 'mapped', [1610]], - [[126634, 126634], 'disallowed'], - [[126635, 126635], 'mapped', [1604]], - [[126636, 126636], 'mapped', [1605]], - [[126637, 126637], 'mapped', [1606]], - [[126638, 126638], 'mapped', [1587]], - [[126639, 126639], 'mapped', [1593]], - [[126640, 126640], 'mapped', [1601]], - [[126641, 126641], 'mapped', [1589]], - [[126642, 126642], 'mapped', [1602]], - [[126643, 126643], 'mapped', [1585]], - [[126644, 126644], 'mapped', [1588]], - [[126645, 126645], 'mapped', [1578]], - [[126646, 126646], 'mapped', [1579]], - [[126647, 126647], 'mapped', [1582]], - [[126648, 126648], 'mapped', [1584]], - [[126649, 126649], 'mapped', [1590]], - [[126650, 126650], 'mapped', [1592]], - [[126651, 126651], 'mapped', [1594]], - [[126652, 126703], 'disallowed'], - [[126704, 126705], 'valid', [], 'NV8'], - [[126706, 126975], 'disallowed'], - [[126976, 127019], 'valid', [], 'NV8'], - [[127020, 127023], 'disallowed'], - [[127024, 127123], 'valid', [], 'NV8'], - [[127124, 127135], 'disallowed'], - [[127136, 127150], 'valid', [], 'NV8'], - [[127151, 127152], 'disallowed'], - [[127153, 127166], 'valid', [], 'NV8'], - [[127167, 127167], 'valid', [], 'NV8'], - [[127168, 127168], 'disallowed'], - [[127169, 127183], 'valid', [], 'NV8'], - [[127184, 127184], 'disallowed'], - [[127185, 127199], 'valid', [], 'NV8'], - [[127200, 127221], 'valid', [], 'NV8'], - [[127222, 127231], 'disallowed'], - [[127232, 127232], 'disallowed'], - [[127233, 127233], 'disallowed_STD3_mapped', [48, 44]], - [[127234, 127234], 'disallowed_STD3_mapped', [49, 44]], - [[127235, 127235], 'disallowed_STD3_mapped', [50, 44]], - [[127236, 127236], 'disallowed_STD3_mapped', [51, 44]], - [[127237, 127237], 'disallowed_STD3_mapped', [52, 44]], - [[127238, 127238], 'disallowed_STD3_mapped', [53, 44]], - [[127239, 127239], 'disallowed_STD3_mapped', [54, 44]], - [[127240, 127240], 'disallowed_STD3_mapped', [55, 44]], - [[127241, 127241], 'disallowed_STD3_mapped', [56, 44]], - [[127242, 127242], 'disallowed_STD3_mapped', [57, 44]], - [[127243, 127244], 'valid', [], 'NV8'], - [[127245, 127247], 'disallowed'], - [[127248, 127248], 'disallowed_STD3_mapped', [40, 97, 41]], - [[127249, 127249], 'disallowed_STD3_mapped', [40, 98, 41]], - [[127250, 127250], 'disallowed_STD3_mapped', [40, 99, 41]], - [[127251, 127251], 'disallowed_STD3_mapped', [40, 100, 41]], - [[127252, 127252], 'disallowed_STD3_mapped', [40, 101, 41]], - [[127253, 127253], 'disallowed_STD3_mapped', [40, 102, 41]], - [[127254, 127254], 'disallowed_STD3_mapped', [40, 103, 41]], - [[127255, 127255], 'disallowed_STD3_mapped', [40, 104, 41]], - [[127256, 127256], 'disallowed_STD3_mapped', [40, 105, 41]], - [[127257, 127257], 'disallowed_STD3_mapped', [40, 106, 41]], - [[127258, 127258], 'disallowed_STD3_mapped', [40, 107, 41]], - [[127259, 127259], 'disallowed_STD3_mapped', [40, 108, 41]], - [[127260, 127260], 'disallowed_STD3_mapped', [40, 109, 41]], - [[127261, 127261], 'disallowed_STD3_mapped', [40, 110, 41]], - [[127262, 127262], 'disallowed_STD3_mapped', [40, 111, 41]], - [[127263, 127263], 'disallowed_STD3_mapped', [40, 112, 41]], - [[127264, 127264], 'disallowed_STD3_mapped', [40, 113, 41]], - [[127265, 127265], 'disallowed_STD3_mapped', [40, 114, 41]], - [[127266, 127266], 'disallowed_STD3_mapped', [40, 115, 41]], - [[127267, 127267], 'disallowed_STD3_mapped', [40, 116, 41]], - [[127268, 127268], 'disallowed_STD3_mapped', [40, 117, 41]], - [[127269, 127269], 'disallowed_STD3_mapped', [40, 118, 41]], - [[127270, 127270], 'disallowed_STD3_mapped', [40, 119, 41]], - [[127271, 127271], 'disallowed_STD3_mapped', [40, 120, 41]], - [[127272, 127272], 'disallowed_STD3_mapped', [40, 121, 41]], - [[127273, 127273], 'disallowed_STD3_mapped', [40, 122, 41]], - [[127274, 127274], 'mapped', [12308, 115, 12309]], - [[127275, 127275], 'mapped', [99]], - [[127276, 127276], 'mapped', [114]], - [[127277, 127277], 'mapped', [99, 100]], - [[127278, 127278], 'mapped', [119, 122]], - [[127279, 127279], 'disallowed'], - [[127280, 127280], 'mapped', [97]], - [[127281, 127281], 'mapped', [98]], - [[127282, 127282], 'mapped', [99]], - [[127283, 127283], 'mapped', [100]], - [[127284, 127284], 'mapped', [101]], - [[127285, 127285], 'mapped', [102]], - [[127286, 127286], 'mapped', [103]], - [[127287, 127287], 'mapped', [104]], - [[127288, 127288], 'mapped', [105]], - [[127289, 127289], 'mapped', [106]], - [[127290, 127290], 'mapped', [107]], - [[127291, 127291], 'mapped', [108]], - [[127292, 127292], 'mapped', [109]], - [[127293, 127293], 'mapped', [110]], - [[127294, 127294], 'mapped', [111]], - [[127295, 127295], 'mapped', [112]], - [[127296, 127296], 'mapped', [113]], - [[127297, 127297], 'mapped', [114]], - [[127298, 127298], 'mapped', [115]], - [[127299, 127299], 'mapped', [116]], - [[127300, 127300], 'mapped', [117]], - [[127301, 127301], 'mapped', [118]], - [[127302, 127302], 'mapped', [119]], - [[127303, 127303], 'mapped', [120]], - [[127304, 127304], 'mapped', [121]], - [[127305, 127305], 'mapped', [122]], - [[127306, 127306], 'mapped', [104, 118]], - [[127307, 127307], 'mapped', [109, 118]], - [[127308, 127308], 'mapped', [115, 100]], - [[127309, 127309], 'mapped', [115, 115]], - [[127310, 127310], 'mapped', [112, 112, 118]], - [[127311, 127311], 'mapped', [119, 99]], - [[127312, 127318], 'valid', [], 'NV8'], - [[127319, 127319], 'valid', [], 'NV8'], - [[127320, 127326], 'valid', [], 'NV8'], - [[127327, 127327], 'valid', [], 'NV8'], - [[127328, 127337], 'valid', [], 'NV8'], - [[127338, 127338], 'mapped', [109, 99]], - [[127339, 127339], 'mapped', [109, 100]], - [[127340, 127343], 'disallowed'], - [[127344, 127352], 'valid', [], 'NV8'], - [[127353, 127353], 'valid', [], 'NV8'], - [[127354, 127354], 'valid', [], 'NV8'], - [[127355, 127356], 'valid', [], 'NV8'], - [[127357, 127358], 'valid', [], 'NV8'], - [[127359, 127359], 'valid', [], 'NV8'], - [[127360, 127369], 'valid', [], 'NV8'], - [[127370, 127373], 'valid', [], 'NV8'], - [[127374, 127375], 'valid', [], 'NV8'], - [[127376, 127376], 'mapped', [100, 106]], - [[127377, 127386], 'valid', [], 'NV8'], - [[127387, 127461], 'disallowed'], - [[127462, 127487], 'valid', [], 'NV8'], - [[127488, 127488], 'mapped', [12411, 12363]], - [[127489, 127489], 'mapped', [12467, 12467]], - [[127490, 127490], 'mapped', [12469]], - [[127491, 127503], 'disallowed'], - [[127504, 127504], 'mapped', [25163]], - [[127505, 127505], 'mapped', [23383]], - [[127506, 127506], 'mapped', [21452]], - [[127507, 127507], 'mapped', [12487]], - [[127508, 127508], 'mapped', [20108]], - [[127509, 127509], 'mapped', [22810]], - [[127510, 127510], 'mapped', [35299]], - [[127511, 127511], 'mapped', [22825]], - [[127512, 127512], 'mapped', [20132]], - [[127513, 127513], 'mapped', [26144]], - [[127514, 127514], 'mapped', [28961]], - [[127515, 127515], 'mapped', [26009]], - [[127516, 127516], 'mapped', [21069]], - [[127517, 127517], 'mapped', [24460]], - [[127518, 127518], 'mapped', [20877]], - [[127519, 127519], 'mapped', [26032]], - [[127520, 127520], 'mapped', [21021]], - [[127521, 127521], 'mapped', [32066]], - [[127522, 127522], 'mapped', [29983]], - [[127523, 127523], 'mapped', [36009]], - [[127524, 127524], 'mapped', [22768]], - [[127525, 127525], 'mapped', [21561]], - [[127526, 127526], 'mapped', [28436]], - [[127527, 127527], 'mapped', [25237]], - [[127528, 127528], 'mapped', [25429]], - [[127529, 127529], 'mapped', [19968]], - [[127530, 127530], 'mapped', [19977]], - [[127531, 127531], 'mapped', [36938]], - [[127532, 127532], 'mapped', [24038]], - [[127533, 127533], 'mapped', [20013]], - [[127534, 127534], 'mapped', [21491]], - [[127535, 127535], 'mapped', [25351]], - [[127536, 127536], 'mapped', [36208]], - [[127537, 127537], 'mapped', [25171]], - [[127538, 127538], 'mapped', [31105]], - [[127539, 127539], 'mapped', [31354]], - [[127540, 127540], 'mapped', [21512]], - [[127541, 127541], 'mapped', [28288]], - [[127542, 127542], 'mapped', [26377]], - [[127543, 127543], 'mapped', [26376]], - [[127544, 127544], 'mapped', [30003]], - [[127545, 127545], 'mapped', [21106]], - [[127546, 127546], 'mapped', [21942]], - [[127547, 127551], 'disallowed'], - [[127552, 127552], 'mapped', [12308, 26412, 12309]], - [[127553, 127553], 'mapped', [12308, 19977, 12309]], - [[127554, 127554], 'mapped', [12308, 20108, 12309]], - [[127555, 127555], 'mapped', [12308, 23433, 12309]], - [[127556, 127556], 'mapped', [12308, 28857, 12309]], - [[127557, 127557], 'mapped', [12308, 25171, 12309]], - [[127558, 127558], 'mapped', [12308, 30423, 12309]], - [[127559, 127559], 'mapped', [12308, 21213, 12309]], - [[127560, 127560], 'mapped', [12308, 25943, 12309]], - [[127561, 127567], 'disallowed'], - [[127568, 127568], 'mapped', [24471]], - [[127569, 127569], 'mapped', [21487]], - [[127570, 127743], 'disallowed'], - [[127744, 127776], 'valid', [], 'NV8'], - [[127777, 127788], 'valid', [], 'NV8'], - [[127789, 127791], 'valid', [], 'NV8'], - [[127792, 127797], 'valid', [], 'NV8'], - [[127798, 127798], 'valid', [], 'NV8'], - [[127799, 127868], 'valid', [], 'NV8'], - [[127869, 127869], 'valid', [], 'NV8'], - [[127870, 127871], 'valid', [], 'NV8'], - [[127872, 127891], 'valid', [], 'NV8'], - [[127892, 127903], 'valid', [], 'NV8'], - [[127904, 127940], 'valid', [], 'NV8'], - [[127941, 127941], 'valid', [], 'NV8'], - [[127942, 127946], 'valid', [], 'NV8'], - [[127947, 127950], 'valid', [], 'NV8'], - [[127951, 127955], 'valid', [], 'NV8'], - [[127956, 127967], 'valid', [], 'NV8'], - [[127968, 127984], 'valid', [], 'NV8'], - [[127985, 127991], 'valid', [], 'NV8'], - [[127992, 127999], 'valid', [], 'NV8'], - [[128e3, 128062], 'valid', [], 'NV8'], - [[128063, 128063], 'valid', [], 'NV8'], - [[128064, 128064], 'valid', [], 'NV8'], - [[128065, 128065], 'valid', [], 'NV8'], - [[128066, 128247], 'valid', [], 'NV8'], - [[128248, 128248], 'valid', [], 'NV8'], - [[128249, 128252], 'valid', [], 'NV8'], - [[128253, 128254], 'valid', [], 'NV8'], - [[128255, 128255], 'valid', [], 'NV8'], - [[128256, 128317], 'valid', [], 'NV8'], - [[128318, 128319], 'valid', [], 'NV8'], - [[128320, 128323], 'valid', [], 'NV8'], - [[128324, 128330], 'valid', [], 'NV8'], - [[128331, 128335], 'valid', [], 'NV8'], - [[128336, 128359], 'valid', [], 'NV8'], - [[128360, 128377], 'valid', [], 'NV8'], - [[128378, 128378], 'disallowed'], - [[128379, 128419], 'valid', [], 'NV8'], - [[128420, 128420], 'disallowed'], - [[128421, 128506], 'valid', [], 'NV8'], - [[128507, 128511], 'valid', [], 'NV8'], - [[128512, 128512], 'valid', [], 'NV8'], - [[128513, 128528], 'valid', [], 'NV8'], - [[128529, 128529], 'valid', [], 'NV8'], - [[128530, 128532], 'valid', [], 'NV8'], - [[128533, 128533], 'valid', [], 'NV8'], - [[128534, 128534], 'valid', [], 'NV8'], - [[128535, 128535], 'valid', [], 'NV8'], - [[128536, 128536], 'valid', [], 'NV8'], - [[128537, 128537], 'valid', [], 'NV8'], - [[128538, 128538], 'valid', [], 'NV8'], - [[128539, 128539], 'valid', [], 'NV8'], - [[128540, 128542], 'valid', [], 'NV8'], - [[128543, 128543], 'valid', [], 'NV8'], - [[128544, 128549], 'valid', [], 'NV8'], - [[128550, 128551], 'valid', [], 'NV8'], - [[128552, 128555], 'valid', [], 'NV8'], - [[128556, 128556], 'valid', [], 'NV8'], - [[128557, 128557], 'valid', [], 'NV8'], - [[128558, 128559], 'valid', [], 'NV8'], - [[128560, 128563], 'valid', [], 'NV8'], - [[128564, 128564], 'valid', [], 'NV8'], - [[128565, 128576], 'valid', [], 'NV8'], - [[128577, 128578], 'valid', [], 'NV8'], - [[128579, 128580], 'valid', [], 'NV8'], - [[128581, 128591], 'valid', [], 'NV8'], - [[128592, 128639], 'valid', [], 'NV8'], - [[128640, 128709], 'valid', [], 'NV8'], - [[128710, 128719], 'valid', [], 'NV8'], - [[128720, 128720], 'valid', [], 'NV8'], - [[128721, 128735], 'disallowed'], - [[128736, 128748], 'valid', [], 'NV8'], - [[128749, 128751], 'disallowed'], - [[128752, 128755], 'valid', [], 'NV8'], - [[128756, 128767], 'disallowed'], - [[128768, 128883], 'valid', [], 'NV8'], - [[128884, 128895], 'disallowed'], - [[128896, 128980], 'valid', [], 'NV8'], - [[128981, 129023], 'disallowed'], - [[129024, 129035], 'valid', [], 'NV8'], - [[129036, 129039], 'disallowed'], - [[129040, 129095], 'valid', [], 'NV8'], - [[129096, 129103], 'disallowed'], - [[129104, 129113], 'valid', [], 'NV8'], - [[129114, 129119], 'disallowed'], - [[129120, 129159], 'valid', [], 'NV8'], - [[129160, 129167], 'disallowed'], - [[129168, 129197], 'valid', [], 'NV8'], - [[129198, 129295], 'disallowed'], - [[129296, 129304], 'valid', [], 'NV8'], - [[129305, 129407], 'disallowed'], - [[129408, 129412], 'valid', [], 'NV8'], - [[129413, 129471], 'disallowed'], - [[129472, 129472], 'valid', [], 'NV8'], - [[129473, 131069], 'disallowed'], - [[131070, 131071], 'disallowed'], - [[131072, 173782], 'valid'], - [[173783, 173823], 'disallowed'], - [[173824, 177972], 'valid'], - [[177973, 177983], 'disallowed'], - [[177984, 178205], 'valid'], - [[178206, 178207], 'disallowed'], - [[178208, 183969], 'valid'], - [[183970, 194559], 'disallowed'], - [[194560, 194560], 'mapped', [20029]], - [[194561, 194561], 'mapped', [20024]], - [[194562, 194562], 'mapped', [20033]], - [[194563, 194563], 'mapped', [131362]], - [[194564, 194564], 'mapped', [20320]], - [[194565, 194565], 'mapped', [20398]], - [[194566, 194566], 'mapped', [20411]], - [[194567, 194567], 'mapped', [20482]], - [[194568, 194568], 'mapped', [20602]], - [[194569, 194569], 'mapped', [20633]], - [[194570, 194570], 'mapped', [20711]], - [[194571, 194571], 'mapped', [20687]], - [[194572, 194572], 'mapped', [13470]], - [[194573, 194573], 'mapped', [132666]], - [[194574, 194574], 'mapped', [20813]], - [[194575, 194575], 'mapped', [20820]], - [[194576, 194576], 'mapped', [20836]], - [[194577, 194577], 'mapped', [20855]], - [[194578, 194578], 'mapped', [132380]], - [[194579, 194579], 'mapped', [13497]], - [[194580, 194580], 'mapped', [20839]], - [[194581, 194581], 'mapped', [20877]], - [[194582, 194582], 'mapped', [132427]], - [[194583, 194583], 'mapped', [20887]], - [[194584, 194584], 'mapped', [20900]], - [[194585, 194585], 'mapped', [20172]], - [[194586, 194586], 'mapped', [20908]], - [[194587, 194587], 'mapped', [20917]], - [[194588, 194588], 'mapped', [168415]], - [[194589, 194589], 'mapped', [20981]], - [[194590, 194590], 'mapped', [20995]], - [[194591, 194591], 'mapped', [13535]], - [[194592, 194592], 'mapped', [21051]], - [[194593, 194593], 'mapped', [21062]], - [[194594, 194594], 'mapped', [21106]], - [[194595, 194595], 'mapped', [21111]], - [[194596, 194596], 'mapped', [13589]], - [[194597, 194597], 'mapped', [21191]], - [[194598, 194598], 'mapped', [21193]], - [[194599, 194599], 'mapped', [21220]], - [[194600, 194600], 'mapped', [21242]], - [[194601, 194601], 'mapped', [21253]], - [[194602, 194602], 'mapped', [21254]], - [[194603, 194603], 'mapped', [21271]], - [[194604, 194604], 'mapped', [21321]], - [[194605, 194605], 'mapped', [21329]], - [[194606, 194606], 'mapped', [21338]], - [[194607, 194607], 'mapped', [21363]], - [[194608, 194608], 'mapped', [21373]], - [[194609, 194611], 'mapped', [21375]], - [[194612, 194612], 'mapped', [133676]], - [[194613, 194613], 'mapped', [28784]], - [[194614, 194614], 'mapped', [21450]], - [[194615, 194615], 'mapped', [21471]], - [[194616, 194616], 'mapped', [133987]], - [[194617, 194617], 'mapped', [21483]], - [[194618, 194618], 'mapped', [21489]], - [[194619, 194619], 'mapped', [21510]], - [[194620, 194620], 'mapped', [21662]], - [[194621, 194621], 'mapped', [21560]], - [[194622, 194622], 'mapped', [21576]], - [[194623, 194623], 'mapped', [21608]], - [[194624, 194624], 'mapped', [21666]], - [[194625, 194625], 'mapped', [21750]], - [[194626, 194626], 'mapped', [21776]], - [[194627, 194627], 'mapped', [21843]], - [[194628, 194628], 'mapped', [21859]], - [[194629, 194630], 'mapped', [21892]], - [[194631, 194631], 'mapped', [21913]], - [[194632, 194632], 'mapped', [21931]], - [[194633, 194633], 'mapped', [21939]], - [[194634, 194634], 'mapped', [21954]], - [[194635, 194635], 'mapped', [22294]], - [[194636, 194636], 'mapped', [22022]], - [[194637, 194637], 'mapped', [22295]], - [[194638, 194638], 'mapped', [22097]], - [[194639, 194639], 'mapped', [22132]], - [[194640, 194640], 'mapped', [20999]], - [[194641, 194641], 'mapped', [22766]], - [[194642, 194642], 'mapped', [22478]], - [[194643, 194643], 'mapped', [22516]], - [[194644, 194644], 'mapped', [22541]], - [[194645, 194645], 'mapped', [22411]], - [[194646, 194646], 'mapped', [22578]], - [[194647, 194647], 'mapped', [22577]], - [[194648, 194648], 'mapped', [22700]], - [[194649, 194649], 'mapped', [136420]], - [[194650, 194650], 'mapped', [22770]], - [[194651, 194651], 'mapped', [22775]], - [[194652, 194652], 'mapped', [22790]], - [[194653, 194653], 'mapped', [22810]], - [[194654, 194654], 'mapped', [22818]], - [[194655, 194655], 'mapped', [22882]], - [[194656, 194656], 'mapped', [136872]], - [[194657, 194657], 'mapped', [136938]], - [[194658, 194658], 'mapped', [23020]], - [[194659, 194659], 'mapped', [23067]], - [[194660, 194660], 'mapped', [23079]], - [[194661, 194661], 'mapped', [23e3]], - [[194662, 194662], 'mapped', [23142]], - [[194663, 194663], 'mapped', [14062]], - [[194664, 194664], 'disallowed'], - [[194665, 194665], 'mapped', [23304]], - [[194666, 194667], 'mapped', [23358]], - [[194668, 194668], 'mapped', [137672]], - [[194669, 194669], 'mapped', [23491]], - [[194670, 194670], 'mapped', [23512]], - [[194671, 194671], 'mapped', [23527]], - [[194672, 194672], 'mapped', [23539]], - [[194673, 194673], 'mapped', [138008]], - [[194674, 194674], 'mapped', [23551]], - [[194675, 194675], 'mapped', [23558]], - [[194676, 194676], 'disallowed'], - [[194677, 194677], 'mapped', [23586]], - [[194678, 194678], 'mapped', [14209]], - [[194679, 194679], 'mapped', [23648]], - [[194680, 194680], 'mapped', [23662]], - [[194681, 194681], 'mapped', [23744]], - [[194682, 194682], 'mapped', [23693]], - [[194683, 194683], 'mapped', [138724]], - [[194684, 194684], 'mapped', [23875]], - [[194685, 194685], 'mapped', [138726]], - [[194686, 194686], 'mapped', [23918]], - [[194687, 194687], 'mapped', [23915]], - [[194688, 194688], 'mapped', [23932]], - [[194689, 194689], 'mapped', [24033]], - [[194690, 194690], 'mapped', [24034]], - [[194691, 194691], 'mapped', [14383]], - [[194692, 194692], 'mapped', [24061]], - [[194693, 194693], 'mapped', [24104]], - [[194694, 194694], 'mapped', [24125]], - [[194695, 194695], 'mapped', [24169]], - [[194696, 194696], 'mapped', [14434]], - [[194697, 194697], 'mapped', [139651]], - [[194698, 194698], 'mapped', [14460]], - [[194699, 194699], 'mapped', [24240]], - [[194700, 194700], 'mapped', [24243]], - [[194701, 194701], 'mapped', [24246]], - [[194702, 194702], 'mapped', [24266]], - [[194703, 194703], 'mapped', [172946]], - [[194704, 194704], 'mapped', [24318]], - [[194705, 194706], 'mapped', [140081]], - [[194707, 194707], 'mapped', [33281]], - [[194708, 194709], 'mapped', [24354]], - [[194710, 194710], 'mapped', [14535]], - [[194711, 194711], 'mapped', [144056]], - [[194712, 194712], 'mapped', [156122]], - [[194713, 194713], 'mapped', [24418]], - [[194714, 194714], 'mapped', [24427]], - [[194715, 194715], 'mapped', [14563]], - [[194716, 194716], 'mapped', [24474]], - [[194717, 194717], 'mapped', [24525]], - [[194718, 194718], 'mapped', [24535]], - [[194719, 194719], 'mapped', [24569]], - [[194720, 194720], 'mapped', [24705]], - [[194721, 194721], 'mapped', [14650]], - [[194722, 194722], 'mapped', [14620]], - [[194723, 194723], 'mapped', [24724]], - [[194724, 194724], 'mapped', [141012]], - [[194725, 194725], 'mapped', [24775]], - [[194726, 194726], 'mapped', [24904]], - [[194727, 194727], 'mapped', [24908]], - [[194728, 194728], 'mapped', [24910]], - [[194729, 194729], 'mapped', [24908]], - [[194730, 194730], 'mapped', [24954]], - [[194731, 194731], 'mapped', [24974]], - [[194732, 194732], 'mapped', [25010]], - [[194733, 194733], 'mapped', [24996]], - [[194734, 194734], 'mapped', [25007]], - [[194735, 194735], 'mapped', [25054]], - [[194736, 194736], 'mapped', [25074]], - [[194737, 194737], 'mapped', [25078]], - [[194738, 194738], 'mapped', [25104]], - [[194739, 194739], 'mapped', [25115]], - [[194740, 194740], 'mapped', [25181]], - [[194741, 194741], 'mapped', [25265]], - [[194742, 194742], 'mapped', [25300]], - [[194743, 194743], 'mapped', [25424]], - [[194744, 194744], 'mapped', [142092]], - [[194745, 194745], 'mapped', [25405]], - [[194746, 194746], 'mapped', [25340]], - [[194747, 194747], 'mapped', [25448]], - [[194748, 194748], 'mapped', [25475]], - [[194749, 194749], 'mapped', [25572]], - [[194750, 194750], 'mapped', [142321]], - [[194751, 194751], 'mapped', [25634]], - [[194752, 194752], 'mapped', [25541]], - [[194753, 194753], 'mapped', [25513]], - [[194754, 194754], 'mapped', [14894]], - [[194755, 194755], 'mapped', [25705]], - [[194756, 194756], 'mapped', [25726]], - [[194757, 194757], 'mapped', [25757]], - [[194758, 194758], 'mapped', [25719]], - [[194759, 194759], 'mapped', [14956]], - [[194760, 194760], 'mapped', [25935]], - [[194761, 194761], 'mapped', [25964]], - [[194762, 194762], 'mapped', [143370]], - [[194763, 194763], 'mapped', [26083]], - [[194764, 194764], 'mapped', [26360]], - [[194765, 194765], 'mapped', [26185]], - [[194766, 194766], 'mapped', [15129]], - [[194767, 194767], 'mapped', [26257]], - [[194768, 194768], 'mapped', [15112]], - [[194769, 194769], 'mapped', [15076]], - [[194770, 194770], 'mapped', [20882]], - [[194771, 194771], 'mapped', [20885]], - [[194772, 194772], 'mapped', [26368]], - [[194773, 194773], 'mapped', [26268]], - [[194774, 194774], 'mapped', [32941]], - [[194775, 194775], 'mapped', [17369]], - [[194776, 194776], 'mapped', [26391]], - [[194777, 194777], 'mapped', [26395]], - [[194778, 194778], 'mapped', [26401]], - [[194779, 194779], 'mapped', [26462]], - [[194780, 194780], 'mapped', [26451]], - [[194781, 194781], 'mapped', [144323]], - [[194782, 194782], 'mapped', [15177]], - [[194783, 194783], 'mapped', [26618]], - [[194784, 194784], 'mapped', [26501]], - [[194785, 194785], 'mapped', [26706]], - [[194786, 194786], 'mapped', [26757]], - [[194787, 194787], 'mapped', [144493]], - [[194788, 194788], 'mapped', [26766]], - [[194789, 194789], 'mapped', [26655]], - [[194790, 194790], 'mapped', [26900]], - [[194791, 194791], 'mapped', [15261]], - [[194792, 194792], 'mapped', [26946]], - [[194793, 194793], 'mapped', [27043]], - [[194794, 194794], 'mapped', [27114]], - [[194795, 194795], 'mapped', [27304]], - [[194796, 194796], 'mapped', [145059]], - [[194797, 194797], 'mapped', [27355]], - [[194798, 194798], 'mapped', [15384]], - [[194799, 194799], 'mapped', [27425]], - [[194800, 194800], 'mapped', [145575]], - [[194801, 194801], 'mapped', [27476]], - [[194802, 194802], 'mapped', [15438]], - [[194803, 194803], 'mapped', [27506]], - [[194804, 194804], 'mapped', [27551]], - [[194805, 194805], 'mapped', [27578]], - [[194806, 194806], 'mapped', [27579]], - [[194807, 194807], 'mapped', [146061]], - [[194808, 194808], 'mapped', [138507]], - [[194809, 194809], 'mapped', [146170]], - [[194810, 194810], 'mapped', [27726]], - [[194811, 194811], 'mapped', [146620]], - [[194812, 194812], 'mapped', [27839]], - [[194813, 194813], 'mapped', [27853]], - [[194814, 194814], 'mapped', [27751]], - [[194815, 194815], 'mapped', [27926]], - [[194816, 194816], 'mapped', [27966]], - [[194817, 194817], 'mapped', [28023]], - [[194818, 194818], 'mapped', [27969]], - [[194819, 194819], 'mapped', [28009]], - [[194820, 194820], 'mapped', [28024]], - [[194821, 194821], 'mapped', [28037]], - [[194822, 194822], 'mapped', [146718]], - [[194823, 194823], 'mapped', [27956]], - [[194824, 194824], 'mapped', [28207]], - [[194825, 194825], 'mapped', [28270]], - [[194826, 194826], 'mapped', [15667]], - [[194827, 194827], 'mapped', [28363]], - [[194828, 194828], 'mapped', [28359]], - [[194829, 194829], 'mapped', [147153]], - [[194830, 194830], 'mapped', [28153]], - [[194831, 194831], 'mapped', [28526]], - [[194832, 194832], 'mapped', [147294]], - [[194833, 194833], 'mapped', [147342]], - [[194834, 194834], 'mapped', [28614]], - [[194835, 194835], 'mapped', [28729]], - [[194836, 194836], 'mapped', [28702]], - [[194837, 194837], 'mapped', [28699]], - [[194838, 194838], 'mapped', [15766]], - [[194839, 194839], 'mapped', [28746]], - [[194840, 194840], 'mapped', [28797]], - [[194841, 194841], 'mapped', [28791]], - [[194842, 194842], 'mapped', [28845]], - [[194843, 194843], 'mapped', [132389]], - [[194844, 194844], 'mapped', [28997]], - [[194845, 194845], 'mapped', [148067]], - [[194846, 194846], 'mapped', [29084]], - [[194847, 194847], 'disallowed'], - [[194848, 194848], 'mapped', [29224]], - [[194849, 194849], 'mapped', [29237]], - [[194850, 194850], 'mapped', [29264]], - [[194851, 194851], 'mapped', [149e3]], - [[194852, 194852], 'mapped', [29312]], - [[194853, 194853], 'mapped', [29333]], - [[194854, 194854], 'mapped', [149301]], - [[194855, 194855], 'mapped', [149524]], - [[194856, 194856], 'mapped', [29562]], - [[194857, 194857], 'mapped', [29579]], - [[194858, 194858], 'mapped', [16044]], - [[194859, 194859], 'mapped', [29605]], - [[194860, 194861], 'mapped', [16056]], - [[194862, 194862], 'mapped', [29767]], - [[194863, 194863], 'mapped', [29788]], - [[194864, 194864], 'mapped', [29809]], - [[194865, 194865], 'mapped', [29829]], - [[194866, 194866], 'mapped', [29898]], - [[194867, 194867], 'mapped', [16155]], - [[194868, 194868], 'mapped', [29988]], - [[194869, 194869], 'mapped', [150582]], - [[194870, 194870], 'mapped', [30014]], - [[194871, 194871], 'mapped', [150674]], - [[194872, 194872], 'mapped', [30064]], - [[194873, 194873], 'mapped', [139679]], - [[194874, 194874], 'mapped', [30224]], - [[194875, 194875], 'mapped', [151457]], - [[194876, 194876], 'mapped', [151480]], - [[194877, 194877], 'mapped', [151620]], - [[194878, 194878], 'mapped', [16380]], - [[194879, 194879], 'mapped', [16392]], - [[194880, 194880], 'mapped', [30452]], - [[194881, 194881], 'mapped', [151795]], - [[194882, 194882], 'mapped', [151794]], - [[194883, 194883], 'mapped', [151833]], - [[194884, 194884], 'mapped', [151859]], - [[194885, 194885], 'mapped', [30494]], - [[194886, 194887], 'mapped', [30495]], - [[194888, 194888], 'mapped', [30538]], - [[194889, 194889], 'mapped', [16441]], - [[194890, 194890], 'mapped', [30603]], - [[194891, 194891], 'mapped', [16454]], - [[194892, 194892], 'mapped', [16534]], - [[194893, 194893], 'mapped', [152605]], - [[194894, 194894], 'mapped', [30798]], - [[194895, 194895], 'mapped', [30860]], - [[194896, 194896], 'mapped', [30924]], - [[194897, 194897], 'mapped', [16611]], - [[194898, 194898], 'mapped', [153126]], - [[194899, 194899], 'mapped', [31062]], - [[194900, 194900], 'mapped', [153242]], - [[194901, 194901], 'mapped', [153285]], - [[194902, 194902], 'mapped', [31119]], - [[194903, 194903], 'mapped', [31211]], - [[194904, 194904], 'mapped', [16687]], - [[194905, 194905], 'mapped', [31296]], - [[194906, 194906], 'mapped', [31306]], - [[194907, 194907], 'mapped', [31311]], - [[194908, 194908], 'mapped', [153980]], - [[194909, 194910], 'mapped', [154279]], - [[194911, 194911], 'disallowed'], - [[194912, 194912], 'mapped', [16898]], - [[194913, 194913], 'mapped', [154539]], - [[194914, 194914], 'mapped', [31686]], - [[194915, 194915], 'mapped', [31689]], - [[194916, 194916], 'mapped', [16935]], - [[194917, 194917], 'mapped', [154752]], - [[194918, 194918], 'mapped', [31954]], - [[194919, 194919], 'mapped', [17056]], - [[194920, 194920], 'mapped', [31976]], - [[194921, 194921], 'mapped', [31971]], - [[194922, 194922], 'mapped', [32e3]], - [[194923, 194923], 'mapped', [155526]], - [[194924, 194924], 'mapped', [32099]], - [[194925, 194925], 'mapped', [17153]], - [[194926, 194926], 'mapped', [32199]], - [[194927, 194927], 'mapped', [32258]], - [[194928, 194928], 'mapped', [32325]], - [[194929, 194929], 'mapped', [17204]], - [[194930, 194930], 'mapped', [156200]], - [[194931, 194931], 'mapped', [156231]], - [[194932, 194932], 'mapped', [17241]], - [[194933, 194933], 'mapped', [156377]], - [[194934, 194934], 'mapped', [32634]], - [[194935, 194935], 'mapped', [156478]], - [[194936, 194936], 'mapped', [32661]], - [[194937, 194937], 'mapped', [32762]], - [[194938, 194938], 'mapped', [32773]], - [[194939, 194939], 'mapped', [156890]], - [[194940, 194940], 'mapped', [156963]], - [[194941, 194941], 'mapped', [32864]], - [[194942, 194942], 'mapped', [157096]], - [[194943, 194943], 'mapped', [32880]], - [[194944, 194944], 'mapped', [144223]], - [[194945, 194945], 'mapped', [17365]], - [[194946, 194946], 'mapped', [32946]], - [[194947, 194947], 'mapped', [33027]], - [[194948, 194948], 'mapped', [17419]], - [[194949, 194949], 'mapped', [33086]], - [[194950, 194950], 'mapped', [23221]], - [[194951, 194951], 'mapped', [157607]], - [[194952, 194952], 'mapped', [157621]], - [[194953, 194953], 'mapped', [144275]], - [[194954, 194954], 'mapped', [144284]], - [[194955, 194955], 'mapped', [33281]], - [[194956, 194956], 'mapped', [33284]], - [[194957, 194957], 'mapped', [36766]], - [[194958, 194958], 'mapped', [17515]], - [[194959, 194959], 'mapped', [33425]], - [[194960, 194960], 'mapped', [33419]], - [[194961, 194961], 'mapped', [33437]], - [[194962, 194962], 'mapped', [21171]], - [[194963, 194963], 'mapped', [33457]], - [[194964, 194964], 'mapped', [33459]], - [[194965, 194965], 'mapped', [33469]], - [[194966, 194966], 'mapped', [33510]], - [[194967, 194967], 'mapped', [158524]], - [[194968, 194968], 'mapped', [33509]], - [[194969, 194969], 'mapped', [33565]], - [[194970, 194970], 'mapped', [33635]], - [[194971, 194971], 'mapped', [33709]], - [[194972, 194972], 'mapped', [33571]], - [[194973, 194973], 'mapped', [33725]], - [[194974, 194974], 'mapped', [33767]], - [[194975, 194975], 'mapped', [33879]], - [[194976, 194976], 'mapped', [33619]], - [[194977, 194977], 'mapped', [33738]], - [[194978, 194978], 'mapped', [33740]], - [[194979, 194979], 'mapped', [33756]], - [[194980, 194980], 'mapped', [158774]], - [[194981, 194981], 'mapped', [159083]], - [[194982, 194982], 'mapped', [158933]], - [[194983, 194983], 'mapped', [17707]], - [[194984, 194984], 'mapped', [34033]], - [[194985, 194985], 'mapped', [34035]], - [[194986, 194986], 'mapped', [34070]], - [[194987, 194987], 'mapped', [160714]], - [[194988, 194988], 'mapped', [34148]], - [[194989, 194989], 'mapped', [159532]], - [[194990, 194990], 'mapped', [17757]], - [[194991, 194991], 'mapped', [17761]], - [[194992, 194992], 'mapped', [159665]], - [[194993, 194993], 'mapped', [159954]], - [[194994, 194994], 'mapped', [17771]], - [[194995, 194995], 'mapped', [34384]], - [[194996, 194996], 'mapped', [34396]], - [[194997, 194997], 'mapped', [34407]], - [[194998, 194998], 'mapped', [34409]], - [[194999, 194999], 'mapped', [34473]], - [[195e3, 195e3], 'mapped', [34440]], - [[195001, 195001], 'mapped', [34574]], - [[195002, 195002], 'mapped', [34530]], - [[195003, 195003], 'mapped', [34681]], - [[195004, 195004], 'mapped', [34600]], - [[195005, 195005], 'mapped', [34667]], - [[195006, 195006], 'mapped', [34694]], - [[195007, 195007], 'disallowed'], - [[195008, 195008], 'mapped', [34785]], - [[195009, 195009], 'mapped', [34817]], - [[195010, 195010], 'mapped', [17913]], - [[195011, 195011], 'mapped', [34912]], - [[195012, 195012], 'mapped', [34915]], - [[195013, 195013], 'mapped', [161383]], - [[195014, 195014], 'mapped', [35031]], - [[195015, 195015], 'mapped', [35038]], - [[195016, 195016], 'mapped', [17973]], - [[195017, 195017], 'mapped', [35066]], - [[195018, 195018], 'mapped', [13499]], - [[195019, 195019], 'mapped', [161966]], - [[195020, 195020], 'mapped', [162150]], - [[195021, 195021], 'mapped', [18110]], - [[195022, 195022], 'mapped', [18119]], - [[195023, 195023], 'mapped', [35488]], - [[195024, 195024], 'mapped', [35565]], - [[195025, 195025], 'mapped', [35722]], - [[195026, 195026], 'mapped', [35925]], - [[195027, 195027], 'mapped', [162984]], - [[195028, 195028], 'mapped', [36011]], - [[195029, 195029], 'mapped', [36033]], - [[195030, 195030], 'mapped', [36123]], - [[195031, 195031], 'mapped', [36215]], - [[195032, 195032], 'mapped', [163631]], - [[195033, 195033], 'mapped', [133124]], - [[195034, 195034], 'mapped', [36299]], - [[195035, 195035], 'mapped', [36284]], - [[195036, 195036], 'mapped', [36336]], - [[195037, 195037], 'mapped', [133342]], - [[195038, 195038], 'mapped', [36564]], - [[195039, 195039], 'mapped', [36664]], - [[195040, 195040], 'mapped', [165330]], - [[195041, 195041], 'mapped', [165357]], - [[195042, 195042], 'mapped', [37012]], - [[195043, 195043], 'mapped', [37105]], - [[195044, 195044], 'mapped', [37137]], - [[195045, 195045], 'mapped', [165678]], - [[195046, 195046], 'mapped', [37147]], - [[195047, 195047], 'mapped', [37432]], - [[195048, 195048], 'mapped', [37591]], - [[195049, 195049], 'mapped', [37592]], - [[195050, 195050], 'mapped', [37500]], - [[195051, 195051], 'mapped', [37881]], - [[195052, 195052], 'mapped', [37909]], - [[195053, 195053], 'mapped', [166906]], - [[195054, 195054], 'mapped', [38283]], - [[195055, 195055], 'mapped', [18837]], - [[195056, 195056], 'mapped', [38327]], - [[195057, 195057], 'mapped', [167287]], - [[195058, 195058], 'mapped', [18918]], - [[195059, 195059], 'mapped', [38595]], - [[195060, 195060], 'mapped', [23986]], - [[195061, 195061], 'mapped', [38691]], - [[195062, 195062], 'mapped', [168261]], - [[195063, 195063], 'mapped', [168474]], - [[195064, 195064], 'mapped', [19054]], - [[195065, 195065], 'mapped', [19062]], - [[195066, 195066], 'mapped', [38880]], - [[195067, 195067], 'mapped', [168970]], - [[195068, 195068], 'mapped', [19122]], - [[195069, 195069], 'mapped', [169110]], - [[195070, 195071], 'mapped', [38923]], - [[195072, 195072], 'mapped', [38953]], - [[195073, 195073], 'mapped', [169398]], - [[195074, 195074], 'mapped', [39138]], - [[195075, 195075], 'mapped', [19251]], - [[195076, 195076], 'mapped', [39209]], - [[195077, 195077], 'mapped', [39335]], - [[195078, 195078], 'mapped', [39362]], - [[195079, 195079], 'mapped', [39422]], - [[195080, 195080], 'mapped', [19406]], - [[195081, 195081], 'mapped', [170800]], - [[195082, 195082], 'mapped', [39698]], - [[195083, 195083], 'mapped', [4e4]], - [[195084, 195084], 'mapped', [40189]], - [[195085, 195085], 'mapped', [19662]], - [[195086, 195086], 'mapped', [19693]], - [[195087, 195087], 'mapped', [40295]], - [[195088, 195088], 'mapped', [172238]], - [[195089, 195089], 'mapped', [19704]], - [[195090, 195090], 'mapped', [172293]], - [[195091, 195091], 'mapped', [172558]], - [[195092, 195092], 'mapped', [172689]], - [[195093, 195093], 'mapped', [40635]], - [[195094, 195094], 'mapped', [19798]], - [[195095, 195095], 'mapped', [40697]], - [[195096, 195096], 'mapped', [40702]], - [[195097, 195097], 'mapped', [40709]], - [[195098, 195098], 'mapped', [40719]], - [[195099, 195099], 'mapped', [40726]], - [[195100, 195100], 'mapped', [40763]], - [[195101, 195101], 'mapped', [173568]], - [[195102, 196605], 'disallowed'], - [[196606, 196607], 'disallowed'], - [[196608, 262141], 'disallowed'], - [[262142, 262143], 'disallowed'], - [[262144, 327677], 'disallowed'], - [[327678, 327679], 'disallowed'], - [[327680, 393213], 'disallowed'], - [[393214, 393215], 'disallowed'], - [[393216, 458749], 'disallowed'], - [[458750, 458751], 'disallowed'], - [[458752, 524285], 'disallowed'], - [[524286, 524287], 'disallowed'], - [[524288, 589821], 'disallowed'], - [[589822, 589823], 'disallowed'], - [[589824, 655357], 'disallowed'], - [[655358, 655359], 'disallowed'], - [[655360, 720893], 'disallowed'], - [[720894, 720895], 'disallowed'], - [[720896, 786429], 'disallowed'], - [[786430, 786431], 'disallowed'], - [[786432, 851965], 'disallowed'], - [[851966, 851967], 'disallowed'], - [[851968, 917501], 'disallowed'], - [[917502, 917503], 'disallowed'], - [[917504, 917504], 'disallowed'], - [[917505, 917505], 'disallowed'], - [[917506, 917535], 'disallowed'], - [[917536, 917631], 'disallowed'], - [[917632, 917759], 'disallowed'], - [[917760, 917999], 'ignored'], - [[918e3, 983037], 'disallowed'], - [[983038, 983039], 'disallowed'], - [[983040, 1048573], 'disallowed'], - [[1048574, 1048575], 'disallowed'], - [[1048576, 1114109], 'disallowed'], - [[1114110, 1114111], 'disallowed'] - ]; - } -}); - -// node_modules/tr46/index.js -var require_tr46 = __commonJS({ - 'node_modules/tr46/index.js'(exports2, module2) { - 'use strict'; - var punycode = require('punycode'); - var mappingTable = require_mappingTable(); - var PROCESSING_OPTIONS = { - TRANSITIONAL: 0, - NONTRANSITIONAL: 1 - }; - function normalize(str) { - return str - .split('\0') - .map(function (s) { - return s.normalize('NFC'); - }) - .join('\0'); - } - function findStatus(val) { - var start = 0; - var end = mappingTable.length - 1; - while (start <= end) { - var mid = Math.floor((start + end) / 2); - var target = mappingTable[mid]; - if (target[0][0] <= val && target[0][1] >= val) { - return target; - } else if (target[0][0] > val) { - end = mid - 1; - } else { - start = mid + 1; + 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.` + }); } - } - return null; - } - var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - function countSymbols(string) { - return string.replace(regexAstralSymbols, '_').length; - } - function mapChars(domain_name, useSTD3, processing_option) { - var hasError = false; - var processed = ''; - var len = countSymbols(domain_name); - for (var i = 0; i < len; ++i) { - var codePoint = domain_name.codePointAt(i); - var status = findStatus(codePoint); - switch (status[1]) { - case 'disallowed': - hasError = true; - processed += String.fromCodePoint(codePoint); - break; - case 'ignored': - break; - case 'mapped': - processed += String.fromCodePoint.apply(String, status[2]); - break; - case 'deviation': - if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { - processed += String.fromCodePoint.apply(String, status[2]); - } else { - processed += String.fromCodePoint(codePoint); - } - break; - case 'valid': - processed += String.fromCodePoint(codePoint); - break; - case 'disallowed_STD3_mapped': - if (useSTD3) { - hasError = true; - processed += String.fromCodePoint(codePoint); - } else { - processed += String.fromCodePoint.apply(String, status[2]); - } - break; - case 'disallowed_STD3_valid': - if (useSTD3) { - hasError = true; - } - processed += String.fromCodePoint(codePoint); + 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 { - string: processed, - error: hasError + return seq; }; - } - var combiningMarksRegex = - /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; - function validateLabel(label, processing_option) { - if (label.substr(0, 4) === 'xn--') { - label = punycode.toUnicode(label); - processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; - } - var error = false; - if ( - normalize(label) !== label || - (label[3] === '-' && label[4] === '-') || - label[0] === '-' || - label[label.length - 1] === '-' || - label.indexOf('.') !== -1 || - label.search(combiningMarksRegex) === 0 - ) { - error = true; - } - var len = countSymbols(label); - for (var i = 0; i < len; ++i) { - var status = findStatus(label.codePointAt(i)); - if ( - (processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== 'valid') || - (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && status[1] !== 'valid' && status[1] !== 'deviation') - ) { - error = true; - break; + }; + 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.TypeValueToString(O)}") is not an Object.` + }); } - } - return { - label, - error + const result = {}; + if (!types.isProxy(O)) { + const keys2 = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)]; + for (const key of keys2) { + const keyName = webidl.util.Stringify(key); + const typedKey = keyConverter(key, prefix, `Key ${keyName} in ${argument}`); + const typedValue = valueConverter(O[key], prefix, `${argument}[${keyName}]`); + 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; }; - } - function processing(domain_name, useSTD3, processing_option) { - var result = mapChars(domain_name, useSTD3, processing_option); - result.string = normalize(result.string); - var labels = result.string.split('.'); - for (var i = 0; i < labels.length; ++i) { - try { - var validation = validateLabel(labels[i]); - labels[i] = validation.label; - result.error = result.error || validation.error; - } catch (e) { - result.error = true; + }; + webidl.interfaceConverter = function (TypeCheck, name) { + return (V, prefix, argument) => { + if (!TypeCheck(V)) { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${name}.` + }); } - } - return { - string: labels.join('.'), - error: result.error + return V; }; - } - module2.exports.toASCII = function (domain_name, useSTD3, processing_option, verifyDnsLength) { - var result = processing(domain_name, useSTD3, processing_option); - var labels = result.string.split('.'); - labels = labels.map(function (l) { - try { - return punycode.toASCII(l); - } catch (e) { - result.error = true; - return l; + }; + webidl.dictionaryConverter = function (converters) { + converters.sort((a, b) => (a.key > b.key) - (a.key < b.key)); + return (dictionary, prefix, argument) => { + const dict = {}; + if (dictionary != null && webidl.util.Type(dictionary) !== OBJECT) { + throw webidl.errors.exception({ + header: prefix, + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }); } - }); - if (verifyDnsLength) { - var total = labels.slice(0, labels.length - 1).join('.').length; - if (total.length > 253 || total.length === 0) { - result.error = true; - } - for (var i = 0; i < labels.length; ++i) { - if (labels.length > 63 || labels.length === 0) { - result.error = true; - break; + for (const options of converters) { + const { key, defaultValue, required, converter } = options; + if (required === true) { + if (dictionary == null || !Object.hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: prefix, + message: `Missing required key "${key}".` + }); + } + } + let value = dictionary?.[key]; + const hasDefault = defaultValue !== void 0; + if (hasDefault && value === void 0) { + 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; } } - } - if (result.error) return null; - return labels.join('.'); + return dict; + }; }; - module2.exports.toUnicode = function (domain_name, useSTD3) { - var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); - return { - domain: result.string, - error: result.error + webidl.nullableConverter = function (converter) { + return (V, prefix, argument) => { + if (V === null) { + return V; + } + return converter(V, prefix, argument); }; }; - module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; + webidl.is.USVString = function (value) { + return typeof value === 'string' && value.isWellFormed(); + }; + webidl.is.ReadableStream = webidl.util.MakeTypeAssertion(ReadableStream); + webidl.is.Blob = webidl.util.MakeTypeAssertion(Blob); + webidl.is.URLSearchParams = webidl.util.MakeTypeAssertion(URLSearchParams); + webidl.is.File = webidl.util.MakeTypeAssertion(File); + webidl.is.URL = webidl.util.MakeTypeAssertion(URL); + webidl.is.AbortSignal = webidl.util.MakeTypeAssertion(AbortSignal); + webidl.is.MessagePort = webidl.util.MakeTypeAssertion(MessagePort); + webidl.is.BufferSource = function (V) { + return types.isArrayBuffer(V) || (ArrayBuffer.isView(V) && types.isArrayBuffer(V.buffer)); + }; + webidl.util.getCopyOfBytesHeldByBufferSource = function (bufferSource) { + const jsBufferSource = bufferSource; + let jsArrayBuffer = jsBufferSource; + let offset = 0; + let length = 0; + if (types.isTypedArray(jsBufferSource) || types.isDataView(jsBufferSource)) { + jsArrayBuffer = jsBufferSource.buffer; + offset = jsBufferSource.byteOffset; + length = jsBufferSource.byteLength; + } else { + assert(types.isAnyArrayBuffer(jsBufferSource)); + length = jsBufferSource.byteLength; + } + if (jsArrayBuffer.detached) { + return new Uint8Array(0); + } + const bytes = new Uint8Array(length); + const view = new Uint8Array(jsArrayBuffer, offset, length); + bytes.set(view); + return bytes; + }; + webidl.converters.DOMString = function (V, prefix, argument, flags) { + if (V === null && webidl.util.HasFlag(flags, webidl.attributes.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) { + if (typeof V === 'symbol') { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} is a symbol, which cannot be converted to a ByteString.` + }); + } + const x = String(V); + 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 = function (value) { + if (typeof value === 'string') { + return value.toWellFormed(); + } + return `${value}`.toWellFormed(); + }; + 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', 0, prefix, argument); + return x; + }; + webidl.converters['unsigned long long'] = function (V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 64, 'unsigned', 0, prefix, argument); + return x; + }; + webidl.converters['unsigned long'] = function (V, prefix, argument) { + const x = webidl.util.ConvertToInt(V, 32, 'unsigned', 0, prefix, argument); + return x; + }; + webidl.converters['unsigned short'] = function (V, prefix, argument, flags) { + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', flags, prefix, argument); + return x; + }; + webidl.converters.ArrayBuffer = function (V, prefix, argument, flags) { + if (webidl.util.Type(V) !== OBJECT || !types.isArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['ArrayBuffer'] + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a resizable ArrayBuffer.` + }); + } + return V; + }; + webidl.converters.SharedArrayBuffer = function (V, prefix, argument, flags) { + if (webidl.util.Type(V) !== OBJECT || !types.isSharedArrayBuffer(V)) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['SharedArrayBuffer'] + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a resizable SharedArrayBuffer.` + }); + } + return V; + }; + webidl.converters.TypedArray = function (V, T, prefix, argument, flags) { + if (webidl.util.Type(V) !== OBJECT || !types.isTypedArray(V) || V.constructor.name !== T.name) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: [T.name] + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a view on a shared array buffer.` + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a view on a resizable array buffer.` + }); + } + return V; + }; + webidl.converters.DataView = function (V, prefix, argument, flags) { + if (webidl.util.Type(V) !== OBJECT || !types.isDataView(V)) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['DataView'] + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a view on a shared array buffer.` + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a view on a resizable array buffer.` + }); + } + return V; + }; + webidl.converters.ArrayBufferView = function (V, prefix, argument, flags) { + if (webidl.util.Type(V) !== OBJECT || !types.isArrayBufferView(V)) { + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['ArrayBufferView'] + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a view on a shared array buffer.` + }); + } + if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a view on a resizable array buffer.` + }); + } + return V; + }; + webidl.converters.BufferSource = function (V, prefix, argument, flags) { + if (types.isArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, prefix, argument, flags); + } + if (types.isArrayBufferView(V)) { + flags &= ~webidl.attributes.AllowShared; + return webidl.converters.ArrayBufferView(V, prefix, argument, flags); + } + if (types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: prefix, + message: `${argument} cannot be a SharedArrayBuffer.` + }); + } + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['ArrayBuffer', 'ArrayBufferView'] + }); + }; + webidl.converters.AllowSharedBufferSource = function (V, prefix, argument, flags) { + if (types.isArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, prefix, argument, flags); + } + if (types.isSharedArrayBuffer(V)) { + return webidl.converters.SharedArrayBuffer(V, prefix, argument, flags); + } + if (types.isArrayBufferView(V)) { + flags |= webidl.attributes.AllowShared; + return webidl.converters.ArrayBufferView(V, prefix, argument, flags); + } + throw webidl.errors.conversionFailed({ + prefix, + argument: `${argument} ("${webidl.util.Stringify(V)}")`, + types: ['ArrayBuffer', 'SharedArrayBuffer', 'ArrayBufferView'] + }); + }; + 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 + ); + webidl.converters.Blob = webidl.interfaceConverter(webidl.is.Blob, 'Blob'); + webidl.converters.AbortSignal = webidl.interfaceConverter(webidl.is.AbortSignal, 'AbortSignal'); + webidl.converters.EventHandlerNonNull = function (V) { + if (webidl.util.Type(V) !== OBJECT) { + return null; + } + if (typeof V === 'function') { + return V; + } + return () => {}; + }; + webidl.attributes = { + Clamp: 1 << 0, + EnforceRange: 1 << 1, + AllowShared: 1 << 2, + AllowResizable: 1 << 3, + LegacyNullToEmptyString: 1 << 4 + }; + module2.exports = { + webidl + }; } }); -// node_modules/whatwg-url/lib/url-state-machine.js -var require_url_state_machine = __commonJS({ - 'node_modules/whatwg-url/lib/url-state-machine.js'(exports2, module2) { +// node_modules/undici/lib/web/fetch/util.js +var require_util2 = __commonJS({ + 'node_modules/undici/lib/web/fetch/util.js'(exports2, module2) { 'use strict'; - var punycode = require('punycode'); - var tr46 = require_tr46(); - var specialSchemes = { - ftp: 21, - file: null, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443 - }; - var failure = Symbol('failure'); - function countSymbols(str) { - return punycode.ucs2.decode(str).length; - } - function at(input, idx) { - const c = input[idx]; - return isNaN(c) ? void 0 : String.fromCodePoint(c); + var { Transform } = require('node:stream'); + var zlib = require('node:zlib'); + var { redirectStatusSet, referrerPolicyTokens, badPortsSet } = require_constants3(); + var { getGlobalOrigin } = require_global(); + var { collectAnHTTPQuotedString, parseMIMEType } = require_data_url(); + var { performance: performance2 } = require('node:perf_hooks'); + var { ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require_util(); + var assert = require('node:assert'); + var { isUint8Array } = require('node:util/types'); + var { webidl } = require_webidl(); + var { isomorphicEncode, collectASequenceOfCodePoints, removeChars } = require_infra(); + function responseURL(response) { + const urlList = response.urlList; + const length = urlList.length; + return length === 0 ? null : urlList[length - 1].toString(); } - function isASCIIDigit(c) { - return c >= 48 && c <= 57; - } - function isASCIIAlpha(c) { - return (c >= 65 && c <= 90) || (c >= 97 && c <= 122); + 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 isASCIIAlphanumeric(c) { - return isASCIIAlpha(c) || isASCIIDigit(c); + 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 isASCIIHex(c) { - return isASCIIDigit(c) || (c >= 65 && c <= 70) || (c >= 97 && c <= 102); + function normalizeBinaryStringToUtf8(value) { + return Buffer.from(value, 'binary').toString('utf8'); } - function isSingleDot(buffer) { - return buffer === '.' || buffer.toLowerCase() === '%2e'; + function requestCurrentURL(request2) { + return request2.urlList[request2.urlList.length - 1]; } - function isDoubleDot(buffer) { - buffer = buffer.toLowerCase(); - return buffer === '..' || buffer === '%2e.' || buffer === '.%2e' || buffer === '%2e%2e'; + function requestBadPort(request2) { + const url = requestCurrentURL(request2); + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked'; + } + return 'allowed'; } - function isWindowsDriveLetterCodePoints(cp1, cp2) { - return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); + function isErrorLike(object) { + return ( + object instanceof Error || object?.constructor?.name === 'Error' || object?.constructor?.name === 'DOMException' + ); } - function isWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ':' || string[1] === '|'); + 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; } - function isNormalizedWindowsDriveLetterString(string) { - return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ':'; + 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 containsForbiddenHostCodePoint(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; + function parseReferrerPolicy(actualResponse) { + const policyHeader = (actualResponse.headersList.get('referrer-policy', true) ?? '').split(','); + let policy = ''; + if (policyHeader.length) { + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim(); + if (referrerPolicyTokens.has(token)) { + policy = token; + break; + } + } + } + return policy; } - function containsForbiddenHostCodePointExcludingPercent(string) { - return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; + function setRequestReferrerPolicyOnRedirect(request2, actualResponse) { + const policy = parseReferrerPolicy(actualResponse); + if (policy !== '') { + request2.referrerPolicy = policy; + } } - function isSpecialScheme(scheme) { - return specialSchemes[scheme] !== void 0; + function crossOriginResourcePolicyCheck() { + return 'allowed'; } - function isSpecial(url) { - return isSpecialScheme(url.scheme); + function corsCheck() { + return 'success'; } - function defaultPort(scheme) { - return specialSchemes[scheme]; + function TAOCheck() { + return 'success'; } - function percentEncode(c) { - let hex = c.toString(16).toUpperCase(); - if (hex.length === 1) { - hex = '0' + hex; - } - return '%' + hex; + function appendFetchMetadata(httpRequest) { + let header = null; + header = httpRequest.mode; + httpRequest.headersList.set('sec-fetch-mode', header, true); } - function utf8PercentEncode(c) { - const buf = new Buffer(c); - let str = ''; - for (let i = 0; i < buf.length; ++i) { - str += percentEncode(buf[i]); + function appendRequestOriginHeader(request2) { + let serializedOrigin = request2.origin; + if (serializedOrigin === 'client' || serializedOrigin === void 0) { + return; } - return str; - } - function utf8PercentDecode(str) { - const input = new Buffer(str); - const output = []; - for (let i = 0; i < input.length; ++i) { - if (input[i] !== 37) { - output.push(input[i]); - } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { - output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); - i += 2; - } else { - output.push(input[i]); + 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); } - return new Buffer(output).toString(); } - function isC0ControlPercentEncode(c) { - return c <= 31 || c > 126; + function coarsenTime(timestamp, crossOriginIsolatedCapability) { + return timestamp; } - var extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); - function isPathPercentEncode(c) { - return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); - } - var extraUserinfoPercentEncodeSet = new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); - function isUserinfoPercentEncode(c) { - return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); - } - function percentEncodeChar(c, encodeSetPredicate) { - const cStr = String.fromCodePoint(c); - if (encodeSetPredicate(c)) { - return utf8PercentEncode(cStr); + 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 cStr; + 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 parseIPv4Number(input) { - let R = 10; - if (input.length >= 2 && input.charAt(0) === '0' && input.charAt(1).toLowerCase() === 'x') { - input = input.substring(2); - R = 16; - } else if (input.length >= 2 && input.charAt(0) === '0') { - input = input.substring(1); - R = 8; - } - if (input === '') { - return 0; - } - const regex = R === 10 ? /[^0-9]/ : R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/; - if (regex.test(input)) { - return failure; - } - return parseInt(input, R); + function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { + return coarsenTime(performance2.now(), crossOriginIsolatedCapability); } - function parseIPv4(input) { - const parts = input.split('.'); - if (parts[parts.length - 1] === '') { - if (parts.length > 1) { - parts.pop(); - } - } - if (parts.length > 4) { - return input; - } - const numbers = []; - for (const part of parts) { - if (part === '') { - return input; - } - const n = parseIPv4Number(part); - if (n === failure) { - return input; - } - numbers.push(n); - } - for (let i = 0; i < numbers.length - 1; ++i) { - if (numbers[i] > 255) { - return failure; - } - } - if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { - return failure; - } - let ipv4 = numbers.pop(); - let counter = 0; - for (const n of numbers) { - ipv4 += n * Math.pow(256, 3 - counter); - ++counter; - } - return ipv4; + 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 serializeIPv4(address) { - let output = ''; - let n = address; - for (let i = 1; i <= 4; ++i) { - output = String(n % 256) + output; - if (i !== 4) { - output = '.' + output; - } - n = Math.floor(n / 256); - } - return output; + function makePolicyContainer() { + return { + referrerPolicy: 'strict-origin-when-cross-origin' + }; } - function parseIPv6(input) { - const address = [0, 0, 0, 0, 0, 0, 0, 0]; - let pieceIndex = 0; - let compress = null; - let pointer = 0; - input = punycode.ucs2.decode(input); - if (input[pointer] === 58) { - if (input[pointer + 1] !== 58) { - return failure; - } - pointer += 2; - ++pieceIndex; - compress = pieceIndex; - } - while (pointer < input.length) { - if (pieceIndex === 8) { - return failure; - } - if (input[pointer] === 58) { - if (compress !== null) { - return failure; - } - ++pointer; - ++pieceIndex; - compress = pieceIndex; - continue; + function clonePolicyContainer(policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + }; + } + function determineRequestsReferrer(request2) { + const policy = request2.referrerPolicy; + assert(policy); + let referrerSource = null; + if (request2.referrer === 'client') { + const globalOrigin = getGlobalOrigin(); + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer'; } - let value = 0; - let length = 0; - while (length < 4 && isASCIIHex(input[pointer])) { - value = value * 16 + parseInt(at(input, pointer), 16); - ++pointer; - ++length; - } - if (input[pointer] === 46) { - if (length === 0) { - return failure; - } - pointer -= length; - if (pieceIndex > 6) { - return failure; - } - let numbersSeen = 0; - while (input[pointer] !== void 0) { - let ipv4Piece = null; - if (numbersSeen > 0) { - if (input[pointer] === 46 && numbersSeen < 4) { - ++pointer; - } else { - return failure; - } - } - if (!isASCIIDigit(input[pointer])) { - return failure; - } - while (isASCIIDigit(input[pointer])) { - const number = parseInt(at(input, pointer)); - if (ipv4Piece === null) { - ipv4Piece = number; - } else if (ipv4Piece === 0) { - return failure; - } else { - ipv4Piece = ipv4Piece * 10 + number; - } - if (ipv4Piece > 255) { - return failure; - } - ++pointer; - } - address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; - ++numbersSeen; - if (numbersSeen === 2 || numbersSeen === 4) { - ++pieceIndex; - } + referrerSource = new URL(globalOrigin); + } else if (webidl.is.URL(request2.referrer)) { + referrerSource = request2.referrer; + } + let referrerURL = stripURLForReferrer(referrerSource); + const referrerOrigin = stripURLForReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + switch (policy) { + case 'no-referrer': + return 'no-referrer'; + case 'origin': + if (referrerOrigin != null) { + return referrerOrigin; } - if (numbersSeen !== 4) { - return failure; + return stripURLForReferrer(referrerSource, true); + case 'unsafe-url': + return referrerURL; + case 'strict-origin': { + const currentURL = requestCurrentURL(request2); + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer'; } - break; - } else if (input[pointer] === 58) { - ++pointer; - if (input[pointer] === void 0) { - return failure; - } - } else if (input[pointer] !== void 0) { - return failure; - } - address[pieceIndex] = value; - ++pieceIndex; - } - if (compress !== null) { - let swaps = pieceIndex - compress; - pieceIndex = 7; - while (pieceIndex !== 0 && swaps > 0) { - const temp = address[compress + swaps - 1]; - address[compress + swaps - 1] = address[pieceIndex]; - address[pieceIndex] = temp; - --pieceIndex; - --swaps; - } - } else if (compress === null && pieceIndex !== 8) { - return failure; - } - return address; - } - function serializeIPv6(address) { - let output = ''; - const seqResult = findLongestZeroSequence(address); - const compress = seqResult.idx; - let ignore0 = false; - for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { - if (ignore0 && address[pieceIndex] === 0) { - continue; - } else if (ignore0) { - ignore0 = false; + return referrerOrigin; } - if (compress === pieceIndex) { - const separator = pieceIndex === 0 ? '::' : ':'; - output += separator; - ignore0 = true; - continue; + 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; } - output += address[pieceIndex].toString(16); - if (pieceIndex !== 7) { - output += ':'; + case 'same-origin': + if (sameOrigin(request2, referrerURL)) { + return referrerURL; + } + return 'no-referrer'; + case 'origin-when-cross-origin': + if (sameOrigin(request2, referrerURL)) { + return referrerURL; + } + return referrerOrigin; + case 'no-referrer-when-downgrade': { + const currentURL = requestCurrentURL(request2); + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer'; + } + return referrerURL; } } - return output; } - function parseHost(input, isSpecialArg) { - if (input[0] === '[') { - if (input[input.length - 1] !== ']') { - return failure; + function stripURLForReferrer(url, originOnly = false) { + assert(webidl.is.URL(url)); + url = new URL(url); + if (urlIsLocal(url)) { + return 'no-referrer'; + } + url.username = ''; + url.password = ''; + url.hash = ''; + if (originOnly === true) { + url.pathname = ''; + url.search = ''; + } + return url; + } + var isPotentialleTrustworthyIPv4 = RegExp.prototype.test.bind( + /^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/ + ); + var isPotentiallyTrustworthyIPv6 = RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/); + function isOriginIPPotentiallyTrustworthy(origin) { + if (origin.includes(':')) { + if (origin[0] === '[' && origin[origin.length - 1] === ']') { + origin = origin.slice(1, -1); } - return parseIPv6(input.substring(1, input.length - 1)); + return isPotentiallyTrustworthyIPv6(origin); } - if (!isSpecialArg) { - return parseOpaqueHost(input); + return isPotentialleTrustworthyIPv4(origin); + } + function isOriginPotentiallyTrustworthy(origin) { + if (origin == null || origin === 'null') { + return false; } - const domain = utf8PercentDecode(input); - const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); - if (asciiDomain === null) { - return failure; + origin = new URL(origin); + if (origin.protocol === 'https:' || origin.protocol === 'wss:') { + return true; } - if (containsForbiddenHostCodePoint(asciiDomain)) { - return failure; + if (isOriginIPPotentiallyTrustworthy(origin.hostname)) { + return true; } - const ipv4Host = parseIPv4(asciiDomain); - if (typeof ipv4Host === 'number' || ipv4Host === failure) { - return ipv4Host; + if (origin.hostname === 'localhost' || origin.hostname === 'localhost.') { + return true; } - return asciiDomain; - } - function parseOpaqueHost(input) { - if (containsForbiddenHostCodePointExcludingPercent(input)) { - return failure; + if (origin.hostname.endsWith('.localhost') || origin.hostname.endsWith('.localhost.')) { + return true; } - let output = ''; - const decoded = punycode.ucs2.decode(input); - for (let i = 0; i < decoded.length; ++i) { - output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + if (origin.protocol === 'file:') { + return true; } - return output; + return false; } - function findLongestZeroSequence(arr) { - let maxIdx = null; - let maxLen = 1; - let currStart = null; - let currLen = 0; - for (let i = 0; i < arr.length; ++i) { - if (arr[i] !== 0) { - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; - } - currStart = null; - currLen = 0; - } else { - if (currStart === null) { - currStart = i; - } - ++currLen; - } + function isURLPotentiallyTrustworthy(url) { + if (!webidl.is.URL(url)) { + return false; } - if (currLen > maxLen) { - maxIdx = currStart; - maxLen = currLen; + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true; } - return { - idx: maxIdx, - len: maxLen - }; + if (url.protocol === 'data:') return true; + if (url.protocol === 'blob:') return true; + return isOriginPotentiallyTrustworthy(url.origin); } - function serializeHost(host) { - if (typeof host === 'number') { - return serializeIPv4(host); + function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) {} + function sameOrigin(A, B) { + if (A.origin === B.origin && A.origin === 'null') { + return true; } - if (host instanceof Array) { - return '[' + serializeIPv6(host) + ']'; + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true; } - return host; + return false; } - function trimControlChars(url) { - return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ''); + function isAborted(fetchParams) { + return fetchParams.controller.state === 'aborted'; } - function trimTabAndNewline(url) { - return url.replace(/\u0009|\u000A|\u000D/g, ''); + function isCancelled(fetchParams) { + return fetchParams.controller.state === 'aborted' || fetchParams.controller.state === 'terminated'; } - function shortenPath(url) { - const path2 = url.path; - if (path2.length === 0) { - return; - } - if (url.scheme === 'file' && path2.length === 1 && isNormalizedWindowsDriveLetter(path2[0])) { - return; - } - path2.pop(); + function normalizeMethod(method) { + return normalizedMethodRecordsBase[method.toLowerCase()] ?? method; } - function includesCredentials(url) { - return url.username !== '' || url.password !== ''; - } - function cannotHaveAUsernamePasswordPort(url) { - return url.host === null || url.host === '' || url.cannotBeABaseURL || url.scheme === 'file'; - } - function isNormalizedWindowsDriveLetter(string) { - return /^[A-Za-z]:$/.test(string); - } - function URLStateMachine(input, base, encodingOverride, url, stateOverride) { - this.pointer = 0; - this.input = input; - this.base = base || null; - this.encodingOverride = encodingOverride || 'utf-8'; - this.stateOverride = stateOverride; - this.url = url; - this.failure = false; - this.parseError = false; - if (!this.url) { - this.url = { - scheme: '', - username: '', - password: '', - host: null, - port: null, - path: [], - query: null, - fragment: null, - cannotBeABaseURL: false - }; - const res2 = trimControlChars(this.input); - if (res2 !== this.input) { - this.parseError = true; - } - this.input = res2; - } - const res = trimTabAndNewline(this.input); - if (res !== this.input) { - this.parseError = true; - } - this.input = res; - this.state = stateOverride || 'scheme start'; - this.buffer = ''; - this.atFlag = false; - this.arrFlag = false; - this.passwordTokenSeenFlag = false; - this.input = punycode.ucs2.decode(this.input); - for (; this.pointer <= this.input.length; ++this.pointer) { - const c = this.input[this.pointer]; - const cStr = isNaN(c) ? void 0 : String.fromCodePoint(c); - const ret = this['parse ' + this.state](c, cStr); - if (!ret) { - break; - } else if (ret === failure) { - this.failure = true; - break; + 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; } - } - } - URLStateMachine.prototype['parse scheme start'] = function parseSchemeStart(c, cStr) { - if (isASCIIAlpha(c)) { - this.buffer += cStr.toLowerCase(); - this.state = 'scheme'; - } else if (!this.stateOverride) { - this.state = 'no scheme'; - --this.pointer; - } else { - this.parseError = true; - return failure; - } - return true; - }; - URLStateMachine.prototype['parse scheme'] = function parseScheme(c, cStr) { - if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { - this.buffer += cStr.toLowerCase(); - } else if (c === 58) { - if (this.stateOverride) { - if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { - return false; - } - if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { - return false; - } - if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === 'file') { - return false; + 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.`); } - if (this.url.scheme === 'file' && (this.url.host === '' || this.url.host === null)) { - return false; + const index = this.#index; + const values = kInternalIterator(this.#target); + 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 + }; } - this.url.scheme = this.buffer; - this.buffer = ''; - if (this.stateOverride) { - return 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); + } + } } - if (this.url.scheme === 'file') { - if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { - this.parseError = true; - } - this.state = 'file'; - } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { - this.state = 'special relative or authority'; - } else if (isSpecial(this.url)) { - this.state = 'special authority slashes'; - } else if (this.input[this.pointer + 1] === 47) { - this.state = 'path or authority'; - ++this.pointer; - } else { - this.url.cannotBeABaseURL = true; - this.url.path.push(''); - this.state = 'cannot-be-a-base-URL path'; - } - } else if (!this.stateOverride) { - this.buffer = ''; - this.state = 'no scheme'; - this.pointer = -1; - } else { - this.parseError = true; - return failure; + }; + return Object.defineProperties(object.prototype, { + ...properties, + [Symbol.iterator]: { + writable: true, + enumerable: false, + configurable: true, + value: properties.entries.value + } + }); + } + function fullyReadBody(body, processBody, processBodyError) { + const successSteps = processBody; + const errorSteps = processBodyError; + try { + const reader = body.stream.getReader(); + readAllBytes(reader, successSteps, errorSteps); + } catch (e) { + errorSteps(e); } - return true; - }; - URLStateMachine.prototype['parse no scheme'] = function parseNoScheme(c) { - if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) { - return failure; - } else if (this.base.cannotBeABaseURL && c === 35) { - this.url.scheme = this.base.scheme; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ''; - this.url.cannotBeABaseURL = true; - this.state = 'fragment'; - } else if (this.base.scheme === 'file') { - this.state = 'file'; - --this.pointer; - } else { - this.state = 'relative'; - --this.pointer; + } + 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; + } } - return true; - }; - URLStateMachine.prototype['parse special relative or authority'] = function parseSpecialRelativeOrAuthority(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = 'special authority ignore slashes'; - ++this.pointer; - } else { - this.parseError = true; - this.state = 'relative'; - --this.pointer; + } + async function readAllBytes(reader, successSteps, failureSteps) { + try { + const bytes = []; + let byteLength = 0; + do { + const { done, value: chunk } = await reader.read(); + if (done) { + successSteps(Buffer.concat(bytes, byteLength)); + return; + } + if (!isUint8Array(chunk)) { + failureSteps(new TypeError('Received non-Uint8Array chunk')); + return; + } + bytes.push(chunk); + byteLength += chunk.length; + } while (true); + } catch (e) { + failureSteps(e); } - return true; - }; - URLStateMachine.prototype['parse path or authority'] = function parsePathOrAuthority(c) { - if (c === 47) { - this.state = 'authority'; - } else { - this.state = 'path'; - --this.pointer; + } + function urlIsLocal(url) { + assert('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) { + assert('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'; } - return true; - }; - URLStateMachine.prototype['parse relative'] = function parseRelative(c) { - this.url.scheme = this.base.scheme; - if (isNaN(c)) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 47) { - this.state = 'relative slash'; - } else if (c === 63) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = ''; - this.state = 'query'; - } else if (c === 35) { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ''; - this.state = 'fragment'; - } else if (isSpecial(this.url) && c === 92) { - this.parseError = true; - this.state = 'relative slash'; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.url.path = this.base.path.slice(0, this.base.path.length - 1); - this.state = 'path'; - --this.pointer; + const position = { position: 5 }; + if (allowWhitespace) { + collectASequenceOfCodePoints(char => char === ' ' || char === ' ', data, position); } - return true; - }; - URLStateMachine.prototype['parse relative slash'] = function parseRelativeSlash(c) { - if (isSpecial(this.url) && (c === 47 || c === 92)) { - if (c === 92) { - this.parseError = true; - } - this.state = 'special authority ignore slashes'; - } else if (c === 47) { - this.state = 'authority'; - } else { - this.url.username = this.base.username; - this.url.password = this.base.password; - this.url.host = this.base.host; - this.url.port = this.base.port; - this.state = 'path'; - --this.pointer; + if (data.charCodeAt(position.position) !== 61) { + return 'failure'; } - return true; - }; - URLStateMachine.prototype['parse special authority slashes'] = function parseSpecialAuthoritySlashes(c) { - if (c === 47 && this.input[this.pointer + 1] === 47) { - this.state = 'special authority ignore slashes'; - ++this.pointer; - } else { - this.parseError = true; - this.state = 'special authority ignore slashes'; - --this.pointer; + position.position++; + if (allowWhitespace) { + collectASequenceOfCodePoints(char => char === ' ' || char === ' ', data, position); } - return true; - }; - URLStateMachine.prototype['parse special authority ignore slashes'] = function parseSpecialAuthorityIgnoreSlashes(c) { - if (c !== 47 && c !== 92) { - this.state = 'authority'; - --this.pointer; - } else { - this.parseError = true; + 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); } - return true; - }; - URLStateMachine.prototype['parse authority'] = function parseAuthority(c, cStr) { - if (c === 64) { - this.parseError = true; - if (this.atFlag) { - this.buffer = '%40' + this.buffer; - } - this.atFlag = true; - const len = countSymbols(this.buffer); - for (let pointer = 0; pointer < len; ++pointer) { - const codePoint = this.buffer.codePointAt(pointer); - if (codePoint === 58 && !this.passwordTokenSeenFlag) { - this.passwordTokenSeenFlag = true; - continue; - } - const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); - if (this.passwordTokenSeenFlag) { - this.url.password += encodedCodePoints; - } else { - this.url.username += encodedCodePoints; + 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.buffer = ''; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || (isSpecial(this.url) && c === 92)) { - if (this.atFlag && this.buffer === '') { - this.parseError = true; - return failure; - } - this.pointer -= countSymbols(this.buffer) + 1; - this.buffer = ''; - this.state = 'host'; - } else { - this.buffer += cStr; + this._inflateStream.write(chunk, encoding, callback); } - return true; - }; - URLStateMachine.prototype['parse hostname'] = URLStateMachine.prototype['parse host'] = function parseHostName(c, cStr) { - if (this.stateOverride && this.url.scheme === 'file') { - --this.pointer; - this.state = 'file host'; - } else if (c === 58 && !this.arrFlag) { - if (this.buffer === '') { - this.parseError = true; - return failure; - } - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - this.url.host = host; - this.buffer = ''; - this.state = 'port'; - if (this.stateOverride === 'hostname') { - return false; - } - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || (isSpecial(this.url) && c === 92)) { - --this.pointer; - if (isSpecial(this.url) && this.buffer === '') { - this.parseError = true; - return failure; - } else if (this.stateOverride && this.buffer === '' && (includesCredentials(this.url) || this.url.port !== null)) { - this.parseError = true; - return false; - } - const host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; + _final(callback) { + if (this._inflateStream) { + this._inflateStream.end(); + this._inflateStream = null; } - this.url.host = host; - this.buffer = ''; - this.state = 'path start'; - if (this.stateOverride) { - return false; - } - } else { - if (c === 91) { - this.arrFlag = true; - } else if (c === 93) { - this.arrFlag = false; - } - this.buffer += cStr; + callback(); } - return true; }; - URLStateMachine.prototype['parse port'] = function parsePort(c, cStr) { - if (isASCIIDigit(c)) { - this.buffer += cStr; - } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || (isSpecial(this.url) && c === 92) || this.stateOverride) { - if (this.buffer !== '') { - const port = parseInt(this.buffer); - if (port > Math.pow(2, 16) - 1) { - this.parseError = true; - return failure; - } - this.url.port = port === defaultPort(this.url.scheme) ? null : port; - this.buffer = ''; + 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; } - if (this.stateOverride) { - return false; + 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); } - this.state = 'path start'; - --this.pointer; - } else { - this.parseError = true; - return failure; } - return true; - }; - var fileOtherwiseCodePoints = new Set([47, 92, 63, 35]); - URLStateMachine.prototype['parse file'] = function parseFile(c) { - this.url.scheme = 'file'; - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; - } - this.state = 'file slash'; - } else if (this.base !== null && this.base.scheme === 'file') { - if (isNaN(c)) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - } else if (c === 63) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = ''; - this.state = 'query'; - } else if (c === 35) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - this.url.query = this.base.query; - this.url.fragment = ''; - this.state = 'fragment'; - } else { - if ( - this.input.length - this.pointer - 1 === 0 || - !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || - (this.input.length - this.pointer - 1 >= 2 && !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) - ) { - this.url.host = this.base.host; - this.url.path = this.base.path.slice(); - shortenPath(this.url); + 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 { - this.parseError = true; + assert(input.charCodeAt(position.position) === 44); + position.position++; } - this.state = 'path'; - --this.pointer; } - } else { - this.state = 'path'; - --this.pointer; + temporaryValue = removeChars(temporaryValue, true, true, char => char === 9 || char === 32); + values.push(temporaryValue); + temporaryValue = ''; } - return true; + return values; + } + function getDecodeSplit(name, list) { + const value = list.get(name, true); + if (value === null) { + return null; + } + return gettingDecodingSplitting(value); + } + function hasAuthenticationEntry(request2) { + return false; + } + function includesCredentials(url) { + return !!(url.username || url.password); + } + function isTraversableNavigable(navigable) { + return navigable != null && navigable !== 'client' && navigable !== 'no-traversable'; + } + 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(); + module2.exports = { + isAborted, + isCancelled, + isValidEncodedURL, + ReadableStreamFrom, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + clampAndCoarsenConnectionTimingInfo, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + iteratorMixin, + createIterator, + isValidHeaderName, + isValidHeaderValue, + isErrorLike, + fullyReadBody, + readableStreamClose, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + simpleRangeHeaderValue, + buildContentRange, + createInflate, + extractMimeType, + getDecodeSplit, + environmentSettingsObject, + isOriginIPPotentiallyTrustworthy, + hasAuthenticationEntry, + includesCredentials, + isTraversableNavigable }; - URLStateMachine.prototype['parse file slash'] = function parseFileSlash(c) { - if (c === 47 || c === 92) { - if (c === 92) { - this.parseError = true; + } +}); + +// node_modules/undici/lib/util/runtime-features.js +var require_runtime_features = __commonJS({ + 'node_modules/undici/lib/util/runtime-features.js'(exports2, module2) { + 'use strict'; + var lazyLoaders = { + __proto__: null, + 'node:crypto': () => require('node:crypto'), + 'node:sqlite': () => require('node:sqlite') + }; + function detectRuntimeFeatureByNodeModule(moduleName) { + try { + lazyLoaders[moduleName](); + return true; + } catch (err) { + if (err.code !== 'ERR_UNKNOWN_BUILTIN_MODULE' && err.code !== 'ERR_NO_CRYPTO') { + throw err; } - this.state = 'file host'; - } else { - if (this.base !== null && this.base.scheme === 'file') { - if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { - this.url.path.push(this.base.path[0]); - } else { - this.url.host = this.base.host; - } + return false; + } + } + var runtimeFeaturesAsNodeModule = + /** @type {const} */ + ['crypto', 'sqlite']; + function detectRuntimeFeature(feature) { + if ( + runtimeFeaturesAsNodeModule.includes( + /** @type {RuntimeFeatureByNodeModule} */ + feature + ) + ) { + return detectRuntimeFeatureByNodeModule(`node:${feature}`); + } + throw new TypeError(`unknown feature: ${feature}`); + } + var RuntimeFeatures = class { + /** @type {Map} */ + #map = /* @__PURE__ */ new Map(); + /** + * Clears all cached feature detections. + */ + clear() { + this.#map.clear(); + } + /** + * @param {Feature} feature + * @returns {boolean} + */ + has(feature) { + return this.#map.get(feature) ?? this.#detectRuntimeFeature(feature); + } + /** + * @param {Feature} feature + * @param {boolean} value + */ + set(feature, value) { + if (runtimeFeaturesAsNodeModule.includes(feature) === false) { + throw new TypeError(`unknown feature: ${feature}`); } - this.state = 'path'; - --this.pointer; + this.#map.set(feature, value); + } + /** + * @param {Feature} feature + * @returns {boolean} + */ + #detectRuntimeFeature(feature) { + const result = detectRuntimeFeature(feature); + this.#map.set(feature, result); + return result; } - return true; }; - URLStateMachine.prototype['parse file host'] = function parseFileHost(c, cStr) { - if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { - --this.pointer; - if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { - this.parseError = true; - this.state = 'path'; - } else if (this.buffer === '') { - this.url.host = ''; - if (this.stateOverride) { - return false; + var instance = new RuntimeFeatures(); + module2.exports.runtimeFeatures = instance; + module2.exports.default = instance; + } +}); + +// node_modules/undici/lib/web/fetch/formdata.js +var require_formdata = __commonJS({ + 'node_modules/undici/lib/web/fetch/formdata.js'(exports2, module2) { + 'use strict'; + var { iteratorMixin } = require_util2(); + var { kEnumerableProperty } = require_util(); + var { webidl } = require_webidl(); + var nodeUtil = require('node:util'); + var { runtimeFeatures } = require_runtime_features(); + var random = runtimeFeatures.has('crypto') ? require('node:crypto').randomInt : max => Math.floor(Math.random() * max); + var FormData = class _FormData { + #state = []; + #boundary = null; + constructor(form = void 0) { + webidl.util.markAsUncloneable(this); + if (form !== void 0) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }); + } + } + append(name, value, filename = void 0) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.append'; + webidl.argumentLengthCheck(arguments, 2, prefix); + name = webidl.converters.USVString(name); + if (arguments.length === 3 || webidl.is.Blob(value)) { + value = webidl.converters.Blob(value, prefix, 'value'); + if (filename !== void 0) { + filename = webidl.converters.USVString(filename); } - this.state = 'path start'; } else { - let host = parseHost(this.buffer, isSpecial(this.url)); - if (host === failure) { - return failure; - } - if (host === 'localhost') { - host = ''; - } - this.url.host = host; - if (this.stateOverride) { - return false; - } - this.buffer = ''; - this.state = 'path start'; + value = webidl.converters.USVString(value); } - } else { - this.buffer += cStr; + const entry = makeEntry(name, value, filename); + this.#state.push(entry); } - return true; - }; - URLStateMachine.prototype['parse path start'] = function parsePathStart(c) { - if (isSpecial(this.url)) { - if (c === 92) { - this.parseError = true; - } - this.state = 'path'; - if (c !== 47 && c !== 92) { - --this.pointer; - } - } else if (!this.stateOverride && c === 63) { - this.url.query = ''; - this.state = 'query'; - } else if (!this.stateOverride && c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; - } else if (c !== void 0) { - this.state = 'path'; - if (c !== 47) { - --this.pointer; - } + delete(name) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.delete'; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name); + this.#state = this.#state.filter(entry => entry.name !== name); } - return true; - }; - URLStateMachine.prototype['parse path'] = function parsePath(c) { - if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) || (!this.stateOverride && (c === 63 || c === 35))) { - if (isSpecial(this.url) && c === 92) { - this.parseError = true; - } - if (isDoubleDot(this.buffer)) { - shortenPath(this.url); - if (c !== 47 && !(isSpecial(this.url) && c === 92)) { - this.url.path.push(''); - } - } else if (isSingleDot(this.buffer) && c !== 47 && !(isSpecial(this.url) && c === 92)) { - this.url.path.push(''); - } else if (!isSingleDot(this.buffer)) { - if (this.url.scheme === 'file' && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { - if (this.url.host !== '' && this.url.host !== null) { - this.parseError = true; - this.url.host = ''; - } - this.buffer = this.buffer[0] + ':'; - } - this.url.path.push(this.buffer); + get(name) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.get'; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name); + const idx = this.#state.findIndex(entry => entry.name === name); + if (idx === -1) { + return null; } - this.buffer = ''; - if (this.url.scheme === 'file' && (c === void 0 || c === 63 || c === 35)) { - while (this.url.path.length > 1 && this.url.path[0] === '') { - this.parseError = true; - this.url.path.shift(); + return this.#state[idx].value; + } + getAll(name) { + webidl.brandCheck(this, _FormData); + const prefix = 'FormData.getAll'; + webidl.argumentLengthCheck(arguments, 1, prefix); + name = webidl.converters.USVString(name); + return this.#state.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); + return this.#state.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); + name = webidl.converters.USVString(name); + if (arguments.length === 3 || webidl.is.Blob(value)) { + value = webidl.converters.Blob(value, prefix, 'value'); + if (filename !== void 0) { + filename = webidl.converters.USVString(filename); } + } else { + value = webidl.converters.USVString(value); } - if (c === 63) { - this.url.query = ''; - this.state = 'query'; - } - if (c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; - } - } else { - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; + const entry = makeEntry(name, value, filename); + const idx = this.#state.findIndex(entry2 => entry2.name === name); + if (idx !== -1) { + this.#state = [ + ...this.#state.slice(0, idx), + entry, + ...this.#state.slice(idx + 1).filter(entry2 => entry2.name !== name) + ]; + } else { + this.#state.push(entry); } - this.buffer += percentEncodeChar(c, isPathPercentEncode); } - return true; + [nodeUtil.inspect.custom](depth, options) { + const state = this.#state.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)}`; + } + /** + * @param {FormData} formData + */ + static getFormDataState(formData) { + return formData.#state; + } + /** + * @param {FormData} formData + * @param {any[]} newState + */ + static setFormDataState(formData, newState) { + formData.#state = newState; + } + /** + * @param {FormData} formData + * @returns {string | null} + */ + static getFormDataBoundary(formData) { + const boundary = formData.#boundary; + if (boundary != null) return boundary; + return (formData.#boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`); + } }; - URLStateMachine.prototype['parse cannot-be-a-base-URL path'] = function parseCannotBeABaseURLPath(c) { - if (c === 63) { - this.url.query = ''; - this.state = 'query'; - } else if (c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; + var { getFormDataState, setFormDataState, getFormDataBoundary } = FormData; + Reflect.deleteProperty(FormData, 'getFormDataState'); + Reflect.deleteProperty(FormData, 'setFormDataState'); + Reflect.deleteProperty(FormData, 'getFormDataBoundary'); + iteratorMixin('FormData', FormData, getFormDataState, '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 (!isNaN(c) && c !== 37) { - this.parseError = true; + if (!webidl.is.File(value)) { + value = new File([value], 'blob', { type: value.type }); } - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; - } - if (!isNaN(c)) { - this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); + if (filename !== void 0) { + const options = { + type: value.type, + lastModified: value.lastModified + }; + value = new File([value], filename, options); } } - return true; - }; - URLStateMachine.prototype['parse query'] = function parseQuery(c, cStr) { - if (isNaN(c) || (!this.stateOverride && c === 35)) { - if (!isSpecial(this.url) || this.url.scheme === 'ws' || this.url.scheme === 'wss') { - this.encodingOverride = 'utf-8'; - } - const buffer = new Buffer(this.buffer); - for (let i = 0; i < buffer.length; ++i) { - if ( - buffer[i] < 33 || - buffer[i] > 126 || - buffer[i] === 34 || - buffer[i] === 35 || - buffer[i] === 60 || - buffer[i] === 62 - ) { - this.url.query += percentEncode(buffer[i]); - } else { - this.url.query += String.fromCodePoint(buffer[i]); - } - } - this.buffer = ''; - if (c === 35) { - this.url.fragment = ''; - this.state = 'fragment'; - } - } else { - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = true; + return { name, value }; + } + webidl.is.FormData = webidl.util.MakeTypeAssertion(FormData); + module2.exports = { FormData, makeEntry, setFormDataState, getFormDataBoundary }; + } +}); + +// node_modules/undici/lib/web/fetch/formdata-parser.js +var require_formdata_parser = __commonJS({ + 'node_modules/undici/lib/web/fetch/formdata-parser.js'(exports2, module2) { + 'use strict'; + var { bufferToLowerCasedHeaderName } = require_util(); + var { HTTP_TOKEN_CODEPOINTS } = require_data_url(); + var { makeEntry } = require_formdata(); + var { webidl } = require_webidl(); + var assert = require('node:assert'); + var { isomorphicDecode } = require_infra(); + var dd = Buffer.from('--'); + var decoder = new TextDecoder(); + var decoderIgnoreBOM = new TextDecoder('utf-8', { ignoreBOM: true }); + function isAsciiString(chars) { + for (let i = 0; i < chars.length; ++i) { + if ((chars.charCodeAt(i) & ~127) !== 0) { + return false; } - this.buffer += cStr; } return true; - }; - URLStateMachine.prototype['parse fragment'] = function parseFragment(c) { - if (isNaN(c)) { - } else if (c === 0) { - this.parseError = true; - } else { - if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { - this.parseError = 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; } - this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); } return true; - }; - function serializeURL(url, excludeFragment) { - let output = url.scheme + ':'; - if (url.host !== null) { - output += '//'; - if (url.username !== '' || url.password !== '') { - output += url.username; - if (url.password !== '') { - output += ':' + url.password; + } + function multipartFormDataParser(input, mimeType) { + assert(mimeType !== 'failure' && mimeType.essence === 'multipart/form-data'); + const boundaryString = mimeType.parameters.get('boundary'); + if (boundaryString === void 0) { + throw parsingError('missing boundary in content-type header'); + } + const boundary = Buffer.from(`--${boundaryString}`, 'utf8'); + const entryList = []; + const position = { position: 0 }; + const firstBoundaryIndex = input.indexOf(boundary); + if (firstBoundaryIndex === -1) { + throw parsingError('no boundary found in multipart body'); + } + position.position = firstBoundaryIndex; + while (true) { + if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) { + position.position += boundary.length; + } else { + throw parsingError('expected a value starting with -- and the boundary'); + } + if (bufferStartsWith(input, dd, position)) { + return entryList; + } + if (input[position.position] !== 13 || input[position.position + 1] !== 10) { + throw parsingError('expected CRLF'); + } + position.position += 2; + const result = parseMultipartFormDataHeaders(input, position); + let { name, filename, contentType, encoding } = result; + position.position += 2; + let body; + { + const boundaryIndex = input.indexOf(boundary.subarray(2), position.position); + if (boundaryIndex === -1) { + throw parsingError('expected boundary after body'); + } + body = input.subarray(position.position, boundaryIndex - 4); + position.position += body.length; + if (encoding === 'base64') { + body = Buffer.from(body.toString(), 'base64'); } - output += '@'; } - output += serializeHost(url.host); - if (url.port !== null) { - output += ':' + url.port; + if (input[position.position] !== 13 || input[position.position + 1] !== 10) { + throw parsingError('expected CRLF'); + } else { + position.position += 2; } - } else if (url.host === null && url.scheme === 'file') { - output += '//'; - } - if (url.cannotBeABaseURL) { - output += url.path[0]; - } else { - for (const string of url.path) { - output += '/' + string; + let value; + if (filename !== null) { + contentType ??= 'text/plain'; + if (!isAsciiString(contentType)) { + contentType = ''; + } + value = new File([body], filename, { type: contentType }); + } else { + value = decoderIgnoreBOM.decode(Buffer.from(body)); } + assert(webidl.is.USVString(name)); + assert((typeof value === 'string' && webidl.is.USVString(value)) || webidl.is.File(value)); + entryList.push(makeEntry(name, value, filename)); } - if (url.query !== null) { - output += '?' + url.query; + } + function parseContentDispositionAttribute(input, position) { + if (input[position.position] === 59) { + position.position++; + } + collectASequenceOfBytes(char => char === 32 || char === 9, input, position); + const attributeName = collectASequenceOfBytes( + char => isToken(char) && char !== 61 && char !== 42, + // not = or * + input, + position + ); + if (attributeName.length === 0) { + return null; } - if (!excludeFragment && url.fragment !== null) { - output += '#' + url.fragment; + const attrNameStr = attributeName.toString('ascii').toLowerCase(); + const isExtended = input[position.position] === 42; + if (isExtended) { + position.position++; } - return output; - } - function serializeOrigin(tuple) { - let result = tuple.scheme + '://'; - result += serializeHost(tuple.host); - if (tuple.port !== null) { - result += ':' + tuple.port; + if (input[position.position] !== 61) { + return null; } - return result; + position.position++; + collectASequenceOfBytes(char => char === 32 || char === 9, input, position); + let value; + if (isExtended) { + const headerValue = collectASequenceOfBytes( + char => char !== 32 && char !== 13 && char !== 10 && char !== 59, + // not space, CRLF, or ; + input, + position + ); + if ( + (headerValue[0] !== 117 && headerValue[0] !== 85) || // u or U + (headerValue[1] !== 116 && headerValue[1] !== 84) || // t or T + (headerValue[2] !== 102 && headerValue[2] !== 70) || // f or F + headerValue[3] !== 45 || // - + headerValue[4] !== 56 + ) { + throw parsingError("unknown encoding, expected utf-8''"); + } + value = decodeURIComponent(decoder.decode(headerValue.subarray(7))); + } else if (input[position.position] === 34) { + position.position++; + const quotedValue = collectASequenceOfBytes( + char => char !== 10 && char !== 13 && char !== 34, + // not LF, CR, or " + input, + position + ); + if (input[position.position] !== 34) { + throw parsingError('Closing quote not found'); + } + position.position++; + value = decoder.decode(quotedValue).replace(/%0A/gi, '\n').replace(/%0D/gi, '\r').replace(/%22/g, '"'); + } else { + const tokenValue = collectASequenceOfBytes( + char => isToken(char) && char !== 59, + // not ; + input, + position + ); + value = decoder.decode(tokenValue); + } + return { name: attrNameStr, value, extended: isExtended }; } - module2.exports.serializeURL = serializeURL; - module2.exports.serializeURLOrigin = function (url) { - switch (url.scheme) { - case 'blob': - try { - return module2.exports.serializeURLOrigin(module2.exports.parseURL(url.path[0])); - } catch (e) { - return 'null'; - } - case 'ftp': - case 'gopher': - case 'http': - case 'https': - case 'ws': - case 'wss': - return serializeOrigin({ - scheme: url.scheme, - host: url.host, - port: url.port - }); - case 'file': - return 'file://'; - default: - return 'null'; + 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) { + throw parsingError('header name is null'); + } + 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())) { + throw parsingError('header name does not match the field-name token production'); + } + if (input[position.position] !== 58) { + throw parsingError('expected :'); + } + position.position++; + collectASequenceOfBytes(char => char === 32 || char === 9, input, position); + switch (bufferToLowerCasedHeaderName(headerName)) { + case 'content-disposition': { + name = filename = null; + let filenameIsExtended = false; + const dispositionType = collectASequenceOfBytes(char => isToken(char), input, position); + if (dispositionType.toString('ascii').toLowerCase() !== 'form-data') { + throw parsingError('expected form-data for content-disposition header'); + } + while ( + position.position < input.length && + (input[position.position] !== 13 || input[position.position + 1] !== 10) + ) { + const attribute = parseContentDispositionAttribute(input, position); + if (!attribute) { + break; + } + if (attribute.name === 'name') { + name = attribute.value; + } else if (attribute.name === 'filename') { + if (attribute.extended) { + filename = attribute.value; + filenameIsExtended = true; + } else if (!filenameIsExtended) { + filename = attribute.value; + } + } + } + if (name === null) { + throw parsingError('name attribute is required in content-disposition header'); + } + 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) { + throw parsingError('expected CRLF'); + } else { + position.position += 2; + } } - }; - module2.exports.basicURLParse = function (input, options) { - if (options === void 0) { - options = {}; + } + function collectASequenceOfBytes(condition, input, position) { + let start = position.position; + while (start < input.length && condition(input[start])) { + ++start; } - const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); - if (usm.failure) { - return 'failure'; + 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++; } - return usm.url; - }; - module2.exports.setTheUsername = function (url, username) { - url.username = ''; - const decoded = punycode.ucs2.decode(username); - for (let i = 0; i < decoded.length; ++i) { - url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + if (trailing) { + while (trail > 0 && predicate(buf[trail])) trail--; } - }; - module2.exports.setThePassword = function (url, password) { - url.password = ''; - const decoded = punycode.ucs2.decode(password); - for (let i = 0; i < decoded.length; ++i) { - url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + 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; } - }; - module2.exports.serializeHost = serializeHost; - module2.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; - module2.exports.serializeInteger = function (integer) { - return String(integer); - }; - module2.exports.parseURL = function (input, options) { - if (options === void 0) { - options = {}; + for (let i = 0; i < start.length; i++) { + if (start[i] !== buffer[position.position + i]) { + return false; + } } - return module2.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); + return true; + } + function parsingError(cause) { + return new TypeError('Failed to parse body as FormData.', { cause: new TypeError(cause) }); + } + function isCTL(char) { + return char <= 31 || char === 127; + } + function isTSpecial(char) { + return ( + char === 40 || // ( + char === 41 || // ) + char === 60 || // < + char === 62 || // > + char === 64 || // @ + char === 44 || // , + char === 59 || // ; + char === 58 || // : + char === 92 || // \ + char === 34 || // " + char === 47 || // / + char === 91 || // [ + char === 93 || // ] + char === 63 || // ? + char === 61 + ); + } + function isToken(char) { + return ( + char <= 127 && // ascii + char !== 32 && // space + char !== 9 && + !isCTL(char) && + !isTSpecial(char) + ); + } + module2.exports = { + multipartFormDataParser, + validateBoundary }; } }); -// node_modules/whatwg-url/lib/URL-impl.js -var require_URL_impl = __commonJS({ - 'node_modules/whatwg-url/lib/URL-impl.js'(exports2) { +// node_modules/undici/lib/web/fetch/body.js +var require_body = __commonJS({ + 'node_modules/undici/lib/web/fetch/body.js'(exports2, module2) { 'use strict'; - var usm = require_url_state_machine(); - exports2.implementation = class URLImpl { - constructor(constructorArgs) { - const url = constructorArgs[0]; - const base = constructorArgs[1]; - let parsedBase = null; - if (base !== void 0) { - parsedBase = usm.basicURLParse(base); - if (parsedBase === 'failure') { - throw new TypeError('Invalid base URL'); + var util = require_util(); + var { ReadableStreamFrom, readableStreamClose, fullyReadBody, extractMimeType } = require_util2(); + var { FormData, setFormDataState, getFormDataBoundary } = require_formdata(); + var { webidl } = require_webidl(); + var assert = require('node:assert'); + var { isErrored, isDisturbed } = require('node:stream'); + var { isUint8Array } = require('node:util/types'); + var { serializeAMimeType } = require_data_url(); + var { multipartFormDataParser } = require_formdata_parser(); + var { parseJSONFromBytes } = require_infra(); + var { utf8DecodeBytes } = require_encoding(); + var textEncoder = new TextEncoder(); + function noop3() {} + var 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; + let controller = null; + if (webidl.is.ReadableStream(object)) { + stream = object; + } else if (webidl.is.Blob(object)) { + stream = object.stream(); + } else { + stream = new ReadableStream({ + pull() {}, + start(c) { + controller = c; + }, + cancel() {}, + type: 'bytes' + }); + } + assert(webidl.is.ReadableStream(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 (webidl.is.URLSearchParams(object)) { + source = object.toString(); + type = 'application/x-www-form-urlencoded;charset=UTF-8'; + } else if (webidl.is.BufferSource(object)) { + source = webidl.util.getCopyOfBytesHeldByBufferSource(object); + } else if (webidl.is.FormData(object)) { + const boundary = getFormDataBoundary(object); + const prefix = `--${boundary}\r +Content-Disposition: form-data`; + const formdataEscape = 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="${formdataEscape(normalizeLinefeeds(name))}"\r +\r +${normalizeLinefeeds(value)}\r +` + ); + blobParts.push(chunk2); + length += chunk2.byteLength; + } else { + const chunk2 = textEncoder.encode( + `${prefix}; name="${formdataEscape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${formdataEscape(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 parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); - if (parsedURL === 'failure') { - throw new TypeError('Invalid URL'); + const chunk = textEncoder.encode(`--${boundary}--\r +`); + blobParts.push(chunk); + length += chunk.byteLength; + if (hasUnknownSizeValue) { + length = null; } - this._url = parsedURL; - } - get href() { - return usm.serializeURL(this._url); - } - set href(v) { - const parsedURL = usm.basicURLParse(v); - if (parsedURL === 'failure') { - throw new TypeError('Invalid URL'); + 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 (webidl.is.Blob(object)) { + source = object; + length = object.size; + if (object.type) { + type = object.type; } - this._url = parsedURL; - } - get origin() { - return usm.serializeURLOrigin(this._url); + } 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 = webidl.is.ReadableStream(object) ? object : ReadableStreamFrom(object); } - get protocol() { - return this._url.scheme + ':'; + if (typeof source === 'string' || isUint8Array(source)) { + action = () => { + length = typeof source === 'string' ? Buffer.byteLength(source) : source.length; + return source; + }; } - set protocol(v) { - usm.basicURLParse(v + ':', { url: this._url, stateOverride: 'scheme start' }); + if (action != null) { + (async () => { + const result = action(); + const iterator2 = result?.[Symbol.asyncIterator]?.(); + if (iterator2) { + for await (const bytes of iterator2) { + if (isErrored(stream)) break; + if (bytes.length) { + controller.enqueue(new Uint8Array(bytes)); + } + } + } else if (result?.length && !isErrored(stream)) { + controller.enqueue(typeof result === 'string' ? textEncoder.encode(result) : new Uint8Array(result)); + } + queueMicrotask(() => readableStreamClose(controller)); + })(); } - get username() { - return this._url.username; + const body = { stream, source, length }; + return [body, type]; + } + function safelyExtractBody(object, keepalive = false) { + if (webidl.is.ReadableStream(object)) { + assert(!util.isDisturbed(object), 'The body has already been consumed.'); + assert(!object.locked, 'The stream is locked.'); } - set username(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; + return extractBody(object, keepalive); + } + function cloneBody(body) { + const { 0: out1, 1: out2 } = body.stream.tee(); + body.stream = out1; + return { + stream: out2, + length: body.length, + source: body.source + }; + } + function bodyMixinMethods(instance, getInternalState) { + const methods = { + blob() { + return consumeBody( + this, + bytes => { + let mimeType = bodyMimeType(getInternalState(this)); + if (mimeType === null) { + mimeType = ''; + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType); + } + return new Blob([bytes], { type: mimeType }); + }, + instance, + getInternalState + ); + }, + arrayBuffer() { + return consumeBody( + this, + bytes => { + return new Uint8Array(bytes).buffer; + }, + instance, + getInternalState + ); + }, + text() { + return consumeBody(this, utf8DecodeBytes, instance, getInternalState); + }, + json() { + return consumeBody(this, parseJSONFromBytes, instance, getInternalState); + }, + formData() { + return consumeBody( + this, + value => { + const mimeType = bodyMimeType(getInternalState(this)); + if (mimeType !== null) { + switch (mimeType.essence) { + case 'multipart/form-data': { + const parsed = multipartFormDataParser(value, mimeType); + const fd = new FormData(); + setFormDataState(fd, 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, + getInternalState + ); + }, + bytes() { + return consumeBody( + this, + bytes => { + return new Uint8Array(bytes); + }, + instance, + getInternalState + ); + }, + textStream() { + const this_ = getInternalState(this); + if (bodyUnusable(this_)) { + throw new TypeError('Body is unusable: Body has already been read'); + } + if (this_.body == null) { + let controller; + const emptyStream = new ReadableStream( + { + start: c => { + controller = c; + }, + pull: () => Promise.resolve(), + cancel: () => Promise.resolve() + }, + { + size: () => 1 + } + ); + controller.close(); + return emptyStream; + } + const stream = this_.body.stream; + const decoder = new TextDecoderStream('UTF-8'); + return stream.pipeThrough(decoder); } - usm.setTheUsername(this._url, v); + }; + return methods; + } + function mixinBody(prototype, getInternalState) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype, getInternalState)); + } + function consumeBody(object, convertBytesToJSValue, instance, getInternalState) { + try { + webidl.brandCheck(object, instance); + } catch (e) { + return Promise.reject(e); } - get password() { - return this._url.password; + object = getInternalState(object); + if (bodyUnusable(object)) { + return Promise.reject(new TypeError('Body is unusable: Body has already been read')); } - set password(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; + const promise = Promise.withResolvers(); + const errorSteps = promise.reject; + const successSteps = data => { + try { + promise.resolve(convertBytesToJSValue(data)); + } catch (e) { + errorSteps(e); } - usm.setThePassword(this._url, v); + }; + if (object.body == null) { + successSteps(Buffer.allocUnsafe(0)); + return promise.promise; } - get host() { - const url = this._url; - if (url.host === null) { - return ''; + fullyReadBody(object.body, successSteps, errorSteps); + return promise.promise; + } + function bodyUnusable(object) { + const body = object.body; + return body != null && (body.stream.locked || util.isDisturbed(body.stream)); + } + function bodyMimeType(requestOrResponse) { + const headers = requestOrResponse.headersList; + const mimeType = extractMimeType(headers); + if (mimeType === 'failure') { + return null; + } + return mimeType; + } + module2.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody, + streamRegistry, + bodyUnusable + }; + } +}); + +// node_modules/undici/lib/dispatcher/client-h1.js +var require_client_h1 = __commonJS({ + 'node_modules/undici/lib/dispatcher/client-h1.js'(exports2, module2) { + 'use strict'; + var assert = 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, + 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, + kClosed + } = require_symbols(); + var constants3 = require_constants2(); + var EMPTY_BUF = Buffer.alloc(0); + var FastBuffer = Buffer[Symbol.species]; + var removeAllListeners = util.removeAllListeners; + var kIdleSocketValidation = /* @__PURE__ */ Symbol('kIdleSocketValidation'); + var kIdleSocketValidationTimeout = /* @__PURE__ */ Symbol('kIdleSocketValidationTimeout'); + var kSocketUsed = /* @__PURE__ */ Symbol('kSocketUsed'); + var extractBody; + function lazyllhttp() { + const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0; + let mod; + let useWasmSIMD = process.arch !== 'ppc64'; + if (process.env.UNDICI_NO_WASM_SIMD === '1') { + useWasmSIMD = false; + } else if (process.env.UNDICI_NO_WASM_SIMD === '0') { + useWasmSIMD = true; + } + if (useWasmSIMD) { + try { + mod = new WebAssembly.Module(require_llhttp_simd_wasm()); + } catch {} + } + if (!mod) { + mod = new WebAssembly.Module(llhttpWasmData || require_llhttp_wasm()); + } + return new WebAssembly.Instance(mod, { + env: { + /** + * @param {number} p + * @param {number} at + * @param {number} len + * @returns {number} + */ + wasm_on_url: (p, at, len) => { + return 0; + }, + /** + * @param {number} p + * @param {number} at + * @param {number} len + * @returns {number} + */ + wasm_on_status: (p, at, len) => { + assert(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)); + }, + /** + * @param {number} p + * @returns {number} + */ + wasm_on_message_begin: p => { + assert(currentParser.ptr === p); + return currentParser.onMessageBegin(); + }, + /** + * @param {number} p + * @param {number} at + * @param {number} len + * @returns {number} + */ + wasm_on_header_field: (p, at, len) => { + assert(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)); + }, + /** + * @param {number} p + * @param {number} at + * @param {number} len + * @returns {number} + */ + wasm_on_header_value: (p, at, len) => { + assert(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)); + }, + /** + * @param {number} p + * @param {number} statusCode + * @param {0|1} upgrade + * @param {0|1} shouldKeepAlive + * @returns {number} + */ + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert(currentParser.ptr === p); + return currentParser.onHeadersComplete(statusCode, upgrade === 1, shouldKeepAlive === 1); + }, + /** + * @param {number} p + * @param {number} at + * @param {number} len + * @returns {number} + */ + wasm_on_body: (p, at, len) => { + assert(currentParser.ptr === p); + const start = at - currentBufferPtr + currentBufferRef.byteOffset; + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)); + }, + /** + * @param {number} p + * @returns {number} + */ + wasm_on_message_complete: p => { + assert(currentParser.ptr === p); + return currentParser.onMessageComplete(); + } } - if (url.port === null) { - return usm.serializeHost(url.host); + }); + } + var llhttpInstance = null; + var currentParser = null; + var currentBufferRef = null; + var currentBufferSize = 0; + var currentBufferPtr = null; + var currentBuffer = 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 Parser = class { + /** + * @param {import('./client.js')} client + * @param {import('net').Socket} socket + * @param {*} llhttp + */ + constructor(client, socket, { exports: exports3 }) { + this.llhttp = exports3; + this.ptr = this.llhttp.llhttp_alloc(constants3.TYPE.RESPONSE); + this.client = client; + this.socket = socket; + this.timeout = null; + this.timeoutWeakRef = new WeakRef(this); + this.timeoutValue = null; + this.timeoutType = null; + this.statusCode = 0; + 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 = -1; + this.connectionKeepAlive = false; + 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, this.timeoutWeakRef); + } else { + this.timeout = setTimeout(onParserTimeout, delay, this.timeoutWeakRef); + this.timeout?.unref(); + } + } + this.timeoutValue = delay; + } else if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } } - return usm.serializeHost(url.host) + ':' + usm.serializeInteger(url.port); + this.timeoutType = type; } - set host(v) { - if (this._url.cannotBeABaseURL) { + resume() { + if (this.socket.destroyed || !this.paused) { return; } - usm.basicURLParse(v, { url: this._url, stateOverride: 'host' }); - } - get hostname() { - if (this._url.host === null) { - return ''; + assert(this.ptr != null); + assert(currentParser === null); + this.llhttp.llhttp_resume(this.ptr); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } } - return usm.serializeHost(this._url.host); - } - set hostname(v) { - if (this._url.cannotBeABaseURL) { - return; + 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); } - usm.basicURLParse(v, { url: this._url, stateOverride: 'hostname' }); } - get port() { - if (this._url.port === null) { - return ''; + /** + * @param {Buffer} chunk + */ + execute(chunk) { + assert(currentParser === null); + assert(this.ptr != null); + assert(!this.paused); + const { socket, llhttp } = this; + if (chunk.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr); + } + currentBufferSize = Math.ceil(chunk.length / 4096) * 4096; + currentBufferPtr = llhttp.malloc(currentBufferSize); + } + if ( + currentBuffer === null || + currentBuffer.buffer !== llhttp.memory.buffer || + currentBuffer.byteOffset !== currentBufferPtr || + currentBuffer.byteLength !== currentBufferSize + ) { + currentBuffer = new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize); + } + currentBuffer.set(chunk); + try { + let ret; + try { + currentBufferRef = chunk; + currentParser = this; + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, chunk.length); + } finally { + currentParser = null; + currentBufferRef = null; + } + if (ret !== constants3.ERROR.OK) { + const data = chunk.subarray(llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr); + if (ret === constants3.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data); + } else if (ret === constants3.ERROR.PAUSED) { + this.paused = true; + socket.unshift(data); + } else { + throw this.createError(ret, data); + } + } + } catch (err) { + util.destroy(socket, err); } - return usm.serializeInteger(this._url.port); } - set port(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; + finish() { + assert(currentParser === null); + assert(this.ptr != null); + const { llhttp } = this; + let ret; + try { + currentParser = this; + ret = llhttp.llhttp_finish(this.ptr); + } finally { + currentParser = null; } - if (v === '') { - this._url.port = null; - } else { - usm.basicURLParse(v, { url: this._url, stateOverride: 'port' }); + 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); } - get pathname() { - if (this._url.cannotBeABaseURL) { - return this._url.path[0]; + createError(ret, data) { + const { llhttp, contentLength, bytesRead } = this; + if (contentLength !== -1 && bytesRead !== contentLength) { + return new ResponseContentLengthMismatchError(); } - if (this._url.path.length === 0) { - return ''; + 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 '/' + this._url.path.join('/'); + return new HTTPParserError(message, constants3.ERROR[ret], data); + } + destroy() { + assert(currentParser === null); + assert(this.ptr != 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; + } + /** + * @param {Buffer} buf + * @returns {0} + */ + onStatus(buf) { + this.statusText = buf.toString(); + return 0; } - set pathname(v) { - if (this._url.cannotBeABaseURL) { - return; + /** + * @returns {0|-1} + */ + onMessageBegin() { + const { socket, client } = this; + if (socket.destroyed) { + return -1; + } + if (client[kRunning] === 0) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))); + return -1; } - this._url.path = []; - usm.basicURLParse(v, { url: this._url, stateOverride: 'path start' }); + const request2 = client[kQueue][client[kRunningIdx]]; + if (!request2) { + return -1; + } + request2.onResponseStarted(); + return 0; } - get search() { - if (this._url.query === null || this._url.query === '') { - return ''; + /** + * @param {Buffer} buf + * @returns {number} + */ + 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]); } - return '?' + this._url.query; + this.trackHeader(buf.length); + return 0; } - set search(v) { - const url = this._url; - if (v === '') { - url.query = null; - return; + /** + * @param {Buffer} buf + * @returns {number} + */ + 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.connectionKeepAlive = + this.headers[len - 1].length === 10 && + util.bufferToLowerCasedHeaderName(this.headers[len - 1]) === 'keep-alive'; + } + } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === 'content-length') { + if (this.contentLength === -1) { + this.contentLength = 0; + } + for (let i = 0; i < buf.length; i++) { + this.contentLength = this.contentLength * 10 + (buf[i] - 48); + } } - const input = v[0] === '?' ? v.substring(1) : v; - url.query = ''; - usm.basicURLParse(input, { url, stateOverride: 'query' }); + this.trackHeader(buf.length); + return 0; } - get hash() { - if (this._url.fragment === null || this._url.fragment === '') { - return ''; + /** + * @param {number} len + */ + trackHeader(len) { + this.headersSize += len; + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()); } - return '#' + this._url.fragment; } - set hash(v) { - if (v === '') { - this._url.fragment = null; - return; + /** + * @param {Buffer} head + */ + onUpgrade(head) { + const { upgrade, client, socket, headers, statusCode } = this; + assert(upgrade); + assert(client[kSocket] === socket); + assert(!socket.destroyed); + assert(!this.paused); + assert((headers.length & 1) === 0); + const request2 = client[kQueue][client[kRunningIdx]]; + assert(request2); + assert(request2.upgrade || request2.method === 'CONNECT'); + this.statusCode = 0; + this.statusText = ''; + this.shouldKeepAlive = false; + 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.onRequestUpgrade(statusCode, headers, socket); + } catch (err) { + util.destroy(socket, err); + } + client[kResume](); + } + /** + * @param {number} statusCode + * @param {boolean} upgrade + * @param {boolean} shouldKeepAlive + * @returns {number} + */ + onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this; + if (socket.destroyed) { + return -1; + } + if (client[kRunning] === 0) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))); + return -1; + } + const request2 = client[kQueue][client[kRunningIdx]]; + if (!request2) { + return -1; + } + assert(!this.upgrade); + assert(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; + } + assert(this.timeoutType === TIMEOUT_HEADERS); + this.statusCode = statusCode; + this.shouldKeepAlive = + shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD. + (request2.method === 'HEAD' && !socket[kReset] && this.connectionKeepAlive); + 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') { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + if (upgrade) { + assert(client[kRunning] === 1); + this.upgrade = true; + return 2; + } + assert((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[kReset] = true; + } else { + client[kKeepAliveTimeoutValue] = timeout; + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; + } + } else { + socket[kReset] = true; + } + const pause = request2.onResponseStart(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; + } + /** + * @param {Buffer} buf + * @returns {number} + */ + onBody(buf) { + const { client, socket, statusCode, maxResponseSize } = this; + if (socket.destroyed) { + return -1; + } + const request2 = client[kQueue][client[kRunningIdx]]; + assert(request2); + assert(this.timeoutType === TIMEOUT_BODY); + if (this.timeout) { + if (this.timeout.refresh) { + this.timeout.refresh(); + } } - const input = v[0] === '#' ? v.substring(1) : v; - this._url.fragment = ''; - usm.basicURLParse(input, { url: this._url, stateOverride: 'fragment' }); + assert(statusCode >= 200); + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()); + return -1; + } + this.bytesRead += buf.length; + if (request2.onResponseData(buf) === false) { + return constants3.ERROR.PAUSED; + } + return 0; } - toJSON() { - return this.href; + /** + * @returns {number} + */ + onMessageComplete() { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this; + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1; + } + if (upgrade) { + return 0; + } + assert(statusCode >= 100); + assert((this.headers.length & 1) === 0); + const request2 = client[kQueue][client[kRunningIdx]]; + assert(request2); + this.statusCode = 0; + this.statusText = ''; + this.bytesRead = 0; + this.contentLength = -1; + this.keepAlive = ''; + this.connectionKeepAlive = false; + this.headers = []; + this.headersSize = 0; + if (statusCode < 200) { + return 0; + } + if (request2.method !== 'HEAD' && contentLength !== -1 && bytesRead !== contentLength) { + util.destroy(socket, new ResponseContentLengthMismatchError()); + return -1; + } + request2.onResponseEnd(headers); + client[kQueue][client[kRunningIdx]++] = null; + socket[kSocketUsed] = client[kPending] === 0; + if (socket[kWriting]) { + assert(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[kReset] && 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](); + } + return 0; } }; - } -}); - -// node_modules/whatwg-url/lib/URL.js -var require_URL = __commonJS({ - 'node_modules/whatwg-url/lib/URL.js'(exports2, module2) { - 'use strict'; - var conversions = require_lib2(); - var utils = require_utils3(); - var Impl = require_URL_impl(); - var impl = utils.implSymbol; - function URL2(url) { - if (!this || this[impl] || !(this instanceof URL2)) { - throw new TypeError( - "Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function." - ); - } - if (arguments.length < 1) { - throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + ' present.'); - } - const args = []; - for (let i = 0; i < arguments.length && i < 2; ++i) { - args[i] = arguments[i]; + function onParserTimeout(parserWeakRef) { + const parser = parserWeakRef.deref(); + if (!parser) { + return; } - args[0] = conversions['USVString'](args[0]); - if (args[1] !== void 0) { - args[1] = conversions['USVString'](args[1]); + const { socket, timeoutType, client, paused } = parser; + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!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) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); + util.destroy(socket, new InformationalError('socket idle timeout')); } - module2.exports.setup(this, args); } - URL2.prototype.toJSON = function toJSON() { - if (!this || !module2.exports.is(this)) { - throw new TypeError('Illegal invocation'); - } - const args = []; - for (let i = 0; i < arguments.length && i < 0; ++i) { - args[i] = arguments[i]; + function connectH1(client, socket) { + client[kSocket] = socket; + if (!llhttpInstance) { + llhttpInstance = lazyllhttp(); + } + if (socket.errored) { + throw socket.errored; + } + if (socket.destroyed) { + throw new SocketError('destroyed'); + } + socket[kNoRef] = false; + socket[kWriting] = false; + socket[kReset] = false; + socket[kBlocking] = false; + socket[kIdleSocketValidation] = 0; + socket[kIdleSocketValidationTimeout] = null; + socket[kSocketUsed] = false; + socket[kParser] = new Parser(client, socket, llhttpInstance); + util.addListener(socket, 'error', onHttpSocketError); + util.addListener(socket, 'readable', onHttpSocketReadable); + util.addListener(socket, 'end', onHttpSocketEnd); + util.addListener(socket, 'close', onHttpSocketClose); + socket[kClosed] = false; + socket.on('close', onSocketClose); + return { + version: 'h1', + defaultPipelining: 1, + write(request2) { + return writeH1(client, request2); + }, + resume() { + resumeH1(client); + }, + /** + * @param {Error|undefined} err + * @param {() => void} callback + */ + destroy(err, callback) { + if (socket[kClosed]) { + queueMicrotask(callback); + } else { + socket.on('close', callback); + socket.destroy(err); + } + }, + /** + * @returns {boolean} + */ + get destroyed() { + return socket.destroyed; + }, + /** + * @param {import('../core/request.js')} request + * @returns {boolean} + */ + busy(request2) { + if (socket[kWriting] || socket[kReset] || socket[kBlocking] || socket[kIdleSocketValidation] === 1) { + 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 onHttpSocketError(err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + const parser = this[kParser]; + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + const parserErr = parser.finish(); + if (parserErr) { + this[kError] = parserErr; + this[kClient][kOnError](parserErr); + } + return; + } + this[kError] = err; + this[kClient][kOnError](err); + } + function onHttpSocketReadable() { + this[kParser]?.readMore(); + } + function onHttpSocketEnd() { + const parser = this[kParser]; + if (parser.statusCode && !parser.shouldKeepAlive) { + const parserErr = parser.finish(); + if (parserErr) { + util.destroy(this, parserErr); + } + return; + } + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); + } + function onHttpSocketClose() { + const parser = this[kParser]; + clearIdleSocketValidation(this); + if (parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + this[kError] = parser.finish() || this[kError]; + } + this[kParser].destroy(); + this[kParser] = null; + } + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); + const client = this[kClient]; + client[kSocket] = null; + client[kHTTPContext] = null; + if (client.destroyed) { + assert(client[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + util.errorRequest(client, request2, err); + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + const request2 = client[kQueue][client[kRunningIdx]]; + client[kQueue][client[kRunningIdx]++] = null; + util.errorRequest(client, request2, err); + } + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + client[kResume](); + } + function onSocketClose() { + this[kClosed] = true; + } + function clearIdleSocketValidation(socket) { + if (socket[kIdleSocketValidationTimeout]) { + clearTimeout(socket[kIdleSocketValidationTimeout]); + socket[kIdleSocketValidationTimeout] = null; + } + socket[kIdleSocketValidation] = 0; + } + function scheduleIdleSocketValidation(client, socket) { + socket[kIdleSocketValidation] = 1; + socket[kIdleSocketValidationTimeout] = setTimeout(() => { + socket[kIdleSocketValidationTimeout] = null; + socket[kIdleSocketValidation] = 2; + if (client[kSocket] === socket && !socket.destroyed) { + client[kResume](); + } + }, 0); + socket[kIdleSocketValidationTimeout].unref?.(); + } + 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[kRunning] === 0 && client[kPending] > 0 && socket[kSocketUsed]) { + if (socket[kIdleSocketValidation] === 0) { + scheduleIdleSocketValidation(client, socket); + socket[kParser].readMore(); + if (socket.destroyed) { + return; + } + return; + } + if (socket[kIdleSocketValidation] === 1) { + socket[kParser].readMore(); + if (socket.destroyed) { + return; + } + return; + } + } + if (client[kRunning] === 0) { + socket[kParser].readMore(); + if (socket.destroyed) { + return; + } + } + 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: path2, 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]; + clearIdleSocketValidation(socket); + 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.onRequestStart(abort, null); + } catch (err) { + util.errorRequest(client, request2, err); + } + if (request2.aborted) { + return false; + } + if (method === 'HEAD') { + socket[kReset] = true; + } + if (upgrade || method === 'CONNECT') { + socket[kReset] = true; + } + if (reset != null) { + socket[kReset] = reset; + } + if (client[kMaxRequests] && ++socket[kCounter] >= client[kMaxRequests]) { + socket[kReset] = true; + } + if (blocking) { + socket[kBlocking] = true; + } + if (socket.setTypeOfService) { + socket.setTypeOfService(request2.typeOfService); + } + let header = `${method} ${path2} 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[kReset]) { + 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 { + assert(false); + } + return true; + } + function writeStream(abort, body, client, request2, socket, contentLength, header, expectsPayload) { + assert(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; + assert(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 { + assert(contentLength === null, 'no body must not have content length'); + socket.write( + `${header}\r +`, + 'latin1' + ); + } + } else if (util.isBuffer(body)) { + assert(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[kReset] = true; + } + } + request2.onRequestSent(); + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeBlob(abort, body, client, request2, socket, contentLength, header, expectsPayload) { + 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[kReset] = true; + } + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeIterable(abort, body, client, request2, socket, contentLength, header, expectsPayload) { + assert(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((resolve2, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve2; + } + }); + 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 { + /** + * + * @param {object} arg + * @param {AbortCallback} arg.abort + * @param {import('net').Socket} arg.socket + * @param {import('../core/request.js')} arg.request + * @param {number} arg.contentLength + * @param {import('./client.js')} arg.client + * @param {boolean} arg.expectsPayload + * @param {string} arg.header + */ + 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; + } + /** + * @param {string|Uint8Array} chunk + * @returns + */ + 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 = chunk instanceof Uint8Array ? chunk.byteLength : 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[kReset] = 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; + } + /** + * @returns {void} + */ + 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](); + } + /** + * @param {Error} [err] + * @returns {void} + */ + destroy(err) { + const { socket, client, abort } = this; + socket[kWriting] = false; + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request'); + abort(err); + } + } + }; + module2.exports = connectH1; + } +}); + +// node_modules/undici/lib/dispatcher/client-h2.js +var require_client_h2 = __commonJS({ + 'node_modules/undici/lib/dispatcher/client-h2.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { pipeline } = require('node:stream'); + var util = require_util(); + var { + RequestContentLengthMismatchError, + RequestAbortedError, + SocketError, + InformationalError, + InvalidArgumentError, + HeadersTimeoutError, + BodyTimeoutError + } = require_errors(); + var { + kUrl, + kReset, + kClient, + kRunning, + kPending, + kQueue, + kPendingIdx, + kRunningIdx, + kError, + kSocket, + kStrictContentLength, + kOnError, + kMaxConcurrentStreams, + kPingInterval, + kHTTP2Session, + kHTTP2InitialWindowSize, + kHTTP2ConnectionWindowSize, + kHostAuthority, + kResume, + kSize, + kHTTPContext, + kClosed, + kKeepAliveDefaultTimeout, + kHeadersTimeout, + kBodyTimeout, + kEnableConnectProtocol, + kRemoteSettings, + kHTTP2Stream, + kHTTP2SessionState + } = require_symbols(); + var { channels } = require_diagnostics(); + var kOpenStreams = /* @__PURE__ */ Symbol('open streams'); + var kRequestStreamId = /* @__PURE__ */ Symbol('request stream id'); + var kRequestStream = /* @__PURE__ */ Symbol('request stream'); + var kRequestStreamCleanup = /* @__PURE__ */ Symbol('request stream cleanup'); + var kRequestStreamState = /* @__PURE__ */ Symbol('request stream state'); + var kReceivedGoAway = /* @__PURE__ */ Symbol('received goaway'); + var extractBody; + 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_HEADER_PROTOCOL, + NGHTTP2_NO_ERROR, + NGHTTP2_REFUSED_STREAM + } + } = http2; + function getGoAwayError(session, errorCode) { + return ( + session[kError] || + (errorCode === NGHTTP2_NO_ERROR + ? new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${errorCode}`) + : new SocketError(`HTTP/2: "GOAWAY" frame received with code ${errorCode}`, util.getSocketInfo(session[kSocket]))) + ); + } + function resetHttp2Session(session, err) { + const client = session[kClient]; + const socket = session[kSocket]; + if (client[kHTTP2Session] === session) { + client[kSocket] = null; + client[kHTTPContext] = null; + client[kHTTP2Session] = null; + } + if (socket != null && socket[kError] == null) { + socket[kError] = err; + } + if (!session.closed && !session.destroyed) { + try { + session.destroy(err); + } catch {} + } + util.destroy(socket, err); + } + function getGoAwayPendingIdx(client, lastStreamID) { + const maxAcceptedStreamID = Number.isInteger(lastStreamID) ? lastStreamID : Number.MAX_SAFE_INTEGER; + for (let i = client[kRunningIdx]; i < client[kPendingIdx]; i++) { + const request2 = client[kQueue][i]; + if (request2 == null) { + continue; + } + if (typeof request2[kRequestStreamId] !== 'number' || request2[kRequestStreamId] > maxAcceptedStreamID) { + return i; + } + } + return client[kPendingIdx]; + } + function detachRequestFromStream(request2) { + request2[kRequestStreamId] = null; + request2[kRequestStream] = null; + request2[kRequestStreamCleanup] = null; + } + function bindRequestToStream(request2, stream, cleanup) { + const previousCleanup = request2[kRequestStreamCleanup]; + const previousStream = request2[kRequestStream]; + detachRequestFromStream(request2); + previousCleanup?.(previousStream); + request2[kRequestStreamId] = stream.id; + request2[kRequestStream] = stream; + request2[kRequestStreamCleanup] = cleanup; + } + function clearRequestStream(request2) { + const cleanup = request2[kRequestStreamCleanup]; + const stream = request2[kRequestStream]; + detachRequestFromStream(request2); + cleanup?.(stream); + } + function requeueUnsentRequest(client, request2) { + client[kQueue].splice(client[kPendingIdx] + 1, 0, request2); + } + function completeRequest(client, request2, resetPendingIdx = false) { + const index = client[kQueue].indexOf(request2, client[kRunningIdx]); + if (index === -1 || index >= client[kPendingIdx]) { + return; + } + client[kQueue].splice(index, 1); + client[kPendingIdx]--; + if (resetPendingIdx && client[kPendingIdx] < client[kRunningIdx]) { + client[kPendingIdx] = client[kRunningIdx]; + } + } + function canRetryRequestAfterGoAway(request2) { + const { body } = request2; + return body == null || util.isBuffer(body) || util.isBlobLike(body); + } + function closeRequestStream(request2, code = NGHTTP2_REFUSED_STREAM) { + const stream = request2[kRequestStream]; + clearRequestStream(request2); + if (stream != null && !stream.destroyed && !stream.closed) { + try { + stream.close(code); + } catch {} + } + } + function connectH2(client, socket) { + client[kSocket] = socket; + const http2InitialWindowSize = client[kHTTP2InitialWindowSize]; + const http2ConnectionWindowSize = client[kHTTP2ConnectionWindowSize]; + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kMaxConcurrentStreams], + settings: { + // TODO(metcoder95): add support for PUSH + enablePush: false, + ...(http2InitialWindowSize != null ? { initialWindowSize: http2InitialWindowSize } : null) + } + }); + client[kSocket] = socket; + session[kOpenStreams] = 0; + session[kClient] = client; + session[kSocket] = socket; + session[kHTTP2SessionState] = { + idleTimeout: null, + ping: { + interval: client[kPingInterval] === 0 ? null : setInterval(onHttp2SendPing, client[kPingInterval], session).unref() + } + }; + session[kReceivedGoAway] = false; + session[kEnableConnectProtocol] = false; + session[kRemoteSettings] = false; + if (http2ConnectionWindowSize) { + util.addListener(session, 'connect', applyConnectionWindowSize.bind(session, http2ConnectionWindowSize)); + } + util.addListener(session, 'error', onHttp2SessionError); + util.addListener(session, 'frameError', onHttp2FrameError); + util.addListener(session, 'end', onHttp2SessionEnd); + util.addListener(session, 'goaway', onHttp2SessionGoAway); + util.addListener(session, 'close', onHttp2SessionClose); + util.addListener(session, 'remoteSettings', onHttp2RemoteSettings); + session.unref(); + client[kHTTP2Session] = session; + socket[kHTTP2Session] = session; + util.addListener(socket, 'error', onHttp2SocketError); + util.addListener(socket, 'end', onHttp2SocketEnd); + util.addListener(socket, 'close', onHttp2SocketClose); + socket[kClosed] = false; + socket.on('close', onSocketClose); + return { + version: 'h2', + defaultPipelining: Infinity, + /** + * @param {import('../core/request.js')} request + * @returns {boolean} + */ + write(request2) { + return writeH2(client, request2); + }, + /** + * @returns {void} + */ + resume() { + resumeH2(client); + }, + /** + * @param {Error | null} err + * @param {() => void} callback + */ + destroy(err, callback) { + if (socket[kClosed]) { + queueMicrotask(callback); + } else { + socket.destroy(err).on('close', callback); + } + }, + /** + * @type {boolean} + */ + get destroyed() { + return socket.destroyed; + }, + /** + * @param {import('../core/request.js')} request + * @returns {boolean} + */ + busy(request2) { + if (session[kRemoteSettings] === false && client[kRunning] > 0) { + return true; + } + if (client[kRunning] >= client[kMaxConcurrentStreams]) { + return true; + } + if (request2 != null) { + if (client[kRunning] > 0) { + if ((request2.upgrade === 'websocket' || request2.method === 'CONNECT') && session[kRemoteSettings] === false) + return true; + if ( + util.bodyLength(request2.body) !== 0 && + (util.isStream(request2.body) || util.isAsyncIterable(request2.body) || util.isFormDataLike(request2.body)) + ) + return true; + } else { + return ( + (request2.upgrade === 'websocket' || request2.method === 'CONNECT') && session[kRemoteSettings] === false + ); + } + } + return false; + } + }; + } + function resumeH2(client) { + const socket = client[kSocket]; + const session = client[kHTTP2Session]; + if (socket?.destroyed === false) { + if (client[kSize] === 0 || client[kMaxConcurrentStreams] === 0) { + socket.unref(); + session.unref(); + } else { + socket.ref(); + session.ref(); + } + if (client[kSize] === 0 && session[kOpenStreams] === 0) { + setHttp2IdleTimeout(session); + } else { + clearHttp2IdleTimeout(session); + } + } + } + function clearHttp2IdleTimeout(session) { + const state = session[kHTTP2SessionState]; + if (state?.idleTimeout != null) { + clearTimeout(state.idleTimeout); + state.idleTimeout = null; + } + } + function setHttp2IdleTimeout(session) { + const client = session[kClient]; + if (client[kHTTP2Session] !== session || session.closed || session.destroyed) { + return; + } + if (session[kOpenStreams] !== 0 || client[kSize] !== 0) { + clearHttp2IdleTimeout(session); + return; + } + const state = session[kHTTP2SessionState]; + if (state.idleTimeout == null) { + state.idleTimeout = setTimeout(onHttp2SessionIdleTimeout, client[kKeepAliveDefaultTimeout], session).unref(); + } + } + function onHttp2SessionIdleTimeout(session) { + const client = session[kClient]; + const socket = session[kSocket]; + const state = session[kHTTP2SessionState]; + state.idleTimeout = null; + if ( + client[kHTTP2Session] !== session || + session[kOpenStreams] !== 0 || + client[kSize] !== 0 || + session.closed || + session.destroyed + ) { + return; + } + const err = new InformationalError('socket idle timeout'); + socket[kError] = err; + util.destroy(socket, err); + } + function applyConnectionWindowSize(connectionWindowSize) { + try { + if (typeof this.setLocalWindowSize === 'function') { + this.setLocalWindowSize(connectionWindowSize); + } + } catch {} + } + function onHttp2RemoteSettings(settings) { + this[kClient][kMaxConcurrentStreams] = settings.maxConcurrentStreams ?? this[kClient][kMaxConcurrentStreams]; + if ( + this[kRemoteSettings] === true && + this[kEnableConnectProtocol] === true && + settings.enableConnectProtocol === false + ) { + const err = new InformationalError('HTTP/2: Server disabled extended CONNECT protocol against RFC-8441'); + this[kSocket][kError] = err; + this[kClient][kOnError](err); + return; + } + this[kEnableConnectProtocol] = settings.enableConnectProtocol ?? this[kEnableConnectProtocol]; + this[kRemoteSettings] = true; + this[kClient][kResume](); + } + function onHttp2SendPing(session) { + const state = session[kHTTP2SessionState]; + if ((session.closed || session.destroyed) && state.ping.interval != null) { + clearInterval(state.ping.interval); + state.ping.interval = null; + return; + } + session.ping(onPing.bind(session)); + function onPing(err, duration) { + const client = this[kClient]; + const socket = this[kSocket]; + if (err != null) { + const error2 = new InformationalError(`HTTP/2: "PING" errored - type ${err.message}`); + socket[kError] = error2; + client[kOnError](error2); + } else { + client.emit('ping', duration); + } + } + } + function onHttp2SessionError(err) { + assert(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 onHttp2SessionGoAway(errorCode, lastStreamID) { + if (this[kReceivedGoAway]) { + return; + } + this[kReceivedGoAway] = true; + const err = getGoAwayError(this, errorCode); + const client = this[kClient]; + const previousPendingIdx = client[kPendingIdx]; + const pendingIdx = getGoAwayPendingIdx(client, lastStreamID); + const retriableRequests = []; + for (let i = pendingIdx; i < previousPendingIdx; i++) { + const request2 = client[kQueue][i]; + if (request2 != null) { + closeRequestStream(request2); + if (canRetryRequestAfterGoAway(request2)) { + retriableRequests.push(request2); + } else { + util.errorRequest(client, request2, err); + } + } + } + if (pendingIdx !== previousPendingIdx) { + const remainingPendingRequests = client[kQueue].slice(previousPendingIdx); + client[kQueue].length = pendingIdx; + client[kQueue].push(...retriableRequests, ...remainingPendingRequests); + } + if (client[kHTTP2Session] === this) { + client[kSocket] = null; + client[kHTTPContext] = null; + client[kHTTP2Session] = null; + } + clearHttp2IdleTimeout(this); + if (!this.closed && !this.destroyed) { + this.close(); + } + client[kPendingIdx] = pendingIdx; + client.emit('disconnect', client[kUrl], [client], err); + client[kResume](); + } + function onHttp2SessionClose() { + const { [kClient]: client, [kHTTP2SessionState]: state, [kSocket]: socket } = this; + const err = socket[kError] || this[kError] || new SocketError('closed', util.getSocketInfo(socket)); + if (client[kHTTP2Session] === this) { + client[kSocket] = null; + client[kHTTPContext] = null; + client[kHTTP2Session] = null; + } + clearHttp2IdleTimeout(this); + if (state.ping.interval != null) { + clearInterval(state.ping.interval); + state.ping.interval = null; + } + if (client.destroyed) { + assert(client[kPending] === 0); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + if (request2 != null) { + util.errorRequest(client, request2, err); + } + } + } + } + function onHttp2SocketClose() { + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)); + const session = this[kHTTP2Session]; + const client = session[kClient]; + if (client[kSocket] !== this) { + if (session[kReceivedGoAway] || (client[kHTTP2Session] != null && client[kHTTP2Session] !== session)) { + return; + } + } + client[kSocket] = null; + client[kHTTPContext] = null; + if (client[kHTTP2Session] === session) { + client[kHTTP2Session] = null; + } + session.destroy(err); + client[kPendingIdx] = client[kRunningIdx]; + assert(client[kRunning] === 0); + client.emit('disconnect', client[kUrl], [client], err); + client[kResume](); + } + function onHttp2SocketError(err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID'); + this[kError] = err; + this[kClient][kOnError](err); + } + function onHttp2SocketEnd() { + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))); + } + function onSocketClose() { + this[kClosed] = true; + } + function noop3() {} + function closeStreamSession(stream) { + const session = stream[kHTTP2Session]; + stream[kHTTP2Session] = null; + session[kOpenStreams] -= 1; + if (session[kOpenStreams] === 0) { + session.unref(); + setHttp2IdleTimeout(session); + } + } + function onUpgradeStreamClose() { + this.off('error', noop3); + const state = this[kRequestStreamState]; + this[kRequestStreamState] = null; + failUpgradeStream(state, new InformationalError('HTTP/2: stream closed before response headers')); + closeStreamSession(this); + } + function onRequestStreamClose() { + const state = this[kRequestStreamState]; + if (state) { + releaseRequestStream(this); + if (state.pendingEnd && !state.request.aborted && !state.request.completed) { + state.request.onResponseEnd(state.trailers || {}); + state.finalizeRequest(); + } + } + this.off('data', onData); + this.off('error', noop3); + closeStreamSession(this); + this[kRequestStreamState] = null; + } + function shouldSendContentLength(method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'; + } + function buildRequestHeaders(reqHeaders) { + const headers = {}; + for (let n = 0; n < reqHeaders.length; n += 2) { + const key = reqHeaders[n + 0]; + const val = reqHeaders[n + 1]; + const current = headers[key]; + if (key === 'cookie') { + if (current != null) { + headers[key] = Array.isArray(current) ? (current.push(val), current) : [current, val]; + } else { + headers[key] = val; + } + continue; + } + if (typeof val === 'string') { + headers[key] = current ? `${current}, ${val}` : val; + continue; + } + for (let i = 0; i < val.length; i++) { + headers[key] = headers[key] ? `${headers[key]}, ${val[i]}` : val[i]; + } + } + return headers; + } + function removeUpgradeStreamListeners(stream) { + stream.off('response', onUpgradeResponse); + stream.off('error', onUpgradeStreamError); + stream.off('end', onUpgradeStreamEnd); + stream.off('timeout', onUpgradeStreamTimeout); + stream.off('error', noop3); + } + function releaseUpgradeStream(stream) { + if (stream == null) { + return; + } + const state = stream[kRequestStreamState]; + if (state == null) { + return; + } + const { request: request2 } = state; + if (request2[kRequestStream] === stream) { + detachRequestFromStream(request2); + } + removeUpgradeStreamListeners(stream); + if (!stream.destroyed && !stream.closed) { + stream.once('error', noop3); + } + } + function failUpgradeStream(state, err) { + if (state == null) { + return; + } + const { request: request2 } = state; + if (state.responseReceived || request2.aborted || request2.completed) { + return; + } + releaseUpgradeStream(state.stream); + state.abort(err, true); + } + function onUpgradeStreamError() { + const state = this[kRequestStreamState]; + if (typeof this.rstCode === 'number' && this.rstCode !== 0) { + failUpgradeStream(state, new InformationalError(`HTTP/2: "stream error" received - code ${this.rstCode}`)); + } else { + failUpgradeStream(state, new InformationalError('HTTP/2: stream errored before response headers')); + } + } + function onUpgradeStreamEnd() { + failUpgradeStream(this[kRequestStreamState], new InformationalError('HTTP/2: stream half-closed (remote)')); + } + function onUpgradeStreamTimeout() { + const state = this[kRequestStreamState]; + failUpgradeStream(state, new InformationalError(`HTTP/2: "stream timeout after ${state.headersTimeout}"`)); + } + function onUpgradeResponse(headers, _flags) { + const stream = this; + const state = stream[kRequestStreamState]; + const { request: request2 } = state; + state.responseReceived = true; + const statusCode = headers[HTTP2_HEADER_STATUS]; + delete headers[HTTP2_HEADER_STATUS]; + request2.onRequestUpgrade(statusCode, headers, stream); + if (request2.aborted || request2.completed) { + return; + } + removeUpgradeStreamListeners(stream); + detachRequestFromStream(request2); + state.finalizeRequest(); + } + function setupUpgradeStream(stream, state) { + const { request: request2, headersTimeout, session } = state; + stream[kHTTP2Stream] = true; + stream[kHTTP2Session] = session; + stream[kRequestStreamState] = state; + state.stream = stream; + bindRequestToStream(request2, stream, releaseUpgradeStream); + stream.once('response', onUpgradeResponse); + stream.on('error', onUpgradeStreamError); + stream.once('end', onUpgradeStreamEnd); + stream.on('timeout', onUpgradeStreamTimeout); + stream.once('close', onUpgradeStreamClose); + clearHttp2IdleTimeout(session); + ++session[kOpenStreams]; + stream.setTimeout(headersTimeout); + } + function writeH2(client, request2) { + const headersTimeout = request2.headersTimeout ?? client[kHeadersTimeout]; + const bodyTimeout = request2.bodyTimeout ?? client[kBodyTimeout]; + const session = client[kHTTP2Session]; + const { method, path: path2, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request2; + let { body } = request2; + if (upgrade != null && upgrade !== 'websocket') { + util.errorRequest( + client, + request2, + new InvalidArgumentError(`Custom upgrade "${upgrade}" not supported over HTTP/2`) + ); + return false; + } + const headers = buildRequestHeaders(reqHeaders); + let stream = null; + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHostAuthority]; + headers[HTTP2_HEADER_METHOD] = method; + let requestFinalized = false; + const finalizeRequest = (resetPendingIdx = false) => { + if (requestFinalized) { + return; + } + requestFinalized = true; + completeRequest(client, request2, resetPendingIdx); + client[kResume](); + }; + const abort = (err, resetPendingIdx = false) => { + if (request2.aborted || request2.completed) { + return; + } + err = err || new RequestAbortedError(); + util.errorRequest(client, request2, err); + if (stream != null) { + clearRequestStream(request2); + stream.close(); + client[kOnError](err); + finalizeRequest(resetPendingIdx); + } + util.destroy(body, err); + }; + const requestStream = (headers2, options) => { + try { + return session.request(headers2, options); + } catch (err) { + if (err?.code === 'ERR_HTTP2_INVALID_SESSION') { + const wrappedErr2 = new SocketError(err.message, util.getSocketInfo(session[kSocket])); + wrappedErr2.cause = err; + session[kError] = wrappedErr2; + resetHttp2Session(session, wrappedErr2); + requeueUnsentRequest(client, request2); + return null; + } + const wrappedErr = new InformationalError(err.message, { cause: err }); + session[kError] = wrappedErr; + session[kSocket][kError] = wrappedErr; + session.destroy(wrappedErr); + util.destroy(session[kSocket], wrappedErr); + abort(wrappedErr); + return null; + } + }; + try { + request2.onRequestStart(abort, null); + } catch (err) { + util.errorRequest(client, request2, err); + } + if (request2.aborted) { + return false; + } + if (upgrade || method === 'CONNECT') { + session.ref(); + const upgradeState = { + abort, + finalizeRequest, + request: request2, + headersTimeout, + bodyTimeout, + responseReceived: false, + session, + stream: null + }; + if (upgrade === 'websocket') { + if (session[kEnableConnectProtocol] === false) { + util.errorRequest( + client, + request2, + new InformationalError('HTTP/2: Extended CONNECT protocol not supported by server') + ); + session.unref(); + return false; + } + headers[HTTP2_HEADER_METHOD] = 'CONNECT'; + headers[HTTP2_HEADER_PROTOCOL] = 'websocket'; + headers[HTTP2_HEADER_PATH] = path2; + if (protocol === 'ws:' || protocol === 'wss:') { + headers[HTTP2_HEADER_SCHEME] = protocol === 'ws:' ? 'http' : 'https'; + } else { + headers[HTTP2_HEADER_SCHEME] = protocol === 'http:' ? 'http' : 'https'; + } + stream = requestStream(headers, { endStream: false, signal }); + if (stream == null) { + session.unref(); + return false; + } + setupUpgradeStream(stream, upgradeState); + return true; + } + stream = requestStream(headers, { endStream: false, signal }); + if (stream == null) { + session.unref(); + return false; + } + setupUpgradeStream(stream, upgradeState); + return true; + } + headers[HTTP2_HEADER_PATH] = path2; + headers[HTTP2_HEADER_SCHEME] = protocol === 'http:' ? 'http' : 'https'; + const expectsPayload = + method === 'PUT' || + method === 'POST' || + method === 'PATCH' || + method === 'QUERY' || + method === 'PROPFIND' || + method === 'PROPPATCH'; + 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) { + assert(body || contentLength === 0, 'no body must not have content length'); + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; + } + session.ref(); + if (channels.sendHeaders.hasSubscribers) { + let header = ''; + for (const key in headers) { + header += `${key}: ${headers[key]}\r +`; + } + channels.sendHeaders.publish({ request: request2, headers: header, socket: session[kSocket] }); + } + const shouldEndStream = body === null || contentLength === 0; + const state = { + abort, + body, + client, + contentLength, + expectsPayload, + finalizeRequest, + request: request2, + headersTimeout, + bodyTimeout, + responseReceived: false, + session, + stream: null + }; + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue'; + } + stream = requestStream(headers, { endStream: shouldEndStream, signal }); + if (stream == null) { + return false; + } + stream[kHTTP2Stream] = true; + stream[kRequestStreamState] = state; + state.stream = stream; + clearHttp2IdleTimeout(session); + ++session[kOpenStreams]; + stream.setTimeout(headersTimeout); + stream[kHTTP2Session] = session; + stream.once('close', onRequestStreamClose); + bindRequestToStream(request2, stream, releaseRequestStream); + if (expectContinue) { + stream.once('continue', writeBodyH2); + } + stream.once('response', onResponse); + stream.once('end', onEnd); + stream.once('error', onError); + stream.once('frameError', onFrameError); + stream.on('aborted', onAborted); + stream.on('timeout', onTimeout); + stream.once('trailers', onTrailers); + if (!expectContinue) { + writeBodyH2.call(stream); + } + return true; + } + function removeRequestStreamListeners(stream) { + stream.off('error', noop3); + stream.off('continue', writeBodyH2); + stream.off('response', onResponse); + stream.off('end', onEnd); + stream.off('error', onError); + stream.off('frameError', onFrameError); + stream.off('aborted', onAborted); + stream.off('timeout', onTimeout); + stream.off('trailers', onTrailers); + stream.off('data', onData); + } + function releaseRequestStream(stream) { + if (stream == null) { + return; + } + const state = stream[kRequestStreamState]; + if (state == null) { + return; + } + const { request: request2 } = state; + if (request2[kRequestStream] === stream) { + detachRequestFromStream(request2); + } + removeRequestStreamListeners(stream); + if (!stream.destroyed && !stream.closed) { + stream.once('error', noop3); + } + } + function onData(chunk) { + const stream = this; + const { request: request2 } = stream[kRequestStreamState]; + if (request2.aborted || request2.completed) { + return; + } + if (request2.onResponseData(chunk) === false) { + stream.pause(); + } + } + function onResponse(headers) { + const stream = this; + const state = stream[kRequestStreamState]; + const { request: request2 } = state; + stream.off('response', onResponse); + const statusCode = headers[HTTP2_HEADER_STATUS]; + delete headers[HTTP2_HEADER_STATUS]; + request2.onResponseStarted(); + state.responseReceived = true; + stream.setTimeout(state.bodyTimeout); + if (request2.aborted) { + releaseRequestStream(stream); + return; + } + if (request2.onResponseStart(Number(statusCode), headers, stream.resume.bind(stream), '') === false) { + stream.pause(); + } + stream.on('data', onData); + } + function onEnd() { + const stream = this; + const state = stream[kRequestStreamState]; + const { request: request2 } = state; + stream.off('end', onEnd); + if (state.responseReceived) { + if (!request2.aborted && !request2.completed) { + state.pendingEnd = true; + } + } else { + state.abort(new InformationalError('HTTP/2: stream half-closed (remote)'), true); + } + } + function onError(err) { + const stream = this; + const state = stream[kRequestStreamState]; + stream.off('error', onError); + state.abort(err); + } + function onFrameError(type, code) { + const stream = this; + const state = stream[kRequestStreamState]; + stream.off('frameError', onFrameError); + state.abort(new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)); + } + function onAborted() { + this.off('data', onData); + } + function onTimeout() { + const stream = this; + const state = stream[kRequestStreamState]; + stream.off('timeout', onTimeout); + const err = state.responseReceived + ? new BodyTimeoutError(`HTTP/2: "stream timeout after ${state.bodyTimeout}"`) + : new HeadersTimeoutError(`HTTP/2: "headers timeout after ${state.headersTimeout}"`); + state.abort(err); + } + function onTrailers(trailers) { + const stream = this; + const state = stream[kRequestStreamState]; + const { request: request2 } = state; + stream.off('trailers', onTrailers); + stream.off('data', onData); + if (request2.aborted || request2.completed) { + return; + } + state.trailers = trailers; + } + function writeBodyH2() { + const stream = this; + const state = stream[kRequestStreamState]; + const { abort, body, client, contentLength, expectsPayload, request: request2 } = state; + 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 { + assert(false); + } + } + function writeBuffer(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) { + try { + if (body != null && util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length'); + h2stream.cork(); + h2stream.write(body); + h2stream.uncork(); + h2stream.end(); + request2.onBodySent(body); + } + if (!expectsPayload) { + socket[kReset] = true; + } + request2.onRequestSent(); + client[kResume](); + } catch (error2) { + abort(error2); + } + } + function writeStream(abort, socket, expectsPayload, h2stream, body, client, request2, contentLength) { + assert(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[kReset] = 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) { + 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[kReset] = true; + } + client[kResume](); + } catch (err) { + abort(err); + } + } + async function writeIterable(abort, h2stream, body, client, request2, socket, contentLength, expectsPayload) { + assert(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((resolve2, reject) => { + assert(callback === null); + if (socket[kError]) { + reject(socket[kError]); + } else { + callback = resolve2; + } + }); + 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[kReset] = true; + } + client[kResume](); + } catch (err) { + abort(err); + } finally { + h2stream.off('close', onDrain).off('drain', onDrain); + } + } + module2.exports = connectH2; + } +}); + +// node_modules/undici/lib/dispatcher/client.js +var require_client = __commonJS({ + 'node_modules/undici/lib/dispatcher/client.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var net = require('node:net'); + var http = require('node:http'); + var util = require_util(); + var { ClientStats } = require_stats(); + 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, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kLocalAddress, + kMaxResponseSize, + kOnError, + kHTTPContext, + kMaxConcurrentStreams, + kHostAuthority, + kHTTP2InitialWindowSize, + kHTTP2ConnectionWindowSize, + kResume, + kPingInterval + } = require_symbols(); + var connectH1 = require_client_h1(); + var connectH2 = require_client_h2(); + var kClosedResolve = /* @__PURE__ */ Symbol('kClosedResolve'); + var getDefaultNodeMaxHeaderSize = + http && http.maxHeaderSize && Number.isInteger(http.maxHeaderSize) && http.maxHeaderSize > 0 + ? () => http.maxHeaderSize + : () => { + throw new InvalidArgumentError('http module not available or http.maxHeaderSize invalid'); + }; + var noop3 = () => {}; + function getPipelining(client) { + return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1; + } + function getMaxConcurrent(client) { + if (client[kHTTPContext]?.version === 'h2') { + return client[kMaxConcurrentStreams]; + } + return getPipelining(client); + } + var Client = class extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../../types/client.js').Client.Options} options + */ + constructor( + url, + { + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + connect: connect2, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + maxConcurrentStreams, + allowH2, + useH2c, + initialWindowSize, + connectionWindowSize, + pingInterval, + 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) { + if (!Number.isInteger(maxHeaderSize) || maxHeaderSize < 1) { + throw new InvalidArgumentError('invalid maxHeaderSize'); + } + } else { + maxHeaderSize = getDefaultNodeMaxHeaderSize(); + } + 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 (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 (useH2c != null && typeof useH2c !== 'boolean') { + throw new InvalidArgumentError('useH2c must be a valid boolean value'); + } + if (initialWindowSize != null && (!Number.isInteger(initialWindowSize) || initialWindowSize < 1)) { + throw new InvalidArgumentError('initialWindowSize must be a positive integer, greater than 0'); + } + if (connectionWindowSize != null && (!Number.isInteger(connectionWindowSize) || connectionWindowSize < 1)) { + throw new InvalidArgumentError('connectionWindowSize must be a positive integer, greater than 0'); + } + if ( + pingInterval != null && + (typeof pingInterval !== 'number' || !Number.isInteger(pingInterval) || pingInterval < 0) + ) { + throw new InvalidArgumentError('pingInterval must be a positive integer, greater or equal to 0'); + } + super({ webSocket }); + if (typeof connect2 !== 'function') { + connect2 = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + useH2c, + socketPath, + timeout: connectTimeout, + ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), + ...connect2 + }); + } else { + const customConnect = connect2; + connect2 = (opts, callback) => + customConnect( + { + ...opts, + ...(socketPath != null ? { socketPath } : null), + ...(allowH2 != null ? { allowH2 } : null) + }, + callback + ); + } + this[kUrl] = util.parseOrigin(url); + this[kHostAuthority] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`; + this[kConnector] = connect2; + this[kPipelining] = pipelining != null ? pipelining : 1; + this[kMaxHeadersSize] = 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[kHostAuthority]}\r +`; + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 3e5; + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 3e5; + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; + this[kMaxRequests] = maxRequestsPerClient; + this[kClosedResolve] = null; + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; + this[kHTTPContext] = null; + this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100; + this[kHTTP2InitialWindowSize] = initialWindowSize != null ? initialWindowSize : 262144; + this[kHTTP2ConnectionWindowSize] = connectionWindowSize != null ? connectionWindowSize : 524288; + this[kPingInterval] = pingInterval != null ? pingInterval : 6e4; + 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 stats() { + return new ClientStats(this); + } + 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]() { + const allowsMux = this[kHTTPContext]?.version === 'h2'; + return Boolean( + this[kHTTPContext]?.busy(null) || + this[kSize] >= (getMaxConcurrent(this) || 1) || + (this[kPending] > 0 && !allowsMux) + ); + } + [kConnect](cb) { + connect(this); + this.once('connect', cb); + } + [kDispatch](opts, handler2) { + const request2 = new Request(this[kUrl].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; + } + [kClose]() { + return new Promise(resolve2 => { + if (this[kSize]) { + this[kClosedResolve] = resolve2; + } else { + resolve2(null); + } + }); + } + [kDestroy](err) { + return new Promise(resolve2 => { + const requests = this[kQueue].splice(this[kPendingIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + if (request2 != null) { + util.errorRequest(this, request2, err); + } + } + const callback = () => { + if (this[kClosedResolve]) { + this[kClosedResolve](); + this[kClosedResolve] = null; + } + resolve2(null); + }; + if (this[kHTTPContext]) { + this[kHTTPContext].destroy(err, callback); + this[kHTTPContext] = null; + } else { + queueMicrotask(callback); + } + this[kResume](); + }); + } + }; + function onError(client, err) { + if (client[kRunning] === 0 && err.code !== 'UND_ERR_INFO' && err.code !== 'UND_ERR_SOCKET') { + assert(client[kPendingIdx] === client[kRunningIdx]); + const requests = client[kQueue].splice(client[kRunningIdx]); + for (let i = 0; i < requests.length; i++) { + const request2 = requests[i]; + if (request2 != null) { + util.errorRequest(client, request2, err); + } + } + assert(client[kSize] === 0); + } + } + function connect(client) { + assert(!client[kConnecting]); + assert(!client[kHTTPContext]); + let { host, hostname, protocol, port } = client[kUrl]; + if (hostname[0] === '[') { + const idx = hostname.indexOf(']'); + assert(idx !== -1); + const ip = hostname.substring(1, idx); + assert(net.isIPv6(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 { + client[kConnector]( + { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + (err, socket) => { + if (err) { + handleConnectError(client, err, { host, hostname, protocol, port }); + client[kResume](); + return; + } + if (client.destroyed) { + util.destroy(socket.on('error', noop3), new ClientDestroyedError()); + client[kResume](); + return; + } + assert(socket); + try { + client[kHTTPContext] = socket.alpnProtocol === 'h2' ? connectH2(client, socket) : connectH1(client, socket); + } catch (err2) { + socket.destroy().on('error', noop3); + handleConnectError(client, err2, { host, hostname, protocol, port }); + client[kResume](); + return; + } + 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]); + client[kResume](); + } + ); + } catch (err) { + handleConnectError(client, err, { host, hostname, protocol, port }); + client[kResume](); + } + } + function handleConnectError(client, err, { host, hostname, protocol, port }) { + 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') { + const running = client[kQueue].splice(client[kRunningIdx], client[kRunning]); + client[kPendingIdx] = client[kRunningIdx]; + for (let i = 0; i < running.length; i++) { + util.errorRequest(client, running[i], err); + } + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request2 = client[kQueue].splice(client[kPendingIdx], 1)[0]; + util.errorRequest(client, request2, err); + } + } else { + onError(client, err); + } + client.emit('connectionError', client[kUrl], [client], err); + } + 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) { + assert(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] >= (getMaxConcurrent(client) || 1)) { + return; + } + const request2 = client[kQueue][client[kPendingIdx]]; + if (request2 === null) { + return; + } + 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); + } + } + } + module2.exports = Client; + } +}); + +// node_modules/undici/lib/dispatcher/fixed-queue.js +var require_fixed_queue = __commonJS({ + 'node_modules/undici/lib/dispatcher/fixed-queue.js'(exports2, module2) { + 'use strict'; + var kSize = 2048; + var kMask = kSize - 1; + var FixedCircularBuffer = class { + /** @type {number} */ + bottom = 0; + /** @type {number} */ + top = 0; + /** @type {Array} */ + list = new Array(kSize).fill(void 0); + /** @type {T|null} */ + next = null; + /** @returns {boolean} */ + isEmpty() { + return this.top === this.bottom; + } + /** @returns {boolean} */ + isFull() { + return ((this.top + 1) & kMask) === this.bottom; + } + /** + * @param {T} data + * @returns {void} + */ + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; + } + /** @returns {T|null} */ + 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; + } + }; + module2.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + /** @returns {boolean} */ + isEmpty() { + return this.head.isEmpty(); + } + /** @param {T} data */ + push(data) { + if (this.head.isFull()) { + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + /** @returns {T|null} */ + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + this.tail = tail.next; + tail.next = null; + } + return next; + } + }; + } +}); + +// node_modules/undici/lib/dispatcher/pool-base.js +var require_pool_base = __commonJS({ + 'node_modules/undici/lib/dispatcher/pool-base.js'(exports2, module2) { + 'use strict'; + var { PoolStats } = require_stats(); + 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 kClients = /* @__PURE__ */ Symbol('clients'); + var kNeedDrain = /* @__PURE__ */ Symbol('needDrain'); + var kQueue = /* @__PURE__ */ Symbol('queue'); + var kClosedResolve = /* @__PURE__ */ Symbol('closed resolve'); + var kOnDrain = /* @__PURE__ */ Symbol('onDrain'); + var kOnConnect = /* @__PURE__ */ Symbol('onConnect'); + var kOnDisconnect = /* @__PURE__ */ Symbol('onDisconnect'); + var kOnConnectionError = /* @__PURE__ */ Symbol('onConnectionError'); + var kGetDispatcher = /* @__PURE__ */ Symbol('get dispatcher'); + var kHasDispatcher = /* @__PURE__ */ Symbol('has dispatcher'); + var kAddClient = /* @__PURE__ */ Symbol('add client'); + var kRemoveClient = /* @__PURE__ */ Symbol('remove client'); + var PoolBase = class extends DispatcherBase { + [kQueue] = new FixedQueue(); + [kQueued] = 0; + [kClients] = []; + [kNeedDrain] = false; + [kOnDrain](client, origin, targets) { + const queue = this[kQueue]; + let needDrain = false; + while (!needDrain) { + const item = queue.shift(); + if (!item) { + break; + } + this[kQueued]--; + needDrain = !client.dispatch(item.opts, item.handler); + } + client[kNeedDrain] = needDrain; + if (!needDrain && this[kNeedDrain]) { + this[kNeedDrain] = false; + this.emit('drain', origin, [this, ...targets]); + } + if (this[kClosedResolve] && queue.isEmpty()) { + const closeAll = []; + for (let i = 0; i < this[kClients].length; i++) { + const client2 = this[kClients][i]; + if (!client2.destroyed) { + closeAll.push(client2.close()); + } + } + return Promise.all(closeAll).then(this[kClosedResolve]); + } + } + [kOnConnect] = (origin, targets) => { + this.emit('connect', origin, [this, ...targets]); + }; + [kOnDisconnect] = (origin, targets, err) => { + this.emit('disconnect', origin, [this, ...targets], err); + }; + [kOnConnectionError] = (origin, targets, err) => { + this.emit('connectionError', origin, [this, ...targets], err); + }; + get [kBusy]() { + return this[kNeedDrain]; + } + get [kConnected]() { + let ret = 0; + for (const { [kConnected]: connected } of this[kClients]) { + ret += connected; + } + return ret; + } + get [kFree]() { + let ret = 0; + for (const { [kConnected]: connected, [kNeedDrain]: needDrain } of this[kClients]) { + ret += connected && !needDrain; + } + return ret; + } + 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 new PoolStats(this); + } + [kClose]() { + if (this[kQueue].isEmpty()) { + const closeAll = []; + for (let i = 0; i < this[kClients].length; i++) { + const client = this[kClients][i]; + if (!client.destroyed) { + closeAll.push(client.close()); + } + } + return Promise.all(closeAll); + } else { + return new Promise(resolve2 => { + this[kClosedResolve] = resolve2; + }); + } + } + [kDestroy](err) { + while (true) { + const item = this[kQueue].shift(); + if (!item) { + break; + } + item.handler.onResponseError(null, err); + } + const destroyAll = new Array(this[kClients].length); + for (let i = 0; i < this[kClients].length; i++) { + destroyAll[i] = this[kClients][i].destroy(err); + } + return Promise.all(destroyAll); + } + [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[kHasDispatcher](); + } + return !this[kNeedDrain]; + } + [kHasDispatcher]() { + for (let i = 0; i < this[kClients].length; i++) { + const dispatcher = this[kClients][i]; + if (!dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true) { + return true; + } + } + return false; + } + [kAddClient](client) { + client + .on('drain', this[kOnDrain].bind(this, client)) + .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, client[kUrl], [client, this]); + } + }); + } + return this; + } + [kRemoveClient](client) { + const idx = this[kClients].indexOf(client); + if (idx !== -1) { + this[kClients].splice(idx, 1); + } + client.close(() => {}); + this[kNeedDrain] = !this[kClients].some( + dispatcher => !dispatcher[kNeedDrain] && dispatcher.closed !== true && dispatcher.destroyed !== true + ); + } + }; + module2.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher, + kHasDispatcher + }; + } +}); + +// node_modules/undici/lib/dispatcher/pool.js +var require_pool = __commonJS({ + 'node_modules/undici/lib/dispatcher/pool.js'(exports2, module2) { + 'use strict'; + var { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher, kHasDispatcher, kRemoveClient } = require_pool_base(); + var Client = require_client(); + var { InvalidArgumentError } = require_errors(); + var util = require_util(); + var { kUrl } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = /* @__PURE__ */ Symbol('options'); + var kConnections = /* @__PURE__ */ Symbol('connections'); + var kFactory = /* @__PURE__ */ 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, + useH2c, + clientTtl, + ...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, + useH2c, + socketPath, + timeout: connectTimeout, + ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), + ...connect + }); + } + super(options); + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2, useH2c, clientTtl, socketPath }; + this[kFactory] = factory; + this.on('connect', (origin2, targets) => { + if (clientTtl != null && clientTtl > 0) { + for (const target of targets) { + Object.assign(target, { ttl: Date.now() }); + } + } + }); + 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]() { + const clientTtlOption = this[kOptions].clientTtl; + for (let i = 0; i < this[kClients].length; i++) { + const client = this[kClients][i]; + if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && Date.now() - client.ttl > clientTtlOption) { + this[kRemoveClient](client); + i--; + } else 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; + } + } + [kHasDispatcher]() { + const clientTtlOption = this[kOptions].clientTtl; + for (let i = 0; i < this[kClients].length; i++) { + const client = this[kClients][i]; + if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && Date.now() - client.ttl > clientTtlOption) { + this[kRemoveClient](client); + i--; + } else if (!client[kNeedDrain]) { + return true; + } + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + const dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + return true; + } + return false; + } + }; + module2.exports = Pool; + } +}); + +// node_modules/undici/lib/dispatcher/balanced-pool.js +var require_balanced_pool = __commonJS({ + 'node_modules/undici/lib/dispatcher/balanced-pool.js'(exports2, module2) { + 'use strict'; + var { BalancedPoolMissingUpstreamError, InvalidArgumentError } = require_errors(); + var { PoolBase, kClients, kNeedDrain, kAddClient, kRemoveClient, kGetDispatcher } = require_pool_base(); + var Pool = require_pool(); + var { kUrl } = require_symbols(); + var util = require_util(); + var kFactory = /* @__PURE__ */ Symbol('factory'); + var kOptions = /* @__PURE__ */ Symbol('options'); + var kGreatestCommonDivisor = /* @__PURE__ */ Symbol('kGreatestCommonDivisor'); + var kCurrentWeight = /* @__PURE__ */ Symbol('kCurrentWeight'); + var kIndex = /* @__PURE__ */ Symbol('kIndex'); + var kWeight = /* @__PURE__ */ Symbol('kWeight'); + var kMaxWeightPerServer = /* @__PURE__ */ Symbol('kMaxWeightPerServer'); + var kErrorPenalty = /* @__PURE__ */ 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 } = {}) { + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.'); + } + super(); + this[kOptions] = { ...util.deepClone(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]; + } + this[kFactory] = factory; + for (const upstream of upstreams) { + this.addUpstream(upstream); + } + this._updateBalancedPoolStats(); + } + addUpstream(upstream) { + const upstreamOrigin = util.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, 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 = util.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; + } + getUpstream(upstream) { + const upstreamOrigin = util.parseOrigin(upstream).origin; + return this[kClients].find( + pool => pool[kUrl].origin === upstreamOrigin && pool.closed !== true && pool.destroyed !== true + ); + } + 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(); + } + let counter = 0; + let maxWeightIndex = -1; + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const pool = this[kClients][this[kIndex]]; + if (this[kIndex] === 0) { + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer]; + } + } + if (pool[kNeedDrain] || pool.closed === true || pool.destroyed === true) { + continue; + } + if (maxWeightIndex === -1 || pool[kWeight] > this[kClients][maxWeightIndex][kWeight]) { + maxWeightIndex = this[kIndex]; + } + if (pool[kWeight] >= this[kCurrentWeight]) { + return pool; + } + } + if (maxWeightIndex === -1) { + return; + } + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; + this[kIndex] = maxWeightIndex; + return this[kClients][maxWeightIndex]; + } + }; + module2.exports = BalancedPool; + } +}); + +// node_modules/undici/lib/dispatcher/round-robin-pool.js +var require_round_robin_pool = __commonJS({ + 'node_modules/undici/lib/dispatcher/round-robin-pool.js'(exports2, module2) { + 'use strict'; + var { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher, kHasDispatcher, kRemoveClient } = require_pool_base(); + var Client = require_client(); + var { InvalidArgumentError } = require_errors(); + var util = require_util(); + var { kUrl } = require_symbols(); + var buildConnector = require_connect(); + var kOptions = /* @__PURE__ */ Symbol('options'); + var kConnections = /* @__PURE__ */ Symbol('connections'); + var kFactory = /* @__PURE__ */ Symbol('factory'); + var kIndex = /* @__PURE__ */ Symbol('index'); + function defaultFactory(origin, opts) { + return new Client(origin, opts); + } + var RoundRobinPool = class extends PoolBase { + constructor( + origin, + { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + clientTtl, + ...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, + ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0), + ...connect + }); + } + super(); + this[kConnections] = connections || null; + this[kUrl] = util.parseOrigin(origin); + this[kOptions] = { ...util.deepClone(options), connect, allowH2, clientTtl, socketPath }; + this[kFactory] = factory; + this[kIndex] = -1; + this.on('connect', (origin2, targets) => { + if (clientTtl != null && clientTtl > 0) { + for (const target of targets) { + Object.assign(target, { ttl: Date.now() }); + } + } + }); + 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]() { + const clientTtlOption = this[kOptions].clientTtl; + if (this[kClients].length === 0) { + const dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + return dispatcher; + } + let checked = 0; + while (checked < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length; + const client = this[kClients][this[kIndex]]; + if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && Date.now() - client.ttl > clientTtlOption) { + this[kRemoveClient](client); + this[kIndex]--; + continue; + } + if (!client[kNeedDrain]) { + return client; + } + checked++; + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + const dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + return dispatcher; + } + } + [kHasDispatcher]() { + const clientTtlOption = this[kOptions].clientTtl; + for (let i = 0; i < this[kClients].length; i++) { + const client = this[kClients][i]; + if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && Date.now() - client.ttl > clientTtlOption) { + this[kRemoveClient](client); + if (i <= this[kIndex]) { + this[kIndex]--; + } + i--; + } else if (!client[kNeedDrain]) { + return true; + } + } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + const dispatcher = this[kFactory](this[kUrl], this[kOptions]); + this[kAddClient](dispatcher); + return true; + } + return false; + } + }; + module2.exports = RoundRobinPool; + } +}); + +// node_modules/undici/lib/dispatcher/agent.js +var require_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/agent.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError, MaxOriginsReachedError } = require_errors(); + var { kBusy, kClients, kConnected, kRunning, kClose, kDestroy, kDispatch, kUrl } = require_symbols(); + var DispatcherBase = require_dispatcher_base(); + var Pool = require_pool(); + var Client = require_client(); + var util = require_util(); + var kOnConnect = /* @__PURE__ */ Symbol('onConnect'); + var kOnDisconnect = /* @__PURE__ */ Symbol('onDisconnect'); + var kOnConnectionError = /* @__PURE__ */ Symbol('onConnectionError'); + var kOnDrain = /* @__PURE__ */ Symbol('onDrain'); + var kFactory = /* @__PURE__ */ Symbol('factory'); + var kOptions = /* @__PURE__ */ Symbol('options'); + var kOrigins = /* @__PURE__ */ Symbol('origins'); + 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, maxOrigins = Infinity, 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 (typeof maxOrigins !== 'number' || Number.isNaN(maxOrigins) || maxOrigins <= 0) { + throw new InvalidArgumentError('maxOrigins must be a number greater than 0'); + } + super(options); + if (connect && typeof connect !== 'function') { + connect = { ...connect }; + } + this[kOptions] = { ...util.deepClone(options), maxOrigins, connect }; + this[kFactory] = factory; + this[kClients] = /* @__PURE__ */ new Map(); + this[kOrigins] = /* @__PURE__ */ new Set(); + 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 dispatcher of this[kClients].values()) { + ret += dispatcher[kRunning]; + } + return ret; + } + [kDispatch](opts, handler2) { + let origin; + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + origin = String(opts.origin); + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.'); + } + const allowH2 = opts.allowH2 ?? this[kOptions].allowH2; + const key = allowH2 === false ? `${origin}#http1-only` : origin; + if (this[kOrigins].size >= this[kOptions].maxOrigins && !this[kOrigins].has(origin)) { + throw new MaxOriginsReachedError(); + } + let dispatcher = this[kClients].get(key); + if (!dispatcher) { + dispatcher = this[kFactory]( + opts.origin, + allowH2 === false ? { ...this[kOptions], allowH2: false } : this[kOptions] + ); + const closeClientIfUnused = () => { + if (this[kClients].get(key) !== dispatcher) { + return; + } + if (dispatcher[kConnected] > 0 || dispatcher[kBusy]) { + return; + } + this[kClients].delete(key); + if (!dispatcher.destroyed) { + dispatcher.close(); + } + let hasOrigin = false; + for (const client of this[kClients].values()) { + if (client[kUrl].origin === dispatcher[kUrl].origin) { + hasOrigin = true; + break; + } + } + if (!hasOrigin) { + this[kOrigins].delete(dispatcher[kUrl].origin); + } + }; + dispatcher + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', (origin2, targets, err) => { + closeClientIfUnused(); + this[kOnDisconnect](origin2, targets, err); + }) + .on('connectionError', (origin2, targets, err) => { + closeClientIfUnused(); + this[kOnConnectionError](origin2, targets, err); + }); + this[kClients].set(key, dispatcher); + this[kOrigins].add(origin); + } + return dispatcher.dispatch(opts, handler2); + } + [kClose]() { + const closePromises = []; + for (const dispatcher of this[kClients].values()) { + closePromises.push(dispatcher.close()); + } + this[kClients].clear(); + return Promise.all(closePromises); + } + [kDestroy](err) { + const destroyPromises = []; + for (const dispatcher of this[kClients].values()) { + destroyPromises.push(dispatcher.destroy(err)); + } + this[kClients].clear(); + return Promise.all(destroyPromises); + } + get stats() { + const allClientStats = {}; + for (const dispatcher of this[kClients].values()) { + if (dispatcher.stats) { + allClientStats[dispatcher[kUrl].origin] = dispatcher.stats; + } + } + return allClientStats; + } + }; + module2.exports = Agent; + } +}); + +// node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +var require_dispatcher1_wrapper = __commonJS({ + 'node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js'(exports2, module2) { + 'use strict'; + var Dispatcher = require_dispatcher(); + var { InvalidArgumentError } = require_errors(); + var { toRawHeaders } = require_util(); + var LegacyHandlerWrapper = class { + #handler; + constructor(handler2) { + this.#handler = handler2; + } + onRequestStart(controller, context3) { + this.#handler.onConnect?.(reason => controller.abort(reason), context3); + } + onRequestUpgrade(controller, statusCode, headers, socket) { + const rawHeaders = controller?.rawHeaders ?? toRawHeaders(headers ?? {}); + this.#handler.onUpgrade?.(statusCode, rawHeaders, socket); + } + onResponseStart(controller, statusCode, headers, statusMessage) { + const rawHeaders = controller?.rawHeaders ?? toRawHeaders(headers ?? {}); + if (this.#handler.onHeaders?.(statusCode, rawHeaders, () => controller.resume(), statusMessage) === false) { + controller.pause(); + } + } + onResponseData(controller, chunk) { + if (this.#handler.onData?.(chunk) === false) { + controller.pause(); + } + } + onResponseEnd(controller, trailers) { + const rawTrailers = controller?.rawTrailers ?? toRawHeaders(trailers ?? {}); + this.#handler.onComplete?.(rawTrailers); + } + onResponseError(_controller, err) { + if (!this.#handler.onError) { + throw err; + } + this.#handler.onError(err); + } + onBodySent(chunk) { + this.#handler.onBodySent?.(chunk); + } + onRequestSent() { + this.#handler.onRequestSent?.(); + } + onResponseStarted() { + this.#handler.onResponseStarted?.(); + } + }; + var Dispatcher1Wrapper = class _Dispatcher1Wrapper extends Dispatcher { + #dispatcher; + constructor(dispatcher) { + super(); + if (!dispatcher || typeof dispatcher.dispatch !== 'function') { + throw new InvalidArgumentError('Argument dispatcher must implement dispatch'); + } + this.#dispatcher = dispatcher; + } + static wrapHandler(handler2) { + if (!handler2 || typeof handler2 !== 'object') { + throw new InvalidArgumentError('handler must be an object'); + } + if (typeof handler2.onRequestStart === 'function') { + return handler2; + } + return new LegacyHandlerWrapper(handler2); + } + dispatch(opts, handler2) { + if (opts.allowH2 !== false) { + opts = { ...opts, allowH2: false }; + } + return this.#dispatcher.dispatch(opts, _Dispatcher1Wrapper.wrapHandler(handler2)); + } + close(...args) { + return this.#dispatcher.close(...args); + } + destroy(...args) { + return this.#dispatcher.destroy(...args); + } + }; + module2.exports = Dispatcher1Wrapper; + } +}); + +// node_modules/undici/lib/core/socks5-utils.js +var require_socks5_utils = __commonJS({ + 'node_modules/undici/lib/core/socks5-utils.js'(exports2, module2) { + 'use strict'; + var { Buffer: Buffer2 } = require('node:buffer'); + var net = require('node:net'); + var { InvalidArgumentError } = require_errors(); + function parseAddress(address) { + if (net.isIPv4(address)) { + const parts = address.split('.').map(Number); + return { + type: 1, + // IPv4 + buffer: Buffer2.from(parts) + }; + } + if (net.isIPv6(address)) { + return { + type: 4, + // IPv6 + buffer: parseIPv6(address) + }; + } + const domainBuffer = Buffer2.from(address, 'utf8'); + if (domainBuffer.length > 255) { + throw new InvalidArgumentError('Domain name too long (max 255 bytes)'); + } + return { + type: 3, + // Domain + buffer: Buffer2.concat([Buffer2.from([domainBuffer.length]), domainBuffer]) + }; + } + function parseIPv6(address) { + const buffer = Buffer2.alloc(16); + let normalizedAddress = address; + if (address.includes('.')) { + const lastColonIndex = address.lastIndexOf(':'); + const ipv4Part = address.slice(lastColonIndex + 1); + if (net.isIPv4(ipv4Part)) { + const octets = ipv4Part.split('.').map(Number); + const high = ((octets[0] << 8) | octets[1]).toString(16); + const low = ((octets[2] << 8) | octets[3]).toString(16); + normalizedAddress = `${address.slice(0, lastColonIndex)}:${high}:${low}`; + } + } + const doubleColonIndex = normalizedAddress.indexOf('::'); + if (doubleColonIndex !== -1) { + const before = normalizedAddress.slice(0, doubleColonIndex); + const after = normalizedAddress.slice(doubleColonIndex + 2); + const beforeParts = before === '' ? [] : before.split(':'); + const afterParts = after === '' ? [] : after.split(':'); + let bufferIndex = 0; + for (const part of beforeParts) { + buffer.writeUInt16BE(parseInt(part, 16), bufferIndex); + bufferIndex += 2; + } + bufferIndex = 16 - afterParts.length * 2; + for (const part of afterParts) { + buffer.writeUInt16BE(parseInt(part, 16), bufferIndex); + bufferIndex += 2; + } + } else { + const parts = normalizedAddress.split(':'); + for (let i = 0; i < parts.length; i++) { + buffer.writeUInt16BE(parseInt(parts[i], 16), i * 2); + } + } + return buffer; + } + function buildAddressBuffer(type, addressBuffer, port) { + const portBuffer = Buffer2.allocUnsafe(2); + portBuffer.writeUInt16BE(port, 0); + return Buffer2.concat([Buffer2.from([type]), addressBuffer, portBuffer]); + } + function parseResponseAddress(buffer, offset = 0) { + if (buffer.length < offset + 1) { + throw new InvalidArgumentError('Buffer too small to contain address type'); + } + const addressType = buffer[offset]; + let address; + let currentOffset = offset + 1; + switch (addressType) { + case 1: { + if (buffer.length < currentOffset + 6) { + throw new InvalidArgumentError('Buffer too small for IPv4 address'); + } + address = Array.from(buffer.subarray(currentOffset, currentOffset + 4)).join('.'); + currentOffset += 4; + break; + } + case 3: { + if (buffer.length < currentOffset + 1) { + throw new InvalidArgumentError('Buffer too small for domain length'); + } + const domainLength = buffer[currentOffset]; + currentOffset += 1; + if (buffer.length < currentOffset + domainLength + 2) { + throw new InvalidArgumentError('Buffer too small for domain address'); + } + address = buffer.subarray(currentOffset, currentOffset + domainLength).toString('utf8'); + currentOffset += domainLength; + break; + } + case 4: { + if (buffer.length < currentOffset + 18) { + throw new InvalidArgumentError('Buffer too small for IPv6 address'); + } + const parts = []; + for (let i = 0; i < 8; i++) { + const value = buffer.readUInt16BE(currentOffset + i * 2); + parts.push(value.toString(16)); + } + address = parts.join(':'); + currentOffset += 16; + break; + } + default: + throw new InvalidArgumentError(`Invalid address type: ${addressType}`); + } + if (buffer.length < currentOffset + 2) { + throw new InvalidArgumentError('Buffer too small for port'); + } + const port = buffer.readUInt16BE(currentOffset); + currentOffset += 2; + return { + address, + port, + bytesRead: currentOffset - offset + }; + } + function createReplyError(replyCode) { + const messages = { + 1: 'General SOCKS server failure', + 2: 'Connection not allowed by ruleset', + 3: 'Network unreachable', + 4: 'Host unreachable', + 5: 'Connection refused', + 6: 'TTL expired', + 7: 'Command not supported', + 8: 'Address type not supported' + }; + const message = messages[replyCode] || `Unknown SOCKS5 error code: ${replyCode}`; + const error2 = new Error(message); + error2.code = `SOCKS5_${replyCode}`; + return error2; + } + module2.exports = { + parseAddress, + parseIPv6, + buildAddressBuffer, + parseResponseAddress, + createReplyError + }; + } +}); + +// node_modules/undici/lib/core/socks5-client.js +var require_socks5_client = __commonJS({ + 'node_modules/undici/lib/core/socks5-client.js'(exports2, module2) { + 'use strict'; + var { EventEmitter } = require('node:events'); + var { Buffer: Buffer2 } = require('node:buffer'); + var { InvalidArgumentError, Socks5ProxyError } = require_errors(); + var { debuglog } = require('node:util'); + var { parseAddress } = require_socks5_utils(); + var debug2 = debuglog('undici:socks5'); + var EMPTY_BUFFER = Buffer2.alloc(0); + var SOCKS_VERSION = 5; + var AUTH_METHODS = { + NO_AUTH: 0, + GSSAPI: 1, + USERNAME_PASSWORD: 2, + NO_ACCEPTABLE: 255 + }; + var COMMANDS = { + CONNECT: 1, + BIND: 2, + UDP_ASSOCIATE: 3 + }; + var ADDRESS_TYPES = { + IPV4: 1, + DOMAIN: 3, + IPV6: 4 + }; + var REPLY_CODES = { + SUCCEEDED: 0, + GENERAL_FAILURE: 1, + CONNECTION_NOT_ALLOWED: 2, + NETWORK_UNREACHABLE: 3, + HOST_UNREACHABLE: 4, + CONNECTION_REFUSED: 5, + TTL_EXPIRED: 6, + COMMAND_NOT_SUPPORTED: 7, + ADDRESS_TYPE_NOT_SUPPORTED: 8 + }; + var STATES = { + INITIAL: 'initial', + HANDSHAKING: 'handshaking', + AUTHENTICATING: 'authenticating', + AUTHENTICATED: 'authenticated', + CONNECTING: 'connecting', + CONNECTED: 'connected', + ERROR: 'error', + CLOSED: 'closed' + }; + var Socks5Client = class extends EventEmitter { + constructor(socket, options = {}) { + super(); + if (!socket) { + throw new InvalidArgumentError('socket is required'); + } + this.socket = socket; + this.options = options; + this.state = STATES.INITIAL; + this.buffer = EMPTY_BUFFER; + this.onSocketData = this.onData.bind(this); + this.onSocketError = this.onError.bind(this); + this.onSocketClose = this.onClose.bind(this); + this.authMethods = []; + if (options.username && options.password) { + this.authMethods.push(AUTH_METHODS.USERNAME_PASSWORD); + } + this.authMethods.push(AUTH_METHODS.NO_AUTH); + this.socket.on('data', this.onSocketData); + this.socket.on('error', this.onSocketError); + this.socket.on('close', this.onSocketClose); + } + /** + * Handle incoming data from the socket + */ + onData(data) { + debug2('received data', data.length, 'bytes in state', this.state); + this.buffer = Buffer2.concat([this.buffer, data]); + try { + switch (this.state) { + case STATES.HANDSHAKING: + this.handleHandshakeResponse(); + break; + case STATES.AUTHENTICATING: + this.handleAuthResponse(); + break; + case STATES.CONNECTING: + this.handleConnectResponse(); + break; + } + } catch (err) { + this.onError(err); + } + } + /** + * Handle socket errors + */ + onError(err) { + debug2('socket error', err); + this.state = STATES.ERROR; + this.emit('error', err); + this.destroy(); + } + /** + * Handle socket close + */ + onClose() { + debug2('socket closed'); + this.state = STATES.CLOSED; + this.emit('close'); + } + /** + * Destroy the client and underlying socket + */ + destroy() { + if (this.socket && !this.socket.destroyed) { + this.socket.destroy(); + } + } + markAuthenticated() { + this.state = STATES.AUTHENTICATED; + this.emit('authenticated'); + } + /** + * Start the SOCKS5 handshake + */ + handshake() { + if (this.state !== STATES.INITIAL) { + throw new InvalidArgumentError('Handshake already started'); + } + debug2('starting handshake with', this.authMethods.length, 'auth methods'); + this.state = STATES.HANDSHAKING; + const request2 = Buffer2.alloc(2 + this.authMethods.length); + request2[0] = SOCKS_VERSION; + request2[1] = this.authMethods.length; + this.authMethods.forEach((method, i) => { + request2[2 + i] = method; + }); + this.socket.write(request2); + } + /** + * Handle handshake response from server + */ + handleHandshakeResponse() { + if (this.buffer.length < 2) { + return; + } + const version = this.buffer[0]; + const method = this.buffer[1]; + if (version !== SOCKS_VERSION) { + throw new Socks5ProxyError(`Invalid SOCKS version: ${version}`, 'UND_ERR_SOCKS5_VERSION'); + } + if (method === AUTH_METHODS.NO_ACCEPTABLE) { + throw new Socks5ProxyError('No acceptable authentication method', 'UND_ERR_SOCKS5_AUTH_REJECTED'); + } + this.buffer = this.buffer.subarray(2); + debug2('server selected auth method', method); + if (method === AUTH_METHODS.NO_AUTH) { + this.markAuthenticated(); + } else if (method === AUTH_METHODS.USERNAME_PASSWORD) { + this.state = STATES.AUTHENTICATING; + this.sendAuthRequest(); + } else { + throw new Socks5ProxyError(`Unsupported authentication method: ${method}`, 'UND_ERR_SOCKS5_AUTH_METHOD'); + } + } + /** + * Send username/password authentication request + */ + sendAuthRequest() { + const { username, password } = this.options; + if (!username || !password) { + throw new InvalidArgumentError('Username and password required for authentication'); + } + debug2('sending username/password auth'); + const usernameBuffer = Buffer2.from(username); + const passwordBuffer = Buffer2.from(password); + if (usernameBuffer.length > 255 || passwordBuffer.length > 255) { + throw new InvalidArgumentError('Username or password too long'); + } + const request2 = Buffer2.alloc(3 + usernameBuffer.length + passwordBuffer.length); + request2[0] = 1; + request2[1] = usernameBuffer.length; + usernameBuffer.copy(request2, 2); + request2[2 + usernameBuffer.length] = passwordBuffer.length; + passwordBuffer.copy(request2, 3 + usernameBuffer.length); + this.socket.write(request2); + } + /** + * Handle authentication response + */ + handleAuthResponse() { + if (this.buffer.length < 2) { + return; + } + const version = this.buffer[0]; + const status = this.buffer[1]; + if (version !== 1) { + throw new Socks5ProxyError(`Invalid auth sub-negotiation version: ${version}`, 'UND_ERR_SOCKS5_AUTH_VERSION'); + } + if (status !== 0) { + throw new Socks5ProxyError('Authentication failed', 'UND_ERR_SOCKS5_AUTH_FAILED'); + } + this.buffer = this.buffer.subarray(2); + debug2('authentication successful'); + this.markAuthenticated(); + } + /** + * Send CONNECT command + * @param {string} address - Target address (IP or domain) + * @param {number} port - Target port + */ + connect(address, port) { + if (this.state === STATES.CONNECTING || this.state === STATES.CONNECTED) { + throw new InvalidArgumentError('Connection already in progress'); + } + if (this.state !== STATES.AUTHENTICATED) { + throw new InvalidArgumentError('Client must be authenticated before CONNECT'); + } + debug2('connecting to', address, port); + this.state = STATES.CONNECTING; + const request2 = this.buildConnectRequest(COMMANDS.CONNECT, address, port); + this.socket.write(request2); + } + /** + * Build a SOCKS5 request + */ + buildConnectRequest(command, address, port) { + const { type: addressType, buffer: addressBuffer } = parseAddress(address); + const request2 = Buffer2.alloc(4 + addressBuffer.length + 2); + request2[0] = SOCKS_VERSION; + request2[1] = command; + request2[2] = 0; + request2[3] = addressType; + addressBuffer.copy(request2, 4); + request2.writeUInt16BE(port, 4 + addressBuffer.length); + return request2; + } + /** + * Handle CONNECT response + */ + handleConnectResponse() { + if (this.buffer.length < 4) { + return; + } + const version = this.buffer[0]; + const reply = this.buffer[1]; + const addressType = this.buffer[3]; + if (version !== SOCKS_VERSION) { + throw new Socks5ProxyError(`Invalid SOCKS version in reply: ${version}`, 'UND_ERR_SOCKS5_REPLY_VERSION'); + } + let responseLength = 4; + if (addressType === ADDRESS_TYPES.IPV4) { + responseLength += 4 + 2; + } else if (addressType === ADDRESS_TYPES.DOMAIN) { + if (this.buffer.length < 5) { + return; + } + responseLength += 1 + this.buffer[4] + 2; + } else if (addressType === ADDRESS_TYPES.IPV6) { + responseLength += 16 + 2; + } else { + throw new Socks5ProxyError(`Invalid address type in reply: ${addressType}`, 'UND_ERR_SOCKS5_ADDR_TYPE'); + } + if (this.buffer.length < responseLength) { + return; + } + if (reply !== REPLY_CODES.SUCCEEDED) { + const errorMessage = this.getReplyErrorMessage(reply); + throw new Socks5ProxyError(`SOCKS5 connection failed: ${errorMessage}`, `UND_ERR_SOCKS5_REPLY_${reply}`); + } + let boundAddress; + let offset = 4; + if (addressType === ADDRESS_TYPES.IPV4) { + boundAddress = Array.from(this.buffer.subarray(offset, offset + 4)).join('.'); + offset += 4; + } else if (addressType === ADDRESS_TYPES.DOMAIN) { + const domainLength = this.buffer[offset]; + offset += 1; + boundAddress = this.buffer.subarray(offset, offset + domainLength).toString(); + offset += domainLength; + } else if (addressType === ADDRESS_TYPES.IPV6) { + const parts = []; + for (let i = 0; i < 8; i++) { + const value = this.buffer.readUInt16BE(offset + i * 2); + parts.push(value.toString(16)); + } + boundAddress = parts.join(':'); + offset += 16; + } + const boundPort = this.buffer.readUInt16BE(offset); + this.buffer = EMPTY_BUFFER; + this.state = STATES.CONNECTED; + this.socket.removeListener('data', this.onSocketData); + debug2('connected, bound address:', boundAddress, 'port:', boundPort); + this.emit('connected', { address: boundAddress, port: boundPort }); + } + /** + * Get human-readable error message for reply code + */ + getReplyErrorMessage(reply) { + switch (reply) { + case REPLY_CODES.GENERAL_FAILURE: + return 'General SOCKS server failure'; + case REPLY_CODES.CONNECTION_NOT_ALLOWED: + return 'Connection not allowed by ruleset'; + case REPLY_CODES.NETWORK_UNREACHABLE: + return 'Network unreachable'; + case REPLY_CODES.HOST_UNREACHABLE: + return 'Host unreachable'; + case REPLY_CODES.CONNECTION_REFUSED: + return 'Connection refused'; + case REPLY_CODES.TTL_EXPIRED: + return 'TTL expired'; + case REPLY_CODES.COMMAND_NOT_SUPPORTED: + return 'Command not supported'; + case REPLY_CODES.ADDRESS_TYPE_NOT_SUPPORTED: + return 'Address type not supported'; + default: + return `Unknown error code: ${reply}`; + } + } + }; + module2.exports = { + Socks5Client, + AUTH_METHODS, + COMMANDS, + ADDRESS_TYPES, + REPLY_CODES, + STATES + }; + } +}); + +// node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +var require_socks5_proxy_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/socks5-proxy-agent.js'(exports2, module2) { + 'use strict'; + var { URL: URL2 } = require('node:url'); + var tls; + var DispatcherBase = require_dispatcher_base(); + var { InvalidArgumentError } = require_errors(); + var { Socks5Client, STATES } = require_socks5_client(); + var { kDispatch, kClose, kDestroy } = require_symbols(); + var Pool = require_pool(); + var buildConnector = require_connect(); + var { debuglog } = require('node:util'); + var debug2 = debuglog('undici:socks5-proxy'); + var kProxyUrl = /* @__PURE__ */ Symbol('proxy url'); + var kProxyHeaders = /* @__PURE__ */ Symbol('proxy headers'); + var kProxyAuth = /* @__PURE__ */ Symbol('proxy auth'); + var kProxyProtocol = /* @__PURE__ */ Symbol('proxy protocol'); + var kPools = /* @__PURE__ */ Symbol('pools'); + var kConnector = /* @__PURE__ */ Symbol('connector'); + var kRequestTls = /* @__PURE__ */ Symbol('request tls settings'); + var experimentalWarningEmitted = false; + var Socks5ProxyAgent = class extends DispatcherBase { + constructor(proxyUrl, options = {}) { + super(); + if (!experimentalWarningEmitted) { + process.emitWarning('SOCKS5 proxy support is experimental and subject to change', 'ExperimentalWarning'); + experimentalWarningEmitted = true; + } + if (!proxyUrl) { + throw new InvalidArgumentError('Proxy URL is mandatory'); + } + const url = typeof proxyUrl === 'string' ? new URL2(proxyUrl) : proxyUrl; + if (url.protocol !== 'socks5:' && url.protocol !== 'socks:') { + throw new InvalidArgumentError('Proxy URL must use socks5:// or socks:// protocol'); + } + this[kProxyUrl] = url; + this[kProxyHeaders] = options.headers || {}; + this[kProxyProtocol] = options.proxyTls ? 'https:' : 'http:'; + this[kRequestTls] = options.requestTls; + this[kProxyAuth] = { + username: options.username || (url.username ? decodeURIComponent(url.username) : null), + password: options.password || (url.password ? decodeURIComponent(url.password) : null) + }; + this[kConnector] = + options.connect || + buildConnector({ + ...options.proxyTls, + servername: options.proxyTls?.servername || url.hostname + }); + this[kPools] = /* @__PURE__ */ new Map(); + } + /** + * Create a SOCKS5 connection to the proxy + */ + async createSocks5Connection(targetHost, targetPort) { + const proxyHost = this[kProxyUrl].hostname; + const proxyPort = parseInt(this[kProxyUrl].port) || 1080; + debug2('creating SOCKS5 connection to', proxyHost, proxyPort); + const socketReady = Promise.withResolvers(); + this[kConnector]( + { + hostname: proxyHost, + host: proxyHost, + port: proxyPort, + protocol: this[kProxyProtocol] + }, + (err, socket2) => { + if (err) { + socketReady.reject(err); + } else { + socketReady.resolve(socket2); + } + } + ); + const socket = await socketReady.promise; + const socks5Client = new Socks5Client(socket, this[kProxyAuth]); + socks5Client.on('error', err => { + debug2('SOCKS5 error:', err); + socket.destroy(); + }); + await socks5Client.handshake(); + const authenticationReady = Promise.withResolvers(); + const authenticationTimeout = setTimeout(() => { + authenticationReady.reject(new Error('SOCKS5 authentication timeout')); + }, 5e3); + const onAuthenticated = () => { + clearTimeout(authenticationTimeout); + socks5Client.removeListener('error', onAuthenticationError); + authenticationReady.resolve(); + }; + const onAuthenticationError = err => { + clearTimeout(authenticationTimeout); + socks5Client.removeListener('authenticated', onAuthenticated); + authenticationReady.reject(err); + }; + if (socks5Client.state === STATES.AUTHENTICATED) { + clearTimeout(authenticationTimeout); + authenticationReady.resolve(); + } else { + socks5Client.once('authenticated', onAuthenticated); + socks5Client.once('error', onAuthenticationError); + } + await authenticationReady.promise; + await socks5Client.connect(targetHost, targetPort); + const connectionReady = Promise.withResolvers(); + const connectionTimeout = setTimeout(() => { + connectionReady.reject(new Error('SOCKS5 connection timeout')); + }, 5e3); + const onConnected = info2 => { + debug2('SOCKS5 tunnel established to', targetHost, targetPort, 'via', info2); + clearTimeout(connectionTimeout); + socks5Client.removeListener('error', onConnectionError); + connectionReady.resolve(); + }; + const onConnectionError = err => { + clearTimeout(connectionTimeout); + socks5Client.removeListener('connected', onConnected); + connectionReady.reject(err); + }; + socks5Client.once('connected', onConnected); + socks5Client.once('error', onConnectionError); + await connectionReady.promise; + return socket; + } + /** + * Dispatch a request through the SOCKS5 proxy + */ + [kDispatch](opts, handler2) { + const { origin } = opts; + debug2('dispatching request to', origin, 'via SOCKS5'); + try { + const originKey = String(origin); + let pool = this[kPools].get(originKey); + if (!pool || pool.destroyed || pool.closed) { + pool = new Pool(origin, { + pipelining: opts.pipelining, + connections: opts.connections, + connect: async (connectOpts, callback) => { + try { + const url = new URL2(origin); + const targetHost = url.hostname; + const targetPort = parseInt(url.port) || (url.protocol === 'https:' ? 443 : 80); + debug2('establishing SOCKS5 connection to', targetHost, targetPort); + const socket = await this.createSocks5Connection(targetHost, targetPort); + let finalSocket = socket; + if (url.protocol === 'https:') { + if (!tls) { + tls = require('node:tls'); + } + debug2('upgrading to TLS'); + finalSocket = tls.connect({ + ...this[kRequestTls], + socket, + servername: this[kRequestTls]?.servername || targetHost + }); + const tlsReady = Promise.withResolvers(); + finalSocket.once('secureConnect', tlsReady.resolve); + finalSocket.once('error', tlsReady.reject); + await tlsReady.promise; + } + callback(null, finalSocket); + } catch (err) { + debug2('SOCKS5 connection error:', err); + callback(err); + } + } + }); + this[kPools].set(originKey, pool); + } + return pool[kDispatch](opts, handler2); + } catch (err) { + debug2('dispatch error:', err); + if (typeof handler2.onResponseError === 'function') { + handler2.onResponseError(null, err); + return false; + } else if (typeof handler2.onError === 'function') { + handler2.onError(err); + return false; + } else { + throw err; + } + } + } + async [kClose]() { + const closePromises = []; + for (const pool of this[kPools].values()) { + closePromises.push(pool.close()); + } + this[kPools].clear(); + await Promise.all(closePromises); + } + async [kDestroy](err) { + const destroyPromises = []; + for (const pool of this[kPools].values()) { + destroyPromises.push(pool.destroy(err)); + } + this[kPools].clear(); + await Promise.all(destroyPromises); + } + }; + module2.exports = Socks5ProxyAgent; + } +}); + +// node_modules/undici/lib/dispatcher/proxy-agent.js +var require_proxy_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/proxy-agent.js'(exports2, module2) { + 'use strict'; + var { kProxy, kClose, kDestroy, kDispatch } = require_symbols(); + 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 { channels } = require_diagnostics(); + var Socks5ProxyAgent = require_socks5_proxy_agent(); + var kAgent = /* @__PURE__ */ Symbol('proxy agent'); + var kClient = /* @__PURE__ */ Symbol('proxy client'); + var kProxyHeaders = /* @__PURE__ */ Symbol('proxy headers'); + var kRequestTls = /* @__PURE__ */ Symbol('request tls settings'); + var kProxyTls = /* @__PURE__ */ Symbol('proxy tls settings'); + var kConnectEndpoint = /* @__PURE__ */ Symbol('connect endpoint function'); + var kConnectEndpointHTTP1 = /* @__PURE__ */ Symbol('connect endpoint function (http/1.1 only)'); + var kTunnelProxy = /* @__PURE__ */ Symbol('tunnel proxy'); + var proxyAuthorization = 'proxy-authorization'; + 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 }) { + if (!proxyUrl) { + throw new InvalidArgumentError('Proxy URL is mandatory'); + } + super(); + this[kProxyHeaders] = headers; + if (factory) { + this.#client = factory(proxyUrl, { connect }); + } else { + this.#client = new Client(proxyUrl, { connect }); + } + } + [kDispatch](opts, handler2) { + const onResponseStart = handler2.onResponseStart; + handler2.onResponseStart = function (controller, statusCode, data, statusMessage) { + if (statusCode === 407) { + if (typeof handler2.onResponseError === 'function') { + handler2.onResponseError(controller, new InvalidArgumentError('Proxy Authentication Required (407)')); + } + return; + } + if (onResponseStart) onResponseStart.call(this, controller, statusCode, data, statusMessage); + }; + const { origin, path: path2 = '/', headers = {} } = opts; + opts.path = origin + path2; + if (!('host' in headers) && !('Host' in headers)) { + const { host } = new URL(origin); + headers.host = host; + } + opts.headers = { ...this[kProxyHeaders], ...headers }; + return this.#client[kDispatch](opts, handler2); + } + [kClose]() { + return this.#client.close(); + } + [kDestroy](err) { + return this.#client.destroy(err); + } + }; + var ProxyAgent2 = class extends DispatcherBase { + constructor(opts) { + if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !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, connectTimeout } = opts; + super(); + const url = this.#getUrl(opts); + const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url; + this[kProxy] = { uri: href, protocol }; + 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')}`; + } else if (username) { + this[kProxyHeaders]['proxy-authorization'] = + `Basic ${Buffer.from(`${decodeURIComponent(username)}:`).toString('base64')}`; + } + const connect = buildConnector({ timeout: connectTimeout, ...opts.proxyTls }); + this[kConnectEndpoint] = buildConnector({ timeout: connectTimeout, ...opts.requestTls }); + this[kConnectEndpointHTTP1] = buildConnector({ timeout: connectTimeout, ...opts.requestTls, allowH2: false }); + const agentFactory = opts.factory || defaultAgentFactory; + const factory = (origin2, options) => { + const { protocol: protocol2 } = new URL(origin2); + if (this[kProxy].protocol === 'socks5:' || this[kProxy].protocol === 'socks:') { + return new Socks5ProxyAgent(this[kProxy].uri, { + headers: this[kProxyHeaders], + connect, + factory: agentFactory, + username: opts.username || username, + password: opts.password || password, + proxyTls: opts.proxyTls, + requestTls: opts.requestTls + }); + } + 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); + }; + if (protocol === 'socks5:' || protocol === 'socks:') { + this[kClient] = null; + } else { + this[kClient] = clientFactory(url, { connect }); + } + this[kAgent] = new Agent({ + ...opts, + factory, + connect: async (opts2, callback) => { + if (!this[kClient]) { + callback(new InvalidArgumentError('Cannot establish tunnel connection without a proxy client')); + return; + } + let requestedPath = opts2.host; + if (!opts2.port) { + requestedPath += `:${defaultProtocolPort(opts2.protocol)}`; + } + try { + const connectParams = { + origin, + port, + path: requestedPath, + signal: opts2.signal, + headers: { + ...this[kProxyHeaders], + host: opts2.host, + ...(opts2.connections == null || opts2.connections > 0 ? { 'proxy-connection': 'keep-alive' } : {}) + }, + servername: this[kProxyTls]?.servername || proxyHostname + }; + const { socket, statusCode } = await this[kClient].connect(connectParams); + if (statusCode !== 200) { + socket.on('error', noop3).destroy(); + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); + return; + } + if (channels.proxyConnected.hasSubscribers) { + channels.proxyConnected.publish({ + socket, + connectParams + }); + } + if (opts2.protocol !== 'https:') { + callback(null, socket); + return; + } + let servername; + if (this[kRequestTls]) { + servername = this[kRequestTls].servername; + } else { + servername = opts2.servername; + } + const connectEndpoint = opts2.allowH2 === false ? this[kConnectEndpointHTTP1] : this[kConnectEndpoint]; + connectEndpoint({ ...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 URL(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 URL(opts); + } else if (opts instanceof URL) { + return opts; + } else { + return new URL(opts.uri); + } + } + [kClose]() { + const promises3 = [this[kAgent].close()]; + if (this[kClient]) { + promises3.push(this[kClient].close()); + } + return Promise.all(promises3); + } + [kDestroy]() { + const promises3 = [this[kAgent].destroy()]; + if (this[kClient]) { + promises3.push(this[kClient].destroy()); + } + return Promise.all(promises3); + } + }; + function buildHeaders(headers) { + if (Array.isArray(headers)) { + const headersPair = {}; + for (let i = 0; i < headers.length; i += 2) { + if (isProxyAuthorizationHeader(headers[i])) { + throwProxyAuthError(); + } + headersPair[headers[i]] = headers[i + 1]; + } + return headersPair; + } + return headers; + } + function throwIfProxyAuthIsSent(headers) { + for (const key in headers) { + if (isProxyAuthorizationHeader(key)) { + throwProxyAuthError(); + } + } + } + function isProxyAuthorizationHeader(key) { + return key.length === proxyAuthorization.length && key.toLowerCase() === proxyAuthorization; + } + function throwProxyAuthError() { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor'); + } + module2.exports = ProxyAgent2; + } +}); + +// node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +var require_env_http_proxy_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/env-http-proxy-agent.js'(exports2, module2) { + '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 EnvHttpProxyAgent = class extends DispatcherBase { + #noProxyValue = null; + #noProxyEntries = null; + #opts = null; + constructor(opts = {}) { + super(); + this.#opts = opts; + 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); + } + [kClose]() { + return Promise.all([ + this[kNoProxyAgent].close(), + !this[kHttpProxyAgent][kClosed] && this[kHttpProxyAgent].close(), + !this[kHttpsProxyAgent][kClosed] && this[kHttpsProxyAgent].close() + ]); + } + [kDestroy](err) { + return Promise.all([ + this[kNoProxyAgent].destroy(err), + !this[kHttpProxyAgent][kDestroyed] && this[kHttpProxyAgent].destroy(err), + !this[kHttpsProxyAgent][kDestroyed] && 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 (hostname === entry.hostname) { + return false; + } + if (hostname.slice(-(entry.hostname.length + 1)) === `.${entry.hostname}`) { + 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({ + // strip leading dot or asterisk with dot + hostname: (parsed ? parsed[1] : entry).replace(/^\*?\./, '').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 ?? ''; + } + }; + module2.exports = EnvHttpProxyAgent; + } +}); + +// node_modules/undici/lib/handler/retry-handler.js +var require_retry_handler = __commonJS({ + 'node_modules/undici/lib/handler/retry-handler.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { kRetryHandlerDefaultRetry } = require_symbols(); + var { RequestRetryError } = require_errors(); + var { isDisturbed, parseRangeHeader, wrapRequestBody } = require_util(); + function calculateRetryAfterHeader(retryAfter) { + const retryTime = new Date(retryAfter).getTime(); + return isNaN(retryTime) ? 0 : retryTime - Date.now(); + } + var RetryHandler = class _RetryHandler { + constructor(opts, { dispatch, handler: handler2 }) { + const { retryOptions, ...dispatchOpts } = opts; + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes, + throwOnError + } = retryOptions ?? {}; + this.error = null; + this.dispatch = dispatch; + this.handler = handler2; + this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) }; + this.retryOpts = { + throwOnError: throwOnError ?? true, + 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.headersSent = false; + this.start = 0; + this.end = null; + this.etag = null; + this.statusCode = null; + this.headers = null; + } + onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err) { + if (this.retryOpts.throwOnError) { + if (this.retryOpts.statusCodes.includes(statusCode) === false) { + this.headersSent = true; + this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage); + } else { + this.error = err; + } + return; + } + if (isDisturbed(this.opts.body)) { + this.headersSent = true; + this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage); + return; + } + function shouldRetry(passedErr) { + if (passedErr) { + this.headersSent = true; + this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage); + controller.resume(); + return; + } + this.error = err; + controller.resume(); + } + controller.pause(); + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + shouldRetry.bind(this) + ); + } + onRequestStart(controller, context3) { + if (!this.headersSent) { + this.handler.onRequestStart?.(controller, context3); + } + } + onRequestUpgrade(controller, statusCode, headers, socket) { + this.handler.onRequestUpgrade?.(controller, statusCode, headers, socket); + } + 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(headers['retry-after']) + : retryAfterHeader * 1e3; + } + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout); + setTimeout(() => cb(null), retryTimeout); + } + onResponseStart(controller, statusCode, headers, statusMessage) { + this.error = null; + this.retryCount += 1; + this.statusCode = statusCode; + this.headers = headers; + if (statusCode >= 300) { + const err = new RequestRetryError('Request failed', statusCode, { + headers, + data: { + count: this.retryCount + } + }); + this.onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err); + return; + } + if (this.headersSent) { + if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) { + throw new RequestRetryError( + 'server does not support the range header and the payload was partially consumed', + statusCode, + { + headers, + data: { count: this.retryCount } + } + ); + } + const contentRange = parseRangeHeader(headers['content-range']); + if (!contentRange) { + throw new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + data: { count: this.retryCount } + }); + } + if (this.etag != null && this.etag !== headers.etag) { + throw new RequestRetryError('ETag mismatch', statusCode, { + headers, + data: { count: this.retryCount } + }); + } + const { start, size, end = size ? size - 1 : null } = contentRange; + assert(this.start === start, 'content-range mismatch'); + assert(this.end == null || this.end === end, 'content-range mismatch'); + return; + } + if (this.end == null) { + if (statusCode === 206) { + const range = parseRangeHeader(headers['content-range']); + if (range == null) { + this.headersSent = true; + this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage); + return; + } + const { start, size, end = size ? size - 1 : null } = range; + assert(start != null && Number.isFinite(start), 'content-range mismatch'); + assert(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; + } + assert(Number.isFinite(this.start)); + assert(this.end == null || Number.isFinite(this.end), 'invalid content-length'); + this.resume = true; + this.etag = headers.etag != null ? headers.etag : null; + if (this.etag != null && this.etag[0] === 'W' && this.etag[1] === '/') { + this.etag = null; + } + this.headersSent = true; + this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage); + } else { + throw new RequestRetryError('Request failed', statusCode, { + headers, + data: { count: this.retryCount } + }); + } + } + onResponseData(controller, chunk) { + if (this.error) { + return; + } + this.start += chunk.length; + this.handler.onResponseData?.(controller, chunk); + } + onResponseEnd(controller, trailers) { + if (this.error && this.retryOpts.throwOnError) { + throw this.error; + } + if (!this.error) { + if (this.end != null && Number.isFinite(this.end)) { + if (this.start !== this.end + 1) { + throw new RequestRetryError('Content-Range mismatch', this.statusCode, { + headers: this.headers, + data: { count: this.retryCount } + }); + } + } + this.retryCount = 0; + return this.handler.onResponseEnd?.(controller, trailers); + } + this.retry(controller); + } + retry(controller) { + 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 (err) { + this.handler.onResponseError?.(controller, err); + } + } + onResponseError(controller, err) { + if (controller?.aborted || isDisturbed(this.opts.body)) { + this.handler.onResponseError?.(controller, err); + return; + } + function shouldRetry(returnedErr) { + if (!returnedErr) { + this.retry(controller); + return; + } + this.handler?.onResponseError?.(controller, returnedErr); + } + 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 } + }, + shouldRetry.bind(this) + ); + } + }; + module2.exports = RetryHandler; + } +}); + +// node_modules/undici/lib/dispatcher/retry-agent.js +var require_retry_agent = __commonJS({ + 'node_modules/undici/lib/dispatcher/retry-agent.js'(exports2, module2) { + '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(); + } + }; + module2.exports = RetryAgent; + } +}); + +// node_modules/undici/lib/dispatcher/h2c-client.js +var require_h2c_client = __commonJS({ + 'node_modules/undici/lib/dispatcher/h2c-client.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError } = require_errors(); + var Client = require_client(); + var H2CClient = class extends Client { + constructor(origin, clientOpts) { + if (typeof origin === 'string') { + origin = new URL(origin); + } + if (origin.protocol !== 'http:') { + throw new InvalidArgumentError('h2c-client: Only h2c protocol is supported'); + } + const { maxConcurrentStreams, pipelining, ...opts } = clientOpts ?? {}; + const defaultMaxConcurrentStreams = maxConcurrentStreams ?? 100; + let defaultPipelining = 100; + if (maxConcurrentStreams != null && (!Number.isInteger(maxConcurrentStreams) || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0'); + } + if (pipelining != null && Number.isInteger(pipelining) && pipelining > 0) { + defaultPipelining = pipelining; + } + if (defaultPipelining > defaultMaxConcurrentStreams) { + throw new InvalidArgumentError('h2c-client: pipelining cannot be greater than maxConcurrentStreams'); + } + super(origin, { + ...opts, + maxConcurrentStreams: defaultMaxConcurrentStreams, + pipelining: defaultPipelining, + allowH2: true, + useH2c: true + }); + } + }; + module2.exports = H2CClient; + } +}); + +// node_modules/undici/lib/api/readable.js +var require_readable = __commonJS({ + 'node_modules/undici/lib/api/readable.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { addAbortListener } = require('node:events'); + var { Readable } = require('node:stream'); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors(); + var util = require_util(); + var { ReadableStreamFrom } = require_util(); + var kConsume = /* @__PURE__ */ Symbol('kConsume'); + var kReading = /* @__PURE__ */ Symbol('kReading'); + var kBody = /* @__PURE__ */ Symbol('kBody'); + var kAbort = /* @__PURE__ */ Symbol('kAbort'); + var kContentType = /* @__PURE__ */ Symbol('kContentType'); + var kContentLength = /* @__PURE__ */ Symbol('kContentLength'); + var kUsed = /* @__PURE__ */ Symbol('kUsed'); + var kBytesRead = /* @__PURE__ */ Symbol('kBytesRead'); + var noop3 = () => {}; + var BodyReadable = class extends Readable { + /** + * @param {object} opts + * @param {(this: Readable, size: number) => void} opts.resume + * @param {() => (void | null)} opts.abort + * @param {string} [opts.contentType = ''] + * @param {number} [opts.contentLength] + * @param {number} [opts.highWaterMark = 64 * 1024] + */ + 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[kBytesRead] = 0; + this[kBody] = null; + this[kUsed] = false; + this[kContentType] = contentType; + this[kContentLength] = Number.isFinite(contentLength) ? contentLength : null; + this[kReading] = false; + } + /** + * @param {Error|null} err + * @param {(error:(Error|null)) => void} callback + * @returns {void} + */ + _destroy(err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError(); + } + if (err) { + this[kAbort](); + } + if (!this[kUsed]) { + setImmediate(callback, err); + } else { + callback(err); + } + } + /** + * @param {string|symbol} event + * @param {(...args: any[]) => void} listener + * @returns {this} + */ + on(event, listener) { + if (event === 'data' || event === 'readable') { + this[kReading] = true; + this[kUsed] = true; + } + return super.on(event, listener); + } + /** + * @param {string|symbol} event + * @param {(...args: any[]) => void} listener + * @returns {this} + */ + addListener(event, listener) { + return this.on(event, listener); + } + /** + * @param {string|symbol} event + * @param {(...args: any[]) => void} listener + * @returns {this} + */ + off(event, listener) { + const ret = super.off(event, listener); + if (event === 'data' || event === 'readable') { + this[kReading] = this.listenerCount('data') > 0 || this.listenerCount('readable') > 0; + } + return ret; + } + /** + * @param {string|symbol} event + * @param {(...args: any[]) => void} listener + * @returns {this} + */ + removeListener(event, listener) { + return this.off(event, listener); + } + /** + * @param {Buffer|null} chunk + * @returns {boolean} + */ + push(chunk) { + if (chunk) { + this[kBytesRead] += chunk.length; + if (this[kConsume]) { + consumePush(this[kConsume], chunk); + return this[kReading] ? super.push(chunk) : true; + } + } + return super.push(chunk); + } + /** + * Consumes and returns the body as a string. + * + * @see https://fetch.spec.whatwg.org/#dom-body-text + * @returns {Promise} + */ + text() { + return consume(this, 'text'); + } + /** + * Consumes and returns the body as a JavaScript Object. + * + * @see https://fetch.spec.whatwg.org/#dom-body-json + * @returns {Promise} + */ + json() { + return consume(this, 'json'); + } + /** + * Consumes and returns the body as a Blob + * + * @see https://fetch.spec.whatwg.org/#dom-body-blob + * @returns {Promise} + */ + blob() { + return consume(this, 'blob'); + } + /** + * Consumes and returns the body as an Uint8Array. + * + * @see https://fetch.spec.whatwg.org/#dom-body-bytes + * @returns {Promise} + */ + bytes() { + return consume(this, 'bytes'); + } + /** + * Consumes and returns the body as an ArrayBuffer. + * + * @see https://fetch.spec.whatwg.org/#dom-body-arraybuffer + * @returns {Promise} + */ + arrayBuffer() { + return consume(this, 'arrayBuffer'); + } + /** + * Not implemented + * + * @see https://fetch.spec.whatwg.org/#dom-body-formdata + * @throws {NotSupportedError} + */ + async formData() { + throw new NotSupportedError(); + } + /** + * Returns true if the body is not null and the body has been consumed. + * Otherwise, returns false. + * + * @see https://fetch.spec.whatwg.org/#dom-body-bodyused + * @readonly + * @returns {boolean} + */ + get bodyUsed() { + return util.isDisturbed(this); + } + /** + * @see https://fetch.spec.whatwg.org/#dom-body-body + * @readonly + * @returns {ReadableStream} + */ + get body() { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this); + if (this[kConsume]) { + this[kBody].getReader(); + assert(this[kBody].locked); + } + } + return this[kBody]; + } + /** + * Dumps the response body by reading `limit` number of bytes. + * @param {object} opts + * @param {number} [opts.limit = 131072] Number of bytes to read. + * @param {AbortSignal} [opts.signal] An AbortSignal to cancel the dump. + * @returns {Promise} + */ + dump(opts) { + const signal = opts?.signal; + if (signal != null && (typeof signal !== 'object' || !('aborted' in signal))) { + return Promise.reject(new InvalidArgumentError('signal must be an AbortSignal')); + } + const limit = opts?.limit && Number.isFinite(opts.limit) ? opts.limit : 128 * 1024; + if (signal?.aborted) { + return Promise.reject(signal.reason ?? new AbortError()); + } + if (this._readableState.closeEmitted) { + return Promise.resolve(null); + } + return new Promise((resolve2, reject) => { + if ((this[kContentLength] && this[kContentLength] > limit) || this[kBytesRead] > limit) { + this.destroy(new AbortError()); + } + if (signal) { + const onAbort = () => { + this.destroy(signal.reason ?? new AbortError()); + }; + const abortListener = addAbortListener(signal, onAbort); + this.on('close', function () { + abortListener[Symbol.dispose](); + if (signal.aborted) { + reject(signal.reason ?? new AbortError()); + } else { + resolve2(null); + } + }); + } else { + this.on('close', resolve2); + } + this.on('error', noop3) + .on('data', () => { + if (this[kBytesRead] > limit) { + this.destroy(); + } + }) + .resume(); + }); + } + /** + * @param {BufferEncoding} encoding + * @returns {this} + */ + setEncoding(encoding) { + if (Buffer.isEncoding(encoding)) { + this._readableState.encoding = encoding; + } + return this; + } + }; + function isLocked(bodyReadable) { + return bodyReadable[kBody]?.locked === true || bodyReadable[kConsume] !== null; + } + function isUnusable(bodyReadable) { + return util.isDisturbed(bodyReadable) || isLocked(bodyReadable); + } + function consume(stream, type) { + assert(!stream[kConsume]); + return new Promise((resolve2, reject) => { + if (isUnusable(stream)) { + const rState = stream._readableState; + if (rState.destroyed && rState.closeEmitted === false) { + stream.on('error', reject).on('close', () => { + reject(new TypeError('unusable')); + }); + } else { + reject(rState.errored ?? new TypeError('unusable')); + } + } else { + queueMicrotask(() => { + stream[kConsume] = { + type, + stream, + resolve: resolve2, + 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], this._readableState.encoding); + } else { + consume2.stream.on('end', function () { + consumeEnd(this[kConsume], this._readableState.encoding); + }); + } + consume2.stream.resume(); + while (consume2.stream.read() != null) {} + } + function chunksDecode(chunks, length, encoding) { + 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; + if (!encoding || encoding === 'utf8' || encoding === 'utf-8') { + return buffer.utf8Slice(start, bufferLength); + } else { + return buffer.subarray(start, bufferLength).toString(encoding); + } + } + 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, encoding) { + const { type, body, resolve: resolve2, stream, length } = consume2; + try { + if (type === 'text') { + resolve2(chunksDecode(body, length, encoding)); + } else if (type === 'json') { + resolve2(JSON.parse(chunksDecode(body, length, encoding))); + } else if (type === 'arrayBuffer') { + resolve2(chunksConcat(body, length).buffer); + } else if (type === 'blob') { + resolve2(new Blob(body, { type: stream[kContentType] })); + } else if (type === 'bytes') { + resolve2(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; + } + module2.exports = { + Readable: BodyReadable, + chunksDecode + }; + } +}); + +// node_modules/undici/lib/api/api-request.js +var require_api_request = __commonJS({ + 'node_modules/undici/lib/api/api-request.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { AsyncResource } = require('node:async_hooks'); + var { Readable } = require_readable(); + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var util = require_util(); + function noop3() {} + var RequestHandler = class extends AsyncResource { + constructor(opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + const { signal, method, opaque, body, onInfo, responseHeaders, highWaterMark } = opts; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback'); + } + if (highWaterMark != null && (!Number.isFinite(highWaterMark) || 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', noop3), 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.controller = null; + this.onInfo = onInfo || null; + this.highWaterMark = highWaterMark; + this.reason = null; + this.removeAbortListener = null; + if (signal?.aborted) { + this.reason = signal.reason ?? new RequestAbortedError(); + } else if (signal) { + this.removeAbortListener = util.addAbortListener(signal, () => { + this.reason = signal.reason ?? new RequestAbortedError(); + if (this.res) { + util.destroy(this.res.on('error', noop3), this.reason); + } else if (this.abort) { + this.abort(this.reason); + } + }); + } + } + onRequestStart(controller, context3) { + if (this.reason) { + controller.abort(this.reason); + return; + } + assert(this.callback); + this.controller = controller; + this.abort = reason => controller.abort(reason); + this.context = context3; + } + onResponseStart(controller, statusCode, headers, statusText) { + const { callback, opaque, context: context3, responseHeaders, highWaterMark } = this; + const rawHeaders = controller?.rawHeaders; + const responseHeaderData = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : headers; + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers: responseHeaderData }); + } + return; + } + const parsedHeaders = headers; + const contentType = parsedHeaders?.['content-type']; + const contentLength = parsedHeaders?.['content-length']; + const res = new Readable({ + resume: () => controller.resume(), + abort: reason => controller.abort(reason), + contentType, + contentLength: this.method !== 'HEAD' && contentLength ? Number(contentLength) : null, + highWaterMark + }); + if (this.removeAbortListener) { + res.on('close', this.removeAbortListener); + this.removeAbortListener = null; + } + this.callback = null; + this.res = res; + if (callback !== null) { + try { + this.runInAsyncScope(callback, null, null, { + statusCode, + statusText, + headers: responseHeaderData, + trailers: this.trailers, + opaque, + body: res, + context: context3 + }); + } catch (err) { + this.res = null; + util.destroy(res.on('error', noop3), err); + queueMicrotask(() => { + throw err; + }); + } + } + } + onResponseData(controller, chunk) { + if (!this.res) { + return; + } + if (this.res.push(chunk) === false) { + controller.pause(); + } + } + onResponseEnd(_controller, trailers) { + if (trailers && typeof trailers === 'object') { + for (const key of Object.keys(trailers)) { + if (key === '__proto__') { + Object.defineProperty(this.trailers, key, { + value: trailers[key], + enumerable: true, + configurable: true, + writable: true + }); + } else { + this.trailers[key] = trailers[key]; + } + } + } + this.res?.push(null); + } + onResponseError(_controller, 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.on('error', noop3), err); + }); + } + if (body) { + this.body = null; + if (util.isStream(body)) { + body.on('error', noop3); + util.destroy(body, err); + } + } + if (this.removeAbortListener) { + this.removeAbortListener(); + this.removeAbortListener = null; + } + } + }; + function request2(opts, callback) { + if (callback === void 0) { + return new Promise((resolve2, reject) => { + request2.call(this, opts, (err, data) => { + return err ? reject(err) : resolve2(data); + }); + }); + } + try { + const handler2 = new RequestHandler(opts, callback); + this.dispatch(opts, handler2); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = request2; + module2.exports.RequestHandler = RequestHandler; + } +}); + +// node_modules/undici/lib/api/abort-signal.js +var require_abort_signal = __commonJS({ + 'node_modules/undici/lib/api/abort-signal.js'(exports2, module2) { + 'use strict'; + var { addAbortListener } = require_util(); + var { RequestAbortedError } = require_errors(); + var kListener = /* @__PURE__ */ Symbol('kListener'); + var kSignal = /* @__PURE__ */ 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; + } + module2.exports = { + addSignal, + removeSignal + }; + } +}); + +// node_modules/undici/lib/api/api-stream.js +var require_api_stream = __commonJS({ + 'node_modules/undici/lib/api/api-stream.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { AsyncResource } = require('node:async_hooks'); + var { InvalidArgumentError, InvalidReturnValueError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + function noop3() {} + function getWritableError(stream2) { + return stream2.errored ?? stream2.writableErrored ?? stream2._writableState?.errored; + } + function createPrematureCloseError() { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + return err; + } + function trackWritableLifecycle(stream2, callback) { + let done = false; + const cleanup = () => { + stream2.removeListener('close', onClose); + stream2.removeListener('error', onError); + stream2.removeListener('finish', onFinish); + }; + const finish = (err, fromErrorEvent = false) => { + if (done) { + return; + } + done = true; + cleanup(); + callback(err, fromErrorEvent); + }; + const onClose = () => { + const err = getWritableError(stream2); + finish(err ?? (!stream2.writableFinished ? createPrematureCloseError() : void 0)); + }; + const onError = err => finish(err, true); + const onFinish = () => finish(); + stream2.on('close', onClose); + stream2.on('error', onError); + stream2.on('finish', onFinish); + if (stream2.closed) { + process.nextTick(onClose); + } else if (stream2.writableFinished) { + process.nextTick(onFinish); + } + } + var StreamHandler = class extends AsyncResource { + constructor(opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts'); + } + const { signal, method, opaque, body, onInfo, responseHeaders } = 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', noop3), 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.controller = null; + this.trailers = null; + this.body = body; + this.onInfo = onInfo || null; + if (util.isStream(body)) { + body.on('error', err => { + this.onResponseError(this.controller, err); + }); + } + addSignal(this, signal); + } + onRequestStart(controller, context3) { + if (this.reason) { + controller.abort(this.reason); + return; + } + assert(this.callback); + this.controller = controller; + this.abort = reason => controller.abort(reason); + this.context = context3; + } + onResponseStart(controller, statusCode, headers, _statusMessage) { + const { factory, opaque, context: context3, responseHeaders } = this; + const rawHeaders = controller?.rawHeaders; + const responseHeaderData = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : headers; + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers: responseHeaderData }); + } + return; + } + this.factory = null; + if (factory === null) { + return; + } + const res = this.runInAsyncScope(factory, null, { + statusCode, + headers: responseHeaderData, + opaque, + context: context3 + }); + if (!res || typeof res.write !== 'function' || typeof res.end !== 'function' || typeof res.on !== 'function') { + throw new InvalidReturnValueError('expected Writable'); + } + trackWritableLifecycle(res, (err, fromErrorEvent) => { + const { callback, res: res2, opaque: opaque2, trailers, abort } = this; + this.res = null; + if (err || !res2?.readable) { + util.destroy(res2, fromErrorEvent ? void 0 : err); + } + this.callback = null; + this.runInAsyncScope(callback, null, err || null, { opaque: opaque2, trailers }); + if (err) { + abort(err); + } + }); + res.on('drain', () => controller.resume()); + this.res = res; + const needDrain = res.writableNeedDrain !== void 0 ? res.writableNeedDrain : res._writableState?.needDrain; + if (needDrain === true) { + controller.pause(); + } + } + onResponseData(controller, chunk) { + const { res } = this; + if (!res) { + return; + } + if (res.write(chunk) === false) { + controller.pause(); + } + } + onResponseEnd(_controller, trailers) { + const { res } = this; + removeSignal(this); + if (!res) { + return; + } + if (trailers && typeof trailers === 'object') { + this.trailers = trailers; + } + res.end(); + } + onResponseError(_controller, 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((resolve2, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve2(data); + }); + }); + } + try { + const handler2 = new StreamHandler(opts, factory, callback); + this.dispatch(opts, handler2); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = stream; + } +}); + +// node_modules/undici/lib/api/api-pipeline.js +var require_api_pipeline = __commonJS({ + 'node_modules/undici/lib/api/api-pipeline.js'(exports2, module2) { + 'use strict'; + var { Readable, Duplex, PassThrough } = require('node:stream'); + var assert = require('node:assert'); + var { AsyncResource } = require('node:async_hooks'); + var { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = require_errors(); + var util = require_util(); + var { kBodyUsed } = require_symbols(); + var { addSignal, removeSignal } = require_abort_signal(); + function noop3() {} + var kResume = /* @__PURE__ */ Symbol('resume'); + var PipelineRequest = class extends Readable { + constructor() { + super({ autoDestroy: true }); + this[kResume] = null; + this[kBodyUsed] = true; + } + _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 AsyncResource { + 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', noop3); + 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); + } + onRequestStart(controller, context3) { + const { res } = this; + if (this.reason) { + controller.abort(this.reason); + return; + } + assert(!res, 'pipeline cannot be retried'); + this.abort = reason => controller.abort(reason); + this.context = context3; + } + onResponseStart(controller, statusCode, headers, _statusMessage) { + const { opaque, handler: handler2, context: context3 } = this; + if (statusCode < 200) { + if (this.onInfo) { + const rawHeaders = controller?.rawHeaders; + const responseHeaders = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : headers; + this.onInfo({ statusCode, headers: responseHeaders }); + } + return; + } + this.res = new PipelineResponse(() => controller.resume()); + let body; + try { + this.handler = null; + const rawHeaders = controller?.rawHeaders; + const responseHeaders = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : headers; + body = this.runInAsyncScope(handler2, null, { + statusCode, + headers: responseHeaders, + opaque, + body: this.res, + context: context3 + }); + } catch (err) { + this.res.on('error', noop3); + 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; + } + onResponseData(controller, chunk) { + const { res } = this; + if (res.push(chunk) === false) { + controller.pause(); + } + } + onResponseEnd(_controller, _trailers) { + const { res } = this; + res.push(null); + } + onResponseError(_controller, 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); + } + } + module2.exports = pipeline; + } +}); + +// node_modules/undici/lib/api/api-upgrade.js +var require_api_upgrade = __commonJS({ + 'node_modules/undici/lib/api/api-upgrade.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError, SocketError } = require_errors(); + var { AsyncResource } = require('node:async_hooks'); + var assert = require('node:assert'); + var util = require_util(); + var { kHTTP2Stream } = require_symbols(); + var { addSignal, removeSignal } = require_abort_signal(); + var UpgradeHandler = class extends AsyncResource { + 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); + } + onRequestStart(controller, context3) { + if (this.reason) { + controller.abort(this.reason); + return; + } + assert(this.callback); + this.abort = reason => controller.abort(reason); + this.context = context3; + } + onResponseStart() { + throw new SocketError('bad upgrade', null); + } + onRequestUpgrade(controller, statusCode, headers, socket) { + const expectedStatusCode = socket[kHTTP2Stream] === true ? 200 : 101; + if (statusCode !== expectedStatusCode) { + const socketInfo = socket[kHTTP2Stream] === true ? null : util.getSocketInfo(socket); + controller.abort(new SocketError('bad upgrade', socketInfo)); + return; + } + const { callback, opaque, context: context3 } = this; + removeSignal(this); + this.callback = null; + const rawHeaders = controller?.rawHeaders; + const responseHeaders = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : headers; + this.runInAsyncScope(callback, null, null, { + headers: responseHeaders, + socket, + opaque, + context: context3 + }); + } + onResponseError(_controller, 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((resolve2, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve2(data); + }); + }); + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback); + const upgradeOpts = { + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }; + this.dispatch(upgradeOpts, upgradeHandler); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = upgrade; + } +}); + +// node_modules/undici/lib/api/api-connect.js +var require_api_connect = __commonJS({ + 'node_modules/undici/lib/api/api-connect.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { AsyncResource } = require('node:async_hooks'); + var { InvalidArgumentError, SocketError } = require_errors(); + var util = require_util(); + var { addSignal, removeSignal } = require_abort_signal(); + var ConnectHandler = class extends AsyncResource { + 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); + } + onRequestStart(controller, context3) { + if (this.reason) { + controller.abort(this.reason); + return; + } + assert(this.callback); + this.abort = reason => controller.abort(reason); + this.context = context3; + } + onResponseStart() { + throw new SocketError('bad connect', null); + } + onRequestUpgrade(controller, statusCode, headers, socket) { + const { callback, opaque, context: context3 } = this; + removeSignal(this); + this.callback = null; + let responseHeaders = headers; + const rawHeaders = controller?.rawHeaders; + if (responseHeaders != null) { + responseHeaders = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : headers; + } + this.runInAsyncScope(callback, null, null, { + statusCode, + headers: responseHeaders, + socket, + opaque, + context: context3 + }); + } + onResponseError(_controller, 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((resolve2, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve2(data); + }); + }); + } + try { + const connectHandler = new ConnectHandler(opts, callback); + const connectOptions = { ...opts, method: 'CONNECT' }; + this.dispatch(connectOptions, connectHandler); + } catch (err) { + if (typeof callback !== 'function') { + throw err; + } + const opaque = opts?.opaque; + queueMicrotask(() => callback(err, { opaque })); + } + } + module2.exports = connect; + } +}); + +// node_modules/undici/lib/api/index.js +var require_api = __commonJS({ + 'node_modules/undici/lib/api/index.js'(exports2, module2) { + 'use strict'; + module2.exports.request = require_api_request(); + module2.exports.stream = require_api_stream(); + module2.exports.pipeline = require_api_pipeline(); + module2.exports.upgrade = require_api_upgrade(); + module2.exports.connect = require_api_connect(); + } +}); + +// node_modules/undici/lib/mock/mock-errors.js +var require_mock_errors = __commonJS({ + 'node_modules/undici/lib/mock/mock-errors.js'(exports2, module2) { + 'use strict'; + var { UndiciError } = require_errors(); + var kMockNotMatchedError = /* @__PURE__ */ Symbol.for('undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED'); + var MockNotMatchedError = class extends UndiciError { + constructor(message) { + super(message); + 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; + } + get [kMockNotMatchedError]() { + return true; + } + }; + module2.exports = { + MockNotMatchedError + }; + } +}); + +// node_modules/undici/lib/mock/mock-symbols.js +var require_mock_symbols = __commonJS({ + 'node_modules/undici/lib/mock/mock-symbols.js'(exports2, module2) { + 'use strict'; + module2.exports = { + kAgent: /* @__PURE__ */ Symbol('agent'), + kOptions: /* @__PURE__ */ Symbol('options'), + kFactory: /* @__PURE__ */ Symbol('factory'), + kDispatches: /* @__PURE__ */ Symbol('dispatches'), + kDispatchKey: /* @__PURE__ */ Symbol('dispatch key'), + kDefaultHeaders: /* @__PURE__ */ Symbol('default headers'), + kDefaultTrailers: /* @__PURE__ */ Symbol('default trailers'), + kContentLength: /* @__PURE__ */ Symbol('content length'), + kMockAgent: /* @__PURE__ */ Symbol('mock agent'), + kMockAgentSet: /* @__PURE__ */ Symbol('mock agent set'), + kMockAgentGet: /* @__PURE__ */ Symbol('mock agent get'), + kMockDispatch: /* @__PURE__ */ Symbol('mock dispatch'), + kClose: /* @__PURE__ */ Symbol('close'), + kOriginalClose: /* @__PURE__ */ Symbol('original agent close'), + kOriginalDispatch: /* @__PURE__ */ Symbol('original dispatch'), + kOrigin: /* @__PURE__ */ Symbol('origin'), + kIsMockActive: /* @__PURE__ */ Symbol('is mock active'), + kNetConnect: /* @__PURE__ */ Symbol('net connect'), + kGetNetConnect: /* @__PURE__ */ Symbol('get net connect'), + kConnected: /* @__PURE__ */ Symbol('connected'), + kIgnoreTrailingSlash: /* @__PURE__ */ Symbol('ignore trailing slash'), + kMockAgentMockCallHistoryInstance: /* @__PURE__ */ Symbol('mock agent mock call history name'), + kMockAgentRegisterCallHistory: /* @__PURE__ */ Symbol('mock agent register mock call history'), + kMockAgentAddCallHistoryLog: /* @__PURE__ */ Symbol('mock agent add call history log'), + kMockAgentIsCallHistoryEnabled: /* @__PURE__ */ Symbol('mock agent is call history enabled'), + kMockAgentAcceptsNonStandardSearchParameters: /* @__PURE__ */ Symbol( + 'mock agent accepts non standard search parameters' + ), + kMockCallHistoryAddLog: /* @__PURE__ */ Symbol('mock call history add log'), + kTotalDispatchCount: /* @__PURE__ */ Symbol('total dispatch count') + }; + } +}); + +// node_modules/undici/lib/mock/mock-utils.js +var require_mock_utils = __commonJS({ + 'node_modules/undici/lib/mock/mock-utils.js'(exports2, module2) { + 'use strict'; + var { MockNotMatchedError } = require_mock_errors(); + var { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect, kTotalDispatchCount } = + require_mock_symbols(); + var { serializePathWithQuery, parseHeaders } = require_util(); + var { STATUS_CODES } = require('node:http'); + var { + types: { isPromise } + } = require('node:util'); + var { InvalidArgumentError } = require_errors(); + function matchValue(match, value) { + if (typeof match === 'string') { + return match === value; + } + if (match instanceof RegExp) { + return match.test(value); + } + if (typeof match === 'function') { + return match(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 normalizeSearchParams(query) { + if (typeof query !== 'string') { + return query; + } + const originalQp = new URLSearchParams(query); + const normalizedQp = new URLSearchParams(); + for (let [key, value] of originalQp.entries()) { + key = key.replace('[]', ''); + const valueRepresentsString = /^(['"]).*\1$/.test(value); + if (valueRepresentsString) { + normalizedQp.append(key, value); + continue; + } + if (value.includes(',')) { + const values = value.split(','); + for (const v of values) { + normalizedQp.append(key, v); + } + continue; + } + normalizedQp.append(key, value); + } + return normalizedQp; + } + function safeUrl(path2) { + if (typeof path2 !== 'string') { + return path2; + } + const pathSegments = path2.split('?', 3); + if (pathSegments.length !== 2) { + return path2; + } + const qp = new URLSearchParams(pathSegments.pop()); + qp.sort(); + return [...pathSegments, qp.toString()].join('?'); + } + function matchKey(mockDispatch2, { path: path2, method, body, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path2); + 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 if (data) { + return data.toString(); + } else { + return ''; + } + } + function getMockDispatch(mockDispatches, key) { + const basePath = key.query ? serializePathWithQuery(key.path, key.query) : key.path; + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath; + const resolvedPathWithoutTrailingSlash = removeTrailingSlash(resolvedPath); + let matchedMockDispatches = mockDispatches + .filter(({ consumed }) => !consumed) + .filter(({ path: path2, ignoreTrailingSlash }) => { + return ignoreTrailingSlash + ? matchValue(removeTrailingSlash(safeUrl(path2)), resolvedPathWithoutTrailingSlash) + : matchValue(safeUrl(path2), 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, opts) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false, ...opts }; + const replyData = typeof data === 'function' ? { callback: data } : { ...data }; + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }; + mockDispatches.push(newMockDispatch); + mockDispatches[kTotalDispatchCount] = (mockDispatches[kTotalDispatchCount] || 0) + 1; + 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 removeTrailingSlash(path2) { + while (path2.endsWith('/')) { + path2 = path2.slice(0, -1); + } + if (path2.length === 0) { + path2 = '/'; + } + return path2; + } + function buildKey(opts) { + const { path: path2, method, body, headers, query } = opts; + return { + path: path2, + method, + body, + headers, + query + }; + } + 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.onResponseError(null, error2); + return true; + } + let aborted = false; + let timer = null; + const controller = { + paused: false, + rawHeaders: null, + rawTrailers: null, + pause() { + this.paused = true; + }, + resume() { + this.paused = false; + }, + abort: reason => { + if (aborted) { + return; + } + aborted = true; + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + handler2.onResponseError?.(controller, reason); + } + }; + handler2.onRequestStart?.(controller, null); + if (typeof delay === 'number' && delay > 0) { + timer = setTimeout(() => { + timer = null; + handleReply(this[kDispatches]); + }, delay); + } else { + handleReply(this[kDispatches]); + } + function handleReply(mockDispatches, _data = data) { + if (aborted) { + return; + } + const optsHeaders = Array.isArray(opts.headers) ? buildHeadersFromArray(opts.headers) : opts.headers; + const body = typeof _data === 'function' ? _data({ ...opts, headers: optsHeaders }) : _data; + if (isPromise(body)) { + return body.then(newData => handleReply(mockDispatches, newData)); + } + if (aborted) { + return; + } + const responseData = getResponseData2(body); + const responseHeaders = generateKeyValues(headers); + const responseTrailers = generateKeyValues(trailers); + controller.rawHeaders = responseHeaders; + controller.rawTrailers = responseTrailers; + handler2.onResponseStart?.(controller, statusCode, parseHeaders(responseHeaders), getStatusText(statusCode)); + handler2.onResponseData?.(controller, Buffer.from(responseData)); + handler2.onResponseEnd?.(controller, parseHeaders(responseTrailers)); + deleteMockDispatch(mockDispatches, key); + } + 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.code === 'UND_MOCK_ERR_MOCK_NOT_MATCHED') { + const netConnect = agent[kGetNetConnect](); + const totalInterceptsCount = this[kDispatches][kTotalDispatchCount] || this[kDispatches].length; + const pendingInterceptsCount = this[kDispatches].filter(({ consumed }) => !consumed).length; + const interceptsMessage = `, ${pendingInterceptsCount} interceptor(s) remaining out of ${totalInterceptsCount} defined`; + if (netConnect === false) { + throw new MockNotMatchedError( + `${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)${interceptsMessage}` + ); + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call( + this, + '__mockAgentBodyForDispatch' in opts ? { ...opts, body: opts.__mockAgentBodyForDispatch } : opts, + handler2 + ); + } else { + throw new MockNotMatchedError( + `${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)${interceptsMessage}` + ); + } + } 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 normalizeOrigin(origin) { + if (typeof origin !== 'string' && !(origin instanceof URL)) { + return origin; + } + if (origin instanceof URL) { + return origin.origin; + } + return origin.toLowerCase(); + } + function buildAndValidateMockOptions(opts) { + const { agent, ...mockOptions } = opts; + if ('enableCallHistory' in mockOptions && typeof mockOptions.enableCallHistory !== 'boolean') { + throw new InvalidArgumentError('options.enableCallHistory must to be a boolean'); + } + if ( + 'acceptNonStandardSearchParameters' in mockOptions && + typeof mockOptions.acceptNonStandardSearchParameters !== 'boolean' + ) { + throw new InvalidArgumentError('options.acceptNonStandardSearchParameters must to be a boolean'); + } + if ('ignoreTrailingSlash' in mockOptions && typeof mockOptions.ignoreTrailingSlash !== 'boolean') { + throw new InvalidArgumentError('options.ignoreTrailingSlash must to be a boolean'); + } + return mockOptions; + } + module2.exports = { + getResponseData: getResponseData2, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildAndValidateMockOptions, + getHeaderByName, + buildHeadersFromArray, + normalizeSearchParams, + normalizeOrigin + }; + } +}); + +// node_modules/undici/lib/mock/mock-interceptor.js +var require_mock_interceptor = __commonJS({ + 'node_modules/undici/lib/mock/mock-interceptor.js'(exports2, module2) { + 'use strict'; + var { getResponseData: getResponseData2, buildKey, addMockDispatch } = require_mock_utils(); + var { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch, + kIgnoreTrailingSlash + } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + var { serializePathWithQuery } = 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 = serializePathWithQuery(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[kIgnoreTrailingSlash] = opts.ignoreTrailingSlash ?? false; + 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, { + ignoreTrailingSlash: this[kIgnoreTrailingSlash] + }); + 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, { + ignoreTrailingSlash: this[kIgnoreTrailingSlash] + }); + 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 }, + { ignoreTrailingSlash: this[kIgnoreTrailingSlash] } + ); + 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; + } + }; + module2.exports.MockInterceptor = MockInterceptor; + module2.exports.MockScope = MockScope; + } +}); + +// node_modules/undici/lib/mock/mock-client.js +var require_mock_client = __commonJS({ + 'node_modules/undici/lib/mock/mock-client.js'(exports2, module2) { + 'use strict'; + var { promisify } = require('node:util'); + var Client = require_client(); + var { buildMockDispatch } = require_mock_utils(); + var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected, kIgnoreTrailingSlash } = + require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockClient = class extends Client { + constructor(origin, opts) { + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + super(origin, opts); + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kIgnoreTrailingSlash] = opts.ignoreTrailingSlash ?? false; + 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 && { ignoreTrailingSlash: this[kIgnoreTrailingSlash], ...opts }, this[kDispatches]); + } + cleanMocks() { + this[kDispatches] = []; + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockClient; + } +}); + +// node_modules/undici/lib/mock/mock-call-history.js +var require_mock_call_history = __commonJS({ + 'node_modules/undici/lib/mock/mock-call-history.js'(exports2, module2) { + 'use strict'; + var { kMockCallHistoryAddLog } = require_mock_symbols(); + var { InvalidArgumentError } = require_errors(); + function handleFilterCallsWithOptions(criteria, options, handler2, store, allLogs) { + switch (options.operator) { + case 'OR': + store.push(...handler2(criteria, allLogs)); + return store; + case 'AND': + return handler2(criteria, store); + default: + throw new InvalidArgumentError("options.operator must to be a case insensitive string equal to 'OR' or 'AND'"); + } + } + function buildAndValidateFilterCallsOptions(options = {}) { + const finalOptions = {}; + if ('operator' in options) { + if ( + typeof options.operator !== 'string' || + (options.operator.toUpperCase() !== 'OR' && options.operator.toUpperCase() !== 'AND') + ) { + throw new InvalidArgumentError("options.operator must to be a case insensitive string equal to 'OR' or 'AND'"); + } + return { + ...finalOptions, + operator: options.operator.toUpperCase() + }; + } + return finalOptions; + } + function makeFilterCalls(parameterName) { + return (parameterValue, logs = this.logs) => { + if (typeof parameterValue === 'string' || parameterValue == null) { + return logs.filter(log => { + return log[parameterName] === parameterValue; + }); + } + if (parameterValue instanceof RegExp) { + return logs.filter(log => { + return parameterValue.test(log[parameterName]); + }); + } + throw new InvalidArgumentError(`${parameterName} parameter should be one of string, regexp, undefined or null`); + }; + } + function computeUrlWithMaybeSearchParameters(requestInit) { + try { + const url = new URL(requestInit.path, requestInit.origin); + if (url.search.length !== 0) { + return url; + } + url.search = new URLSearchParams(requestInit.query).toString(); + return url; + } catch (error2) { + throw new InvalidArgumentError('An error occurred when computing MockCallHistoryLog.url', { cause: error2 }); + } + } + var MockCallHistoryLog = class { + constructor(requestInit = {}) { + this.body = requestInit.body; + this.headers = requestInit.headers; + this.method = requestInit.method; + const url = computeUrlWithMaybeSearchParameters(requestInit); + this.fullUrl = url.toString(); + this.origin = url.origin; + this.path = url.pathname; + this.searchParams = Object.fromEntries(url.searchParams); + this.protocol = url.protocol; + this.host = url.host; + this.port = url.port; + this.hash = url.hash; + } + toMap() { + return /* @__PURE__ */ new Map([ + ['protocol', this.protocol], + ['host', this.host], + ['port', this.port], + ['origin', this.origin], + ['path', this.path], + ['hash', this.hash], + ['searchParams', this.searchParams], + ['fullUrl', this.fullUrl], + ['method', this.method], + ['body', this.body], + ['headers', this.headers] + ]); + } + toString() { + const options = { betweenKeyValueSeparator: '->', betweenPairSeparator: '|' }; + let result = ''; + this.toMap().forEach((value, key) => { + if (typeof value === 'string' || value === void 0 || value === null) { + result = `${result}${key}${options.betweenKeyValueSeparator}${value}${options.betweenPairSeparator}`; + } + if ((typeof value === 'object' && value !== null) || Array.isArray(value)) { + result = `${result}${key}${options.betweenKeyValueSeparator}${JSON.stringify(value)}${options.betweenPairSeparator}`; + } + }); + return result.slice(0, -1); + } + }; + var MockCallHistory = class { + logs = []; + calls() { + return this.logs; + } + firstCall() { + return this.logs.at(0); + } + lastCall() { + return this.logs.at(-1); + } + nthCall(number) { + if (typeof number !== 'number') { + throw new InvalidArgumentError('nthCall must be called with a number'); + } + if (!Number.isInteger(number)) { + throw new InvalidArgumentError('nthCall must be called with an integer'); + } + if (Math.sign(number) !== 1) { + throw new InvalidArgumentError('nthCall must be called with a positive value. use firstCall or lastCall instead'); + } + return this.logs.at(number - 1); + } + filterCalls(criteria, options) { + if (this.logs.length === 0) { + return this.logs; + } + if (typeof criteria === 'function') { + return this.logs.filter(criteria); + } + if (criteria instanceof RegExp) { + return this.logs.filter(log => { + return criteria.test(log.toString()); + }); + } + if (typeof criteria === 'object' && criteria !== null) { + if (Object.keys(criteria).length === 0) { + return this.logs; + } + const finalOptions = { operator: 'OR', ...buildAndValidateFilterCallsOptions(options) }; + let maybeDuplicatedLogsFiltered = finalOptions.operator === 'AND' ? this.logs : []; + if ('protocol' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.protocol, + finalOptions, + this.filterCallsByProtocol, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + if ('host' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.host, + finalOptions, + this.filterCallsByHost, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + if ('port' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.port, + finalOptions, + this.filterCallsByPort, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + if ('origin' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.origin, + finalOptions, + this.filterCallsByOrigin, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + if ('path' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.path, + finalOptions, + this.filterCallsByPath, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + if ('hash' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.hash, + finalOptions, + this.filterCallsByHash, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + if ('fullUrl' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.fullUrl, + finalOptions, + this.filterCallsByFullUrl, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + if ('method' in criteria) { + maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions( + criteria.method, + finalOptions, + this.filterCallsByMethod, + maybeDuplicatedLogsFiltered, + this.logs + ); + } + const uniqLogsFiltered = [...new Set(maybeDuplicatedLogsFiltered)]; + return uniqLogsFiltered; + } + throw new InvalidArgumentError('criteria parameter should be one of function, regexp, or object'); + } + filterCallsByProtocol = makeFilterCalls.call(this, 'protocol'); + filterCallsByHost = makeFilterCalls.call(this, 'host'); + filterCallsByPort = makeFilterCalls.call(this, 'port'); + filterCallsByOrigin = makeFilterCalls.call(this, 'origin'); + filterCallsByPath = makeFilterCalls.call(this, 'path'); + filterCallsByHash = makeFilterCalls.call(this, 'hash'); + filterCallsByFullUrl = makeFilterCalls.call(this, 'fullUrl'); + filterCallsByMethod = makeFilterCalls.call(this, 'method'); + clear() { + this.logs = []; + } + [kMockCallHistoryAddLog](requestInit) { + const log = new MockCallHistoryLog(requestInit); + this.logs.push(log); + return log; + } + *[Symbol.iterator]() { + for (const log of this.calls()) { + yield log; + } + } + }; + module2.exports.MockCallHistory = MockCallHistory; + module2.exports.MockCallHistoryLog = MockCallHistoryLog; + } +}); + +// node_modules/undici/lib/mock/mock-pool.js +var require_mock_pool = __commonJS({ + 'node_modules/undici/lib/mock/mock-pool.js'(exports2, module2) { + 'use strict'; + var { promisify } = require('node:util'); + var Pool = require_pool(); + var { buildMockDispatch } = require_mock_utils(); + var { kDispatches, kMockAgent, kClose, kOriginalClose, kOrigin, kOriginalDispatch, kConnected, kIgnoreTrailingSlash } = + require_mock_symbols(); + var { MockInterceptor } = require_mock_interceptor(); + var Symbols = require_symbols(); + var { InvalidArgumentError } = require_errors(); + var MockPool = class extends Pool { + constructor(origin, opts) { + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent'); + } + super(origin, opts); + this[kMockAgent] = opts.agent; + this[kOrigin] = origin; + this[kIgnoreTrailingSlash] = opts.ignoreTrailingSlash ?? false; + 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 && { ignoreTrailingSlash: this[kIgnoreTrailingSlash], ...opts }, this[kDispatches]); + } + cleanMocks() { + this[kDispatches] = []; + } + async [kClose]() { + await promisify(this[kOriginalClose])(); + this[kConnected] = 0; + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); + } + }; + module2.exports = MockPool; + } +}); + +// node_modules/undici/lib/mock/pending-interceptors-formatter.js +var require_pending_interceptors_formatter = __commonJS({ + 'node_modules/undici/lib/mock/pending-interceptors-formatter.js'(exports2, module2) { + '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 '; + module2.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: path2, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path2, + 'Status code': statusCode, + Persistent: persist ? PERSISTENT : NOT_PERSISTENT, + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + }) + ); + this.logger.table(withPrettyHeaders); + return this.transform.read().toString(); + } + }; + } +}); + +// node_modules/undici/lib/mock/mock-agent.js +var require_mock_agent = __commonJS({ + 'node_modules/undici/lib/mock/mock-agent.js'(exports2, module2) { + 'use strict'; + var { kClients } = require_symbols(); + var Agent = require_agent(); + var { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory, + kMockAgentRegisterCallHistory, + kMockAgentIsCallHistoryEnabled, + kMockAgentAddCallHistoryLog, + kMockAgentMockCallHistoryInstance, + kMockAgentAcceptsNonStandardSearchParameters, + kMockCallHistoryAddLog, + kIgnoreTrailingSlash + } = require_mock_symbols(); + var MockClient = require_mock_client(); + var MockPool = require_mock_pool(); + var { matchValue, normalizeSearchParams, buildAndValidateMockOptions, normalizeOrigin } = require_mock_utils(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var Dispatcher = require_dispatcher(); + var PendingInterceptorsFormatter = require_pending_interceptors_formatter(); + var { MockCallHistory } = require_mock_call_history(); + var MockAgent = class extends Dispatcher { + constructor(opts = {}) { + super(opts); + const mockOptions = buildAndValidateMockOptions(opts); + this[kNetConnect] = true; + this[kIsMockActive] = true; + this[kMockAgentIsCallHistoryEnabled] = mockOptions.enableCallHistory ?? false; + this[kMockAgentAcceptsNonStandardSearchParameters] = mockOptions.acceptNonStandardSearchParameters ?? false; + this[kIgnoreTrailingSlash] = mockOptions.ignoreTrailingSlash ?? false; + 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] = mockOptions; + if (this[kMockAgentIsCallHistoryEnabled]) { + this[kMockAgentRegisterCallHistory](); + } + } + get(origin) { + const normalizedOrigin = normalizeOrigin(origin); + const originKey = this[kIgnoreTrailingSlash] ? normalizedOrigin.replace(/\/$/, '') : normalizedOrigin; + let dispatcher = this[kMockAgentGet](originKey); + if (!dispatcher) { + dispatcher = this[kFactory](originKey); + this[kMockAgentSet](originKey, dispatcher); + } + return dispatcher; + } + dispatch(opts, handler2) { + opts.origin = normalizeOrigin(opts.origin); + this.get(opts.origin); + this[kMockAgentAddCallHistoryLog](opts); + const acceptNonStandardSearchParameters = this[kMockAgentAcceptsNonStandardSearchParameters]; + const dispatchOpts = { ...opts }; + if (acceptNonStandardSearchParameters && dispatchOpts.path) { + const [path2, searchParams] = dispatchOpts.path.split('?'); + const normalizedSearchParams = normalizeSearchParams(searchParams, acceptNonStandardSearchParameters); + dispatchOpts.path = `${path2}?${normalizedSearchParams}`; + } + return this[kAgent].dispatch(dispatchOpts, handler2); + } + async close() { + this.clearCallHistory(); + 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; + } + enableCallHistory() { + this[kMockAgentIsCallHistoryEnabled] = true; + return this; + } + disableCallHistory() { + this[kMockAgentIsCallHistoryEnabled] = false; + return this; + } + getCallHistory() { + return this[kMockAgentMockCallHistoryInstance]; + } + clearCallHistory() { + if (this[kMockAgentMockCallHistoryInstance] !== void 0) { + this[kMockAgentMockCallHistoryInstance].clear(); + } + } + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive() { + return this[kIsMockActive]; + } + [kMockAgentRegisterCallHistory]() { + if (this[kMockAgentMockCallHistoryInstance] === void 0) { + this[kMockAgentMockCallHistoryInstance] = new MockCallHistory(); + } + } + [kMockAgentAddCallHistoryLog](opts) { + if (this[kMockAgentIsCallHistoryEnabled]) { + this[kMockAgentRegisterCallHistory](); + this[kMockAgentMockCallHistoryInstance][kMockCallHistoryAddLog](opts); + } + } + [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 dispatcher = this[kClients].get(origin); + if (dispatcher) { + return dispatcher; + } + if (typeof origin !== 'string') { + const dispatcher2 = this[kFactory]('http://localhost:9999'); + this[kMockAgentSet](origin, dispatcher2); + return dispatcher2; + } + for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) { + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher2 = this[kFactory](origin); + this[kMockAgentSet](origin, dispatcher2); + dispatcher2[kDispatches] = nonExplicitDispatcher[kDispatches]; + return dispatcher2; + } + } + } + [kGetNetConnect]() { + return this[kNetConnect]; + } + pendingInterceptors() { + const mockAgentClients = this[kClients]; + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, dispatcher]) => dispatcher[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending); + } + assertNoPendingInterceptors({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors(); + if (pending.length === 0) { + return; + } + throw new UndiciError( + pending.length === 1 + ? `1 interceptor is pending: + +${pendingInterceptorsFormatter.format(pending)}`.trim() + : `${pending.length} interceptors are pending: + +${pendingInterceptorsFormatter.format(pending)}`.trim() + ); + } + }; + module2.exports = MockAgent; + } +}); + +// node_modules/undici/lib/mock/snapshot-utils.js +var require_snapshot_utils = __commonJS({ + 'node_modules/undici/lib/mock/snapshot-utils.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError } = require_errors(); + var { runtimeFeatures } = require_runtime_features(); + function createHeaderFilters(matchOptions = {}) { + const { ignoreHeaders = [], excludeHeaders = [], matchHeaders = [], caseSensitive = false } = matchOptions; + return { + ignore: new Set(ignoreHeaders.map(header => (caseSensitive ? header : header.toLowerCase()))), + exclude: new Set(excludeHeaders.map(header => (caseSensitive ? header : header.toLowerCase()))), + match: new Set(matchHeaders.map(header => (caseSensitive ? header : header.toLowerCase()))) + }; + } + var crypto2 = runtimeFeatures.has('crypto') ? require('node:crypto') : null; + var hashId = crypto2?.hash + ? value => crypto2.hash('sha256', value, 'base64url') + : value => Buffer.from(value).toString('base64url'); + function isUndiciHeaders(headers) { + return Array.isArray(headers) && (headers.length & 1) === 0; + } + function isUrlExcludedFactory(excludePatterns = []) { + if (excludePatterns.length === 0) { + return () => false; + } + return function isUrlExcluded(url) { + let urlLowerCased; + for (const pattern of excludePatterns) { + if (typeof pattern === 'string') { + if (!urlLowerCased) { + urlLowerCased = url.toLowerCase(); + } + if (urlLowerCased.includes(pattern.toLowerCase())) { + return true; + } + } else if (pattern instanceof RegExp) { + if (pattern.test(url)) { + return true; + } + } + } + return false; + }; + } + function normalizeHeaders(headers) { + const normalizedHeaders = {}; + if (!headers) return normalizedHeaders; + if (isUndiciHeaders(headers)) { + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i]; + const value = headers[i + 1]; + if (key && value !== void 0) { + const keyStr = Buffer.isBuffer(key) ? key.toString() : key; + const valueStr = Buffer.isBuffer(value) ? value.toString() : value; + normalizedHeaders[keyStr.toLowerCase()] = valueStr; + } + } + return normalizedHeaders; + } + if (headers && typeof headers === 'object') { + for (const [key, value] of Object.entries(headers)) { + if (key && typeof key === 'string') { + normalizedHeaders[key.toLowerCase()] = Array.isArray(value) ? value.join(', ') : String(value); + } + } + } + return normalizedHeaders; + } + var validSnapshotModes = + /** @type {const} */ + ['record', 'playback', 'update']; + function validateSnapshotMode(mode) { + if (!validSnapshotModes.includes(mode)) { + throw new InvalidArgumentError(`Invalid snapshot mode: ${mode}. Must be one of: ${validSnapshotModes.join(', ')}`); + } + } + module2.exports = { + createHeaderFilters, + hashId, + isUndiciHeaders, + normalizeHeaders, + isUrlExcludedFactory, + validateSnapshotMode + }; + } +}); + +// node_modules/undici/lib/mock/snapshot-recorder.js +var require_snapshot_recorder = __commonJS({ + 'node_modules/undici/lib/mock/snapshot-recorder.js'(exports2, module2) { + 'use strict'; + var { writeFile: writeFile2, readFile, mkdir: mkdir2 } = require('node:fs/promises'); + var { dirname, resolve: resolve2 } = require('node:path'); + var { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = require('node:timers'); + var { InvalidArgumentError, UndiciError } = require_errors(); + var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils(); + function normalizeUrlForMatching(url, matchQuery, normalizeQuery) { + if (matchQuery === false) return `${url.origin}${url.pathname}`; + if (normalizeQuery) { + const normalized = String(normalizeQuery(url.searchParams) ?? ''); + return normalized ? `${url.origin}${url.pathname}?${normalized}` : `${url.origin}${url.pathname}`; + } + return url.toString(); + } + function normalizeBodyForMatching(body, matchBody, normalizeBody) { + if (matchBody === false) return ''; + if (normalizeBody) return String(normalizeBody(body) ?? ''); + return body ? String(body) : ''; + } + function formatRequestKey(opts, headerFilters, matchOptions = {}) { + const url = new URL(opts.path, opts.origin); + const normalized = opts._normalizedHeaders || normalizeHeaders(opts.headers); + if (!opts._normalizedHeaders) { + opts._normalizedHeaders = normalized; + } + return { + method: opts.method || 'GET', + url: normalizeUrlForMatching(url, matchOptions.matchQuery, matchOptions.normalizeQuery), + headers: filterHeadersForMatching(normalized, headerFilters, matchOptions), + body: normalizeBodyForMatching(opts.body, matchOptions.matchBody, matchOptions.normalizeBody) + }; + } + function filterHeadersForMatching(headers, headerFilters, matchOptions = {}) { + if (!headers || typeof headers !== 'object') return {}; + const { caseSensitive = false } = matchOptions; + const filtered = {}; + const { ignore, exclude, match } = headerFilters; + for (const [key, value] of Object.entries(headers)) { + const headerKey = caseSensitive ? key : key.toLowerCase(); + if (exclude.has(headerKey)) continue; + if (ignore.has(headerKey)) continue; + if (match.size !== 0) { + if (!match.has(headerKey)) continue; + } + filtered[headerKey] = value; + } + return filtered; + } + function filterHeadersForStorage(headers, headerFilters, matchOptions = {}) { + if (!headers || typeof headers !== 'object') return {}; + const { caseSensitive = false } = matchOptions; + const filtered = {}; + const { exclude: excludeSet } = headerFilters; + for (const [key, value] of Object.entries(headers)) { + const headerKey = caseSensitive ? key : key.toLowerCase(); + if (excludeSet.has(headerKey)) continue; + filtered[headerKey] = value; + } + return filtered; + } + function createRequestHash(formattedRequest) { + const parts = [formattedRequest.method, formattedRequest.url]; + if (formattedRequest.headers && typeof formattedRequest.headers === 'object') { + const headerKeys = Object.keys(formattedRequest.headers).sort(); + for (const key of headerKeys) { + const values = Array.isArray(formattedRequest.headers[key]) + ? formattedRequest.headers[key] + : [formattedRequest.headers[key]]; + parts.push(key); + for (const value of values.sort()) { + parts.push(String(value)); + } + } + } + parts.push(formattedRequest.body); + const content = parts.join('|'); + return hashId(content); + } + var SnapshotRecorder = class { + /** @type {NodeJS.Timeout | null} */ + #flushTimeout; + /** @type {import('./snapshot-utils').IsUrlExcluded} */ + #isUrlExcluded; + /** @type {Map} */ + #snapshots = /* @__PURE__ */ new Map(); + /** @type {string|undefined} */ + #snapshotPath; + /** @type {number} */ + #maxSnapshots = Infinity; + /** @type {boolean} */ + #autoFlush = false; + /** @type {import('./snapshot-utils').HeaderFilters} */ + #headerFilters; + /** + * Creates a new SnapshotRecorder instance + * @param {SnapshotRecorderOptions&SnapshotRecorderMatchOptions} [options={}] - Configuration options for the recorder + */ + constructor(options = {}) { + this.#snapshotPath = options.snapshotPath; + this.#maxSnapshots = options.maxSnapshots || Infinity; + this.#autoFlush = options.autoFlush || false; + this.flushInterval = options.flushInterval || 3e4; + this._flushTimer = null; + this.matchOptions = { + matchHeaders: options.matchHeaders || [], + // empty means match all headers + ignoreHeaders: options.ignoreHeaders || [], + excludeHeaders: options.excludeHeaders || [], + matchBody: options.matchBody !== false, + // default: true + normalizeBody: options.normalizeBody || void 0, + matchQuery: options.matchQuery !== false, + // default: true + normalizeQuery: options.normalizeQuery || void 0, + caseSensitive: options.caseSensitive || false + }; + this.#headerFilters = createHeaderFilters(this.matchOptions); + this.shouldRecord = options.shouldRecord || (() => true); + this.shouldPlayback = options.shouldPlayback || (() => true); + this.#isUrlExcluded = isUrlExcludedFactory(options.excludeUrls); + if (this.#autoFlush && this.#snapshotPath) { + this.#startAutoFlush(); + } + } + /** + * Records a request-response interaction + * @param {SnapshotRequestOptions} requestOpts - Request options + * @param {SnapshotEntryResponse} response - Response data to record + * @return {Promise} - Resolves when the recording is complete + */ + async record(requestOpts, response) { + if (!this.shouldRecord(requestOpts)) { + return; + } + if (this.isUrlExcluded(requestOpts)) { + return; + } + const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions); + const hash = createRequestHash(request2); + const normalizedHeaders = normalizeHeaders(response.headers); + const responseData = { + statusCode: response.statusCode, + headers: filterHeadersForStorage(normalizedHeaders, this.#headerFilters, this.matchOptions), + body: Buffer.isBuffer(response.body) + ? response.body.toString('base64') + : Buffer.from(String(response.body || '')).toString('base64'), + trailers: response.trailers + }; + if (this.#snapshots.size >= this.#maxSnapshots && !this.#snapshots.has(hash)) { + const oldestKey = this.#snapshots.keys().next().value; + this.#snapshots.delete(oldestKey); + } + const existingSnapshot = this.#snapshots.get(hash); + if (existingSnapshot && existingSnapshot.responses) { + existingSnapshot.responses.push(responseData); + existingSnapshot.timestamp = /* @__PURE__ */ new Date().toISOString(); + } else { + this.#snapshots.set(hash, { + request: request2, + responses: [responseData], + // Always store as array for consistency + callCount: 0, + timestamp: /* @__PURE__ */ new Date().toISOString() + }); + } + if (this.#autoFlush && this.#snapshotPath) { + this.#scheduleFlush(); + } + } + /** + * Checks if a URL should be excluded from recording/playback + * @param {SnapshotRequestOptions} requestOpts - Request options to check + * @returns {boolean} - True if URL is excluded + */ + isUrlExcluded(requestOpts) { + const url = new URL(requestOpts.path, requestOpts.origin).toString(); + return this.#isUrlExcluded(url); + } + /** + * Finds a matching snapshot for the given request + * Returns the appropriate response based on call count for sequential responses + * + * @param {SnapshotRequestOptions} requestOpts - Request options to match + * @returns {SnapshotEntry&Record<'response', SnapshotEntryResponse>|undefined} - Matching snapshot response or undefined if not found + */ + findSnapshot(requestOpts) { + if (!this.shouldPlayback(requestOpts)) { + return void 0; + } + if (this.isUrlExcluded(requestOpts)) { + return void 0; + } + const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions); + const hash = createRequestHash(request2); + const snapshot = this.#snapshots.get(hash); + if (!snapshot) return void 0; + const currentCallCount = snapshot.callCount || 0; + const responseIndex = Math.min(currentCallCount, snapshot.responses.length - 1); + snapshot.callCount = currentCallCount + 1; + return { + ...snapshot, + response: snapshot.responses[responseIndex] + }; + } + /** + * Loads snapshots from file + * @param {string} [filePath] - Optional file path to load snapshots from + * @return {Promise} - Resolves when snapshots are loaded + */ + async loadSnapshots(filePath) { + const path2 = filePath || this.#snapshotPath; + if (!path2) { + throw new InvalidArgumentError('Snapshot path is required'); + } + try { + const data = await readFile(resolve2(path2), 'utf8'); + const parsed = JSON.parse(data); + if (Array.isArray(parsed)) { + this.#snapshots.clear(); + for (const { hash, snapshot } of parsed) { + this.#snapshots.set(hash, snapshot); + } + } else { + this.#snapshots = new Map(Object.entries(parsed)); + } + } catch (error2) { + if (error2.code === 'ENOENT') { + this.#snapshots.clear(); + } else { + throw new UndiciError(`Failed to load snapshots from ${path2}`, { cause: error2 }); + } + } + } + /** + * Saves snapshots to file + * + * @param {string} [filePath] - Optional file path to save snapshots + * @returns {Promise} - Resolves when snapshots are saved + */ + async saveSnapshots(filePath) { + const path2 = filePath || this.#snapshotPath; + if (!path2) { + throw new InvalidArgumentError('Snapshot path is required'); + } + const resolvedPath = resolve2(path2); + await mkdir2(dirname(resolvedPath), { recursive: true }); + const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({ + hash, + snapshot + })); + await writeFile2(resolvedPath, JSON.stringify(data, null, 2), { flush: true }); + } + /** + * Clears all recorded snapshots + * @returns {void} + */ + clear() { + this.#snapshots.clear(); + } + /** + * Gets all recorded snapshots + * @return {Array} - Array of all recorded snapshots + */ + getSnapshots() { + return Array.from(this.#snapshots.values()); + } + /** + * Gets snapshot count + * @return {number} - Number of recorded snapshots + */ + size() { + return this.#snapshots.size; + } + /** + * Resets call counts for all snapshots (useful for test cleanup) + * @returns {void} + */ + resetCallCounts() { + for (const snapshot of this.#snapshots.values()) { + snapshot.callCount = 0; + } + } + /** + * Deletes a specific snapshot by request options + * @param {SnapshotRequestOptions} requestOpts - Request options to match + * @returns {boolean} - True if snapshot was deleted, false if not found + */ + deleteSnapshot(requestOpts) { + const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions); + const hash = createRequestHash(request2); + return this.#snapshots.delete(hash); + } + /** + * Gets information about a specific snapshot + * @param {SnapshotRequestOptions} requestOpts - Request options to match + * @returns {SnapshotInfo|null} - Snapshot information or null if not found + */ + getSnapshotInfo(requestOpts) { + const request2 = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions); + const hash = createRequestHash(request2); + const snapshot = this.#snapshots.get(hash); + if (!snapshot) return null; + return { + hash, + request: snapshot.request, + responseCount: snapshot.responses ? snapshot.responses.length : snapshot.response ? 1 : 0, + // .response for legacy snapshots + callCount: snapshot.callCount || 0, + timestamp: snapshot.timestamp + }; + } + /** + * Replaces all snapshots with new data (full replacement) + * @param {Array<{hash: string; snapshot: SnapshotEntry}>|Record} snapshotData - New snapshot data to replace existing ones + * @returns {void} + */ + replaceSnapshots(snapshotData) { + this.#snapshots.clear(); + if (Array.isArray(snapshotData)) { + for (const { hash, snapshot } of snapshotData) { + this.#snapshots.set(hash, snapshot); + } + } else if (snapshotData && typeof snapshotData === 'object') { + this.#snapshots = new Map(Object.entries(snapshotData)); + } + } + /** + * Starts the auto-flush timer + * @returns {void} + */ + #startAutoFlush() { + return this.#scheduleFlush(); + } + /** + * Stops the auto-flush timer + * @returns {void} + */ + #stopAutoFlush() { + if (this.#flushTimeout) { + clearTimeout2(this.#flushTimeout); + this.saveSnapshots().catch(() => {}); + this.#flushTimeout = null; + } + } + /** + * Schedules a flush (debounced to avoid excessive writes) + */ + #scheduleFlush() { + this.#flushTimeout = setTimeout2(() => { + this.saveSnapshots().catch(() => {}); + if (this.#autoFlush) { + this.#flushTimeout?.refresh(); + } else { + this.#flushTimeout = null; + } + }, 1e3); + } + /** + * Cleanup method to stop timers + * @returns {void} + */ + destroy() { + this.#stopAutoFlush(); + if (this.#flushTimeout) { + clearTimeout2(this.#flushTimeout); + this.#flushTimeout = null; + } + } + /** + * Async close method that saves all recordings and performs cleanup + * @returns {Promise} + */ + async close() { + if (this.#snapshotPath && this.#snapshots.size !== 0) { + await this.saveSnapshots(); + } + this.destroy(); + } + }; + module2.exports = { + SnapshotRecorder, + formatRequestKey, + createRequestHash, + filterHeadersForMatching, + filterHeadersForStorage, + createHeaderFilters + }; + } +}); + +// node_modules/undici/lib/mock/snapshot-agent.js +var require_snapshot_agent = __commonJS({ + 'node_modules/undici/lib/mock/snapshot-agent.js'(exports2, module2) { + 'use strict'; + var Agent = require_agent(); + var MockAgent = require_mock_agent(); + var { SnapshotRecorder } = require_snapshot_recorder(); + var { InvalidArgumentError, UndiciError } = require_errors(); + var util = require_util(); + var { validateSnapshotMode } = require_snapshot_utils(); + var kSnapshotRecorder = /* @__PURE__ */ Symbol('kSnapshotRecorder'); + var kSnapshotMode = /* @__PURE__ */ Symbol('kSnapshotMode'); + var kSnapshotPath = /* @__PURE__ */ Symbol('kSnapshotPath'); + var kSnapshotLoaded = /* @__PURE__ */ Symbol('kSnapshotLoaded'); + var kRealAgent = /* @__PURE__ */ Symbol('kRealAgent'); + var warningEmitted = false; + var SnapshotAgent = class extends MockAgent { + constructor(opts = {}) { + if (!warningEmitted) { + process.emitWarning('SnapshotAgent is experimental and subject to change', 'ExperimentalWarning'); + warningEmitted = true; + } + const { mode = 'record', snapshotPath = null, ...mockAgentOpts } = opts; + super(mockAgentOpts); + validateSnapshotMode(mode); + if ((mode === 'playback' || mode === 'update') && !snapshotPath) { + throw new InvalidArgumentError(`snapshotPath is required when mode is '${mode}'`); + } + this[kSnapshotMode] = mode; + this[kSnapshotPath] = snapshotPath; + this[kSnapshotRecorder] = new SnapshotRecorder({ + snapshotPath: this[kSnapshotPath], + mode: this[kSnapshotMode], + maxSnapshots: opts.maxSnapshots, + autoFlush: opts.autoFlush, + flushInterval: opts.flushInterval, + matchHeaders: opts.matchHeaders, + ignoreHeaders: opts.ignoreHeaders, + excludeHeaders: opts.excludeHeaders, + matchBody: opts.matchBody, + normalizeBody: opts.normalizeBody, + matchQuery: opts.matchQuery, + normalizeQuery: opts.normalizeQuery, + caseSensitive: opts.caseSensitive, + shouldRecord: opts.shouldRecord, + shouldPlayback: opts.shouldPlayback, + excludeUrls: opts.excludeUrls + }); + this[kSnapshotLoaded] = false; + if ( + this[kSnapshotMode] === 'record' || + this[kSnapshotMode] === 'update' || + (this[kSnapshotMode] === 'playback' && opts.excludeUrls && opts.excludeUrls.length > 0) + ) { + this[kRealAgent] = new Agent(opts); + } + if ((this[kSnapshotMode] === 'playback' || this[kSnapshotMode] === 'update') && this[kSnapshotPath]) { + this.loadSnapshots().catch(() => {}); + } + } + dispatch(opts, handler2) { + const mode = this[kSnapshotMode]; + if (this[kSnapshotRecorder].isUrlExcluded(opts)) { + return this[kRealAgent].dispatch(opts, handler2); + } + if (mode === 'playback' || mode === 'update') { + if (!this[kSnapshotLoaded]) { + return this.#asyncDispatch(opts, handler2); + } + const snapshot = this[kSnapshotRecorder].findSnapshot(opts); + if (snapshot) { + return this.#replaySnapshot(snapshot, handler2); + } else if (mode === 'update') { + return this.#recordAndReplay(opts, handler2); + } else { + const error2 = new UndiciError(`No snapshot found for ${opts.method || 'GET'} ${opts.path}`); + if (handler2.onResponseError) { + handler2.onResponseError(null, error2); + return; + } + throw error2; + } + } else if (mode === 'record') { + return this.#recordAndReplay(opts, handler2); + } + } + /** + * Async version of dispatch for when we need to load snapshots first + */ + async #asyncDispatch(opts, handler2) { + await this.loadSnapshots(); + return this.dispatch(opts, handler2); + } + /** + * Records a real request and replays the response + */ + #recordAndReplay(opts, handler2) { + const responseData = { + statusCode: null, + headers: {}, + trailers: {}, + body: [] + }; + const self = this; + const recordingHandler = { + onRequestStart(controller, context3) { + return handler2.onRequestStart(controller, { ...context3, history: this.history }); + }, + onRequestUpgrade(controller, statusCode, headers, socket) { + return handler2.onRequestUpgrade(controller, statusCode, headers, socket); + }, + onResponseStart(controller, statusCode, headers, statusMessage) { + responseData.statusCode = statusCode; + responseData.headers = headers; + return handler2.onResponseStart(controller, statusCode, headers, statusMessage); + }, + onResponseData(controller, chunk) { + responseData.body.push(chunk); + return handler2.onResponseData(controller, chunk); + }, + onResponseEnd(controller, trailers) { + responseData.trailers = trailers; + const responseBody = Buffer.concat(responseData.body); + self[kSnapshotRecorder] + .record(opts, { + statusCode: responseData.statusCode, + headers: responseData.headers, + body: responseBody, + trailers: responseData.trailers + }) + .then(() => handler2.onResponseEnd(controller, trailers)) + .catch(error2 => handler2.onResponseError(controller, error2)); + }, + onResponseError(controller, error2) { + return handler2.onResponseError(controller, error2); + } + }; + const agent = this[kRealAgent]; + return agent.dispatch(opts, recordingHandler); + } + /** + * Replays a recorded response + * + * @param {Object} snapshot - The recorded snapshot to replay. + * @param {Object} handler - The handler to call with the response data. + * @returns {void} + */ + #replaySnapshot(snapshot, handler2) { + try { + const { response } = snapshot; + const rawHeaders = response.headers ? util.toRawHeaders(response.headers) : []; + const rawTrailers = response.trailers ? util.toRawHeaders(response.trailers) : []; + const controller = { + rawHeaders, + rawTrailers, + pause() {}, + resume() {}, + abort(reason) { + this.aborted = true; + this.reason = reason; + }, + aborted: false, + paused: false + }; + handler2.onRequestStart(controller); + handler2.onResponseStart(controller, response.statusCode, response.headers, response.statusMessage); + const body = Buffer.from(response.body, 'base64'); + handler2.onResponseData(controller, body); + handler2.onResponseEnd(controller, response.trailers); + } catch (error2) { + handler2.onResponseError?.(null, error2); + } + } + /** + * Loads snapshots from file + * + * @param {string} [filePath] - Optional file path to load snapshots from. + * @returns {Promise} - Resolves when snapshots are loaded. + */ + async loadSnapshots(filePath) { + await this[kSnapshotRecorder].loadSnapshots(filePath || this[kSnapshotPath]); + this[kSnapshotLoaded] = true; + if (this[kSnapshotMode] === 'playback') { + this.#setupMockInterceptors(); + } + } + /** + * Saves snapshots to file + * + * @param {string} [filePath] - Optional file path to save snapshots to. + * @returns {Promise} - Resolves when snapshots are saved. + */ + async saveSnapshots(filePath) { + return this[kSnapshotRecorder].saveSnapshots(filePath || this[kSnapshotPath]); + } + /** + * Sets up MockAgent interceptors based on recorded snapshots. + * + * This method creates MockAgent interceptors for each recorded snapshot, + * allowing the SnapshotAgent to fall back to MockAgent's standard intercept + * mechanism in playback mode. Each interceptor is configured to persist + * (remain active for multiple requests) and responds with the recorded + * response data. + * + * Called automatically when loading snapshots in playback mode. + * + * @returns {void} + */ + #setupMockInterceptors() { + for (const snapshot of this[kSnapshotRecorder].getSnapshots()) { + const { request: request2, responses, response } = snapshot; + const url = new URL(request2.url); + const mockPool = this.get(url.origin); + const responseData = responses ? responses[0] : response; + if (!responseData) continue; + mockPool + .intercept({ + path: url.pathname + url.search, + method: request2.method, + headers: request2.headers, + body: request2.body + }) + .reply(responseData.statusCode, responseData.body, { + headers: responseData.headers, + trailers: responseData.trailers + }) + .persist(); + } + } + /** + * Gets the snapshot recorder + * @return {SnapshotRecorder} - The snapshot recorder instance + */ + getRecorder() { + return this[kSnapshotRecorder]; + } + /** + * Gets the current mode + * @return {import('./snapshot-utils').SnapshotMode} - The current snapshot mode + */ + getMode() { + return this[kSnapshotMode]; + } + /** + * Clears all snapshots + * @returns {void} + */ + clearSnapshots() { + this[kSnapshotRecorder].clear(); + } + /** + * Resets call counts for all snapshots (useful for test cleanup) + * @returns {void} + */ + resetCallCounts() { + this[kSnapshotRecorder].resetCallCounts(); + } + /** + * Deletes a specific snapshot by request options + * @param {import('./snapshot-recorder').SnapshotRequestOptions} requestOpts - Request options to identify the snapshot + * @return {Promise} - Returns true if the snapshot was deleted, false if not found + */ + deleteSnapshot(requestOpts) { + return this[kSnapshotRecorder].deleteSnapshot(requestOpts); + } + /** + * Gets information about a specific snapshot + * @returns {import('./snapshot-recorder').SnapshotInfo|null} - Snapshot information or null if not found + */ + getSnapshotInfo(requestOpts) { + return this[kSnapshotRecorder].getSnapshotInfo(requestOpts); + } + /** + * Replaces all snapshots with new data (full replacement) + * @param {Array<{hash: string; snapshot: import('./snapshot-recorder').SnapshotEntryshotEntry}>|Record} snapshotData - New snapshot data to replace existing snapshots + * @returns {void} + */ + replaceSnapshots(snapshotData) { + this[kSnapshotRecorder].replaceSnapshots(snapshotData); + } + /** + * Closes the agent, saving snapshots and cleaning up resources. + * + * @returns {Promise} + */ + async close() { + if (this[kSnapshotMode] === 'playback') { + this[kSnapshotRecorder].destroy(); + } else { + await this[kSnapshotRecorder].close(); + } + await this[kRealAgent]?.close(); + await super.close(); + } + }; + module2.exports = SnapshotAgent; + } +}); + +// node_modules/undici/lib/global.js +var require_global2 = __commonJS({ + 'node_modules/undici/lib/global.js'(exports2, module2) { + 'use strict'; + var globalDispatcher = /* @__PURE__ */ Symbol.for('undici.globalDispatcher.2'); + var legacyGlobalDispatcher = /* @__PURE__ */ Symbol.for('undici.globalDispatcher.1'); + var { InvalidArgumentError } = require_errors(); + var Agent = require_agent(); + var Dispatcher1Wrapper = require_dispatcher1_wrapper(); + 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 + }); + const legacyAgent = agent instanceof Dispatcher1Wrapper ? agent : new Dispatcher1Wrapper(agent); + Object.defineProperty(globalThis, legacyGlobalDispatcher, { + value: legacyAgent, + writable: true, + enumerable: false, + configurable: false + }); + } + function getGlobalDispatcher() { + return globalThis[globalDispatcher]; + } + var installedExports = + /** @type {const} */ + [ + 'fetch', + 'Headers', + 'Response', + 'Request', + 'FormData', + 'WebSocket', + 'CloseEvent', + 'ErrorEvent', + 'MessageEvent', + 'EventSource' + ]; + module2.exports = { + setGlobalDispatcher, + getGlobalDispatcher, + installedExports + }; + } +}); + +// node_modules/undici/lib/handler/decorator-handler.js +var require_decorator_handler = __commonJS({ + 'node_modules/undici/lib/handler/decorator-handler.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + module2.exports = class DecoratorHandler { + #handler; + #onCompleteCalled = false; + #onErrorCalled = false; + #onResponseStartCalled = false; + constructor(handler2) { + if (typeof handler2 !== 'object' || handler2 === null) { + throw new TypeError('handler must be an object'); + } + this.#handler = handler2; + } + onRequestStart(...args) { + this.#handler.onRequestStart?.(...args); + } + onRequestUpgrade(...args) { + assert(!this.#onCompleteCalled); + assert(!this.#onErrorCalled); + return this.#handler.onRequestUpgrade?.(...args); + } + onResponseStart(...args) { + assert(!this.#onCompleteCalled); + assert(!this.#onErrorCalled); + assert(!this.#onResponseStartCalled); + this.#onResponseStartCalled = true; + return this.#handler.onResponseStart?.(...args); + } + onResponseData(...args) { + assert(!this.#onCompleteCalled); + assert(!this.#onErrorCalled); + return this.#handler.onResponseData?.(...args); + } + onResponseEnd(...args) { + assert(!this.#onCompleteCalled); + assert(!this.#onErrorCalled); + this.#onCompleteCalled = true; + return this.#handler.onResponseEnd?.(...args); + } + onResponseError(...args) { + this.#onErrorCalled = true; + return this.#handler.onResponseError?.(...args); + } + /** + * @deprecated + */ + onBodySent() {} + }; + } +}); + +// node_modules/undici/lib/handler/redirect-handler.js +var require_redirect_handler = __commonJS({ + 'node_modules/undici/lib/handler/redirect-handler.js'(exports2, module2) { + 'use strict'; + var util = require_util(); + var assert = require('node:assert'); + var { InvalidArgumentError } = require_errors(); + var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; + var noop3 = () => {}; + var RedirectHandler = class _RedirectHandler { + static buildDispatch(dispatcher, maxRedirections) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + const dispatch = dispatcher.dispatch.bind(dispatcher); + return (opts, originalHandler) => + dispatch(opts, new _RedirectHandler(dispatch, maxRedirections, opts, originalHandler)); + } + constructor(dispatch, maxRedirections, opts, handler2) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number'); + } + if (opts.throwOnMaxRedirect != null && typeof opts.throwOnMaxRedirect !== 'boolean') { + throw new InvalidArgumentError('throwOnMaxRedirect must be a boolean'); + } + this.dispatch = dispatch; + this.location = null; + const { maxRedirections: _, stripHeadersOnRedirect, stripHeadersOnCrossOriginRedirect, ...cleanOpts } = opts; + this.opts = cleanOpts; + this.opts.body = util.wrapRequestBody(this.opts.body); + this.stripHeadersOnRedirect = normalizeStripHeaders(stripHeadersOnRedirect, 'stripHeadersOnRedirect'); + this.stripHeadersOnCrossOriginRedirect = normalizeStripHeaders( + stripHeadersOnCrossOriginRedirect, + 'stripHeadersOnCrossOriginRedirect' + ); + this.maxRedirections = maxRedirections; + this.handler = handler2; + this.history = []; + } + onRequestStart(controller, context3) { + this.handler.onRequestStart?.(controller, { ...context3, history: this.history }); + } + onRequestUpgrade(controller, statusCode, headers, socket) { + this.handler.onRequestUpgrade?.(controller, statusCode, headers, socket); + } + onResponseStart(controller, statusCode, headers, statusMessage) { + if (this.opts.throwOnMaxRedirect && this.history.length >= this.maxRedirections) { + throw new Error('max redirects'); + } + if ((statusCode === 301 || statusCode === 302) && this.opts.method === 'POST') { + this.opts.method = 'GET'; + if (util.isStream(this.opts.body)) { + util.destroy(this.opts.body.on('error', noop3)); + } + this.opts.body = null; + } + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET'; + if (util.isStream(this.opts.body)) { + util.destroy(this.opts.body.on('error', noop3)); + } + this.opts.body = null; + } + this.location = + this.history.length >= this.maxRedirections || + util.isDisturbed(this.opts.body) || + redirectableStatusCodes.indexOf(statusCode) === -1 + ? null + : headers.location; + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)); + } + if (!this.location) { + this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage); + return; + } + const { origin, pathname, search } = util.parseURL( + new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)) + ); + const path2 = search ? `${pathname}${search}` : pathname; + const redirectUrlString = `${origin}${path2}`; + for (const historyUrl of this.history) { + if (historyUrl.toString() === redirectUrlString) { + throw new InvalidArgumentError( + `Redirect loop detected. Cannot redirect to ${origin}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.` + ); + } + } + this.opts.headers = cleanRequestHeaders( + this.opts.headers, + statusCode === 303, + this.opts.origin !== origin, + this.stripHeadersOnRedirect, + this.stripHeadersOnCrossOriginRedirect + ); + this.opts.path = path2; + this.opts.origin = origin; + this.opts.query = null; + } + onResponseData(controller, chunk) { + if (this.location) { + } else { + this.handler.onResponseData?.(controller, chunk); + } + } + onResponseEnd(controller, trailers) { + if (this.location) { + this.dispatch(this.opts, this); + } else { + this.handler.onResponseEnd(controller, trailers); + } + } + onResponseError(controller, error2) { + this.handler.onResponseError?.(controller, error2); + } + }; + function shouldRemoveHeader(header, removeContent, unknownOrigin, stripHeaders, stripHeadersOnCrossOrigin) { + const name = util.headerNameToString(header); + if (name === 'host') { + return true; + } + if (stripHeaders?.has(name) || (unknownOrigin && stripHeadersOnCrossOrigin?.has(name))) { + return true; + } + if (removeContent && name.startsWith('content-')) { + return true; + } + if (unknownOrigin) { + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'; + } + return false; + } + function normalizeStripHeaders(headers, optionName) { + if (headers == null) { + return null; + } + if (!Array.isArray(headers)) { + throw new InvalidArgumentError(`${optionName} must be an array`); + } + const normalized = /* @__PURE__ */ new Set(); + for (const header of headers) { + if (typeof header !== 'string') { + throw new InvalidArgumentError(`${optionName} must contain header names`); + } + normalized.add(util.headerNameToString(header)); + } + return normalized; + } + function cleanRequestHeaders(headers, removeContent, unknownOrigin, stripHeaders, stripHeadersOnCrossOrigin) { + const ret = []; + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin, stripHeaders, stripHeadersOnCrossOrigin)) { + ret.push(headers[i], headers[i + 1]); + } + } + } else if (headers && typeof headers === 'object') { + const entries = util.hasSafeIterator(headers) ? headers : Object.entries(headers); + for (const [key, value] of entries) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin, stripHeaders, stripHeadersOnCrossOrigin)) { + ret.push(key, value); + } + } + } else { + assert(headers == null, 'headers must be an object or an array'); + } + return ret; + } + module2.exports = RedirectHandler; + } +}); + +// node_modules/undici/lib/interceptor/redirect.js +var require_redirect = __commonJS({ + 'node_modules/undici/lib/interceptor/redirect.js'(exports2, module2) { + 'use strict'; + var RedirectHandler = require_redirect_handler(); + function createRedirectInterceptor({ + maxRedirections: defaultMaxRedirections, + throwOnMaxRedirect: defaultThrowOnMaxRedirect, + stripHeadersOnRedirect: defaultStripHeadersOnRedirect, + stripHeadersOnCrossOriginRedirect: defaultStripHeadersOnCrossOriginRedirect + } = {}) { + return dispatch => { + return function Intercept(opts, handler2) { + const { + maxRedirections = defaultMaxRedirections, + throwOnMaxRedirect = defaultThrowOnMaxRedirect, + stripHeadersOnRedirect = defaultStripHeadersOnRedirect, + stripHeadersOnCrossOriginRedirect = defaultStripHeadersOnCrossOriginRedirect, + ...rest + } = opts; + if (maxRedirections == null || maxRedirections === 0) { + return dispatch(opts, handler2); + } + const dispatchOpts = { ...rest, throwOnMaxRedirect, stripHeadersOnRedirect, stripHeadersOnCrossOriginRedirect }; + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, dispatchOpts, handler2); + return dispatch(dispatchOpts, redirectHandler); + }; + }; + } + module2.exports = createRedirectInterceptor; + } +}); + +// node_modules/undici/lib/interceptor/response-error.js +var require_response_error = __commonJS({ + 'node_modules/undici/lib/interceptor/response-error.js'(exports2, module2) { + 'use strict'; + var DecoratorHandler = require_decorator_handler(); + var { ResponseError } = require_errors(); + var ResponseErrorHandler = class extends DecoratorHandler { + #statusCode; + #contentType; + #decoder; + #headers; + #body; + constructor(_opts, { handler: handler2 }) { + super(handler2); + } + #checkContentType(contentType) { + return (this.#contentType ?? '').indexOf(contentType) === 0; + } + onRequestStart(controller, context3) { + this.#statusCode = 0; + this.#contentType = null; + this.#decoder = null; + this.#headers = null; + this.#body = ''; + return super.onRequestStart(controller, context3); + } + onResponseStart(controller, statusCode, headers, statusMessage) { + this.#statusCode = statusCode; + this.#headers = headers; + this.#contentType = headers['content-type']; + if (this.#statusCode < 400) { + return super.onResponseStart(controller, statusCode, headers, statusMessage); + } + if (this.#checkContentType('application/json') || this.#checkContentType('text/plain')) { + this.#decoder = new TextDecoder('utf-8'); + } + } + onResponseData(controller, chunk) { + if (this.#statusCode < 400) { + return super.onResponseData(controller, chunk); + } + this.#body += this.#decoder?.decode(chunk, { stream: true }) ?? ''; + } + onResponseEnd(controller, trailers) { + if (this.#statusCode >= 400) { + this.#body += this.#decoder?.decode(void 0, { stream: false }) ?? ''; + if (this.#checkContentType('application/json')) { + try { + this.#body = JSON.parse(this.#body); + } catch {} + } + let err; + const stackTraceLimit = Error.stackTraceLimit; + Error.stackTraceLimit = 0; + try { + err = new ResponseError('Response Error', this.#statusCode, { + body: this.#body, + headers: this.#headers + }); + } finally { + Error.stackTraceLimit = stackTraceLimit; + } + super.onResponseError(controller, err); + } else { + super.onResponseEnd(controller, trailers); + } + } + onResponseError(controller, err) { + super.onResponseError(controller, err); + } + }; + module2.exports = () => { + return dispatch => { + return function Intercept(opts, handler2) { + return dispatch(opts, new ResponseErrorHandler(opts, { handler: handler2 })); + }; + }; + }; + } +}); + +// node_modules/undici/lib/interceptor/retry.js +var require_retry = __commonJS({ + 'node_modules/undici/lib/interceptor/retry.js'(exports2, module2) { + 'use strict'; + var RetryHandler = require_retry_handler(); + module2.exports = globalOpts => { + return dispatch => { + return function retryInterceptor(opts, handler2) { + return dispatch( + opts, + new RetryHandler( + { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } }, + { + handler: handler2, + dispatch + } + ) + ); + }; + }; + }; + } +}); + +// node_modules/undici/lib/interceptor/dump.js +var require_dump = __commonJS({ + 'node_modules/undici/lib/interceptor/dump.js'(exports2, module2) { + 'use strict'; + var { InvalidArgumentError, RequestAbortedError } = require_errors(); + var DecoratorHandler = require_decorator_handler(); + var DumpHandler = class extends DecoratorHandler { + #maxSize = 1024 * 1024; + #dumped = false; + #size = 0; + #controller = null; + aborted = false; + reason = false; + constructor({ maxSize, signal }, handler2) { + if (maxSize != null && (!Number.isFinite(maxSize) || maxSize < 1)) { + throw new InvalidArgumentError('maxSize must be a number greater than 0'); + } + super(handler2); + this.#maxSize = maxSize ?? this.#maxSize; + } + #abort(reason) { + this.aborted = true; + this.reason = reason; + } + onRequestStart(controller, context3) { + controller.abort = this.#abort.bind(this); + this.#controller = controller; + return super.onRequestStart(controller, context3); + } + onResponseStart(controller, statusCode, headers, statusMessage) { + 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 === true) { + return true; + } + return super.onResponseStart(controller, statusCode, headers, statusMessage); + } + onResponseError(controller, err) { + if (this.#dumped) { + return; + } + err = this.#controller?.reason ?? err; + super.onResponseError(controller, err); + } + onResponseData(controller, chunk) { + this.#size = this.#size + chunk.length; + if (this.#size >= this.#maxSize) { + this.#dumped = true; + if (this.aborted === true) { + super.onResponseError(controller, this.reason); + } else { + super.onResponseEnd(controller, {}); + } + } + return true; + } + onResponseEnd(controller, trailers) { + if (this.#dumped) { + return; + } + if (this.#controller.aborted === true) { + super.onResponseError(controller, this.reason); + return; + } + super.onResponseEnd(controller, 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, signal: opts.signal }, handler2); + return dispatch(opts, dumpHandler); + }; + }; + } + module2.exports = createDumpInterceptor; + } +}); + +// node_modules/undici/lib/interceptor/dns.js +var require_dns = __commonJS({ + 'node_modules/undici/lib/interceptor/dns.js'(exports2, module2) { + '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; + function hasSafeIterator(headers) { + const prototype = Object.getPrototypeOf(headers); + const ownIterator = Object.hasOwn(headers, Symbol.iterator); + return ( + ownIterator || + (prototype != null && prototype !== Object.prototype && typeof headers[Symbol.iterator] === 'function') + ); + } + function isHostHeader(key) { + return typeof key === 'string' && key.toLowerCase() === 'host'; + } + function normalizeHeaders(headers) { + if (headers == null) { + return null; + } + if (Array.isArray(headers)) { + if (headers.length === 0 || !Array.isArray(headers[0])) { + return headers; + } + const normalized = []; + for (const header of headers) { + if (Array.isArray(header) && header.length === 2) { + normalized.push(header[0], header[1]); + } else { + normalized.push(header); + } + } + return normalized; + } + if (typeof headers === 'object' && hasSafeIterator(headers)) { + const normalized = []; + for (const header of headers) { + if (Array.isArray(header) && header.length === 2) { + normalized.push(header[0], header[1]); + } else { + normalized.push(header); + } + } + return normalized; + } + return headers; + } + function hasHostHeader(headers) { + if (headers == null) { + return false; + } + if (Array.isArray(headers)) { + if (headers.length === 0) { + return false; + } + for (let i = 0; i < headers.length; i += 2) { + if (isHostHeader(headers[i])) { + return true; + } + } + return false; + } + if (typeof headers === 'object') { + for (const key in headers) { + if (isHostHeader(key)) { + return true; + } + } + } + return false; + } + function withHostHeader(host, headers) { + const normalizedHeaders = normalizeHeaders(headers); + if (hasHostHeader(normalizedHeaders)) { + return normalizedHeaders; + } + if (Array.isArray(normalizedHeaders)) { + return ['host', host, ...normalizedHeaders]; + } + if (normalizedHeaders && typeof normalizedHeaders === 'object') { + return { + host, + ...normalizedHeaders + }; + } + return { host }; + } + var DNSStorage = class { + #maxItems = 0; + #records = /* @__PURE__ */ new Map(); + constructor(opts) { + this.#maxItems = opts.maxItems; + } + get size() { + return this.#records.size; + } + get(hostname) { + return this.#records.get(hostname) ?? null; + } + set(hostname, records) { + this.#records.set(hostname, records); + } + delete(hostname) { + this.#records.delete(hostname); + } + // Delegate to storage decide can we do more lookups or not + full() { + return this.size >= this.#maxItems; + } + }; + var DNSInstance = class { + #maxTTL = 0; + #maxItems = 0; + dualStack = true; + affinity = null; + lookup = null; + pick = null; + storage = 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; + this.storage = opts.storage ?? new DNSStorage(opts); + } + runLookup(origin, opts, cb) { + const ips = this.storage.get(origin.hostname); + if (ips == null && this.storage.full()) { + cb(null, 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.storage.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, new URL(`${origin.protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`)); + }); + } else { + const ip = this.pick(origin, ips, newOpts.affinity); + if (ip == null) { + this.storage.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, new URL(`${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; + } + pickFamily(origin, ipFamily) { + const records = this.storage.get(origin.hostname)?.records; + if (!records) { + return null; + } + const family = records[ipFamily]; + if (!family) { + return null; + } + if (family.offset == null || family.offset === maxInt) { + family.offset = 0; + } else { + family.offset++; + } + const position = family.offset % family.ips.length; + const ip = family.ips[position] ?? null; + if (ip == null) { + return ip; + } + if (Date.now() - ip.timestamp > ip.ttl) { + family.ips.splice(position, 1); + } + return ip; + } + setRecords(origin, addresses) { + const timestamp = Date.now(); + const records = { records: { 4: null, 6: null } }; + let minTTL = this.#maxTTL; + for (const record of addresses) { + record.timestamp = timestamp; + if (typeof record.ttl === 'number') { + record.ttl = Math.min(record.ttl, this.#maxTTL); + minTTL = Math.min(minTTL, record.ttl); + } else { + record.ttl = this.#maxTTL; + } + const familyRecords = records.records[record.family] ?? { ips: [] }; + familyRecords.ips.push(record); + records.records[record.family] = familyRecords; + } + this.storage.set(origin.hostname, records, { ttl: minTTL }); + } + deleteRecords(origin) { + this.storage.delete(origin.hostname); + } + getHandler(meta, opts) { + return new DNSDispatchHandler(this, meta, opts); + } + }; + var DNSDispatchHandler = class extends DecoratorHandler { + #state = null; + #opts = null; + #dispatch = null; + #origin = null; + #controller = null; + #newOrigin = null; + #firstTry = true; + constructor(state, { origin, handler: handler2, dispatch, newOrigin }, opts) { + super(handler2); + this.#origin = origin; + this.#newOrigin = newOrigin; + this.#opts = { ...opts }; + this.#state = state; + this.#dispatch = dispatch; + } + onResponseError(controller, err) { + switch (err.code) { + case 'ETIMEDOUT': + case 'ECONNREFUSED': { + if (this.#state.dualStack) { + if (!this.#firstTry) { + super.onResponseError(controller, err); + return; + } + this.#firstTry = false; + const otherFamily = this.#newOrigin.hostname[0] === '[' ? 4 : 6; + const ip = this.#state.pickFamily(this.#origin, otherFamily); + if (ip == null) { + super.onResponseError(controller, err); + return; + } + let port; + if (typeof ip.port === 'number') { + port = `:${ip.port}`; + } else if (this.#origin.port !== '') { + port = `:${this.#origin.port}`; + } else { + port = ''; + } + const dispatchOpts = { + ...this.#opts, + origin: `${this.#origin.protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`, + headers: withHostHeader(this.#origin.host, this.#opts.headers) + }; + this.#dispatch(dispatchOpts, this); + return; + } + super.onResponseError(controller, err); + break; + } + case 'ENOTFOUND': + this.#state.deleteRecords(this.#origin); + super.onResponseError(controller, err); + break; + default: + super.onResponseError(controller, err); + break; + } + } + }; + module2.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'); + } + if ( + interceptorOpts?.storage != null && + (typeof interceptorOpts?.storage?.get !== 'function' || + typeof interceptorOpts?.storage?.set !== 'function' || + typeof interceptorOpts?.storage?.full !== 'function' || + typeof interceptorOpts?.storage?.delete !== 'function') + ) { + throw new InvalidArgumentError('Invalid storage. Must be a object with methods: { get, set, full, delete }'); + } + 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, + storage: interceptorOpts?.storage + }; + const instance = new DNSInstance(opts); + return dispatch => { + return function dnsInterceptor(origDispatchOpts, handler2) { + if (origDispatchOpts.origin == null) { + return dispatch(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.onResponseError(null, err); + } + const dispatchOpts = { + ...origDispatchOpts, + servername: origin.hostname, + // For SNI on TLS + origin: newOrigin.origin, + headers: withHostHeader(origin.host, origDispatchOpts.headers) + }; + dispatch( + dispatchOpts, + instance.getHandler({ origin, dispatch, handler: handler2, newOrigin }, origDispatchOpts) + ); + }); + return true; + }; + }; + }; + } +}); + +// node_modules/undici/lib/util/cache.js +var require_cache = __commonJS({ + 'node_modules/undici/lib/util/cache.js'(exports2, module2) { + 'use strict'; + var { safeHTTPMethods, pathHasQueryOrFragment, hasSafeIterator } = require_util(); + var { serializePathWithQuery } = require_util(); + function makeCacheKey(opts) { + if (!opts.origin) { + throw new Error('opts.origin is undefined'); + } + let fullPath = opts.path || '/'; + if (opts.query && !pathHasQueryOrFragment(fullPath)) { + fullPath = serializePathWithQuery(fullPath, opts.query); + } + return { + origin: opts.origin.toString(), + method: opts.method, + path: fullPath, + headers: opts.headers + }; + } + function normalizeHeaders(opts) { + let headers; + if (opts.headers == null) { + headers = {}; + } else if (typeof opts.headers === 'object') { + headers = {}; + if (hasSafeIterator(opts.headers)) { + for (const x of opts.headers) { + if (!Array.isArray(x)) { + throw new Error('opts.headers is not a valid header map'); + } + const [key, val] = x; + if (typeof key !== 'string' || typeof val !== 'string') { + throw new Error('opts.headers is not a valid header map'); + } + headers[key.toLowerCase()] = val; + } + } else { + for (const key of Object.keys(opts.headers)) { + headers[key.toLowerCase()] = opts.headers[key]; + } + } + } else { + throw new Error('opts.headers is not an object'); + } + return headers; + } + function assertCacheKey(key) { + if (typeof key !== 'object') { + throw new TypeError(`expected key to be object, got ${typeof key}`); + } + for (const property of ['origin', 'method', 'path']) { + if (typeof key[property] !== 'string') { + throw new TypeError(`expected key.${property} to be string, got ${typeof key[property]}`); + } + } + if (key.headers !== void 0 && typeof key.headers !== 'object') { + throw new TypeError(`expected headers to be object, got ${typeof key}`); + } + } + function assertCacheValue(value) { + if (typeof value !== 'object') { + throw new TypeError(`expected value to be object, got ${typeof value}`); + } + for (const property of ['statusCode', 'cachedAt', 'staleAt', 'deleteAt']) { + if (typeof value[property] !== 'number') { + throw new TypeError(`expected value.${property} to be number, got ${typeof value[property]}`); + } + } + if (typeof value.statusMessage !== 'string') { + throw new TypeError(`expected value.statusMessage to be string, got ${typeof value.statusMessage}`); + } + if (value.headers != null && typeof value.headers !== 'object') { + throw new TypeError(`expected value.rawHeaders to be object, got ${typeof value.headers}`); + } + if (value.vary !== void 0 && typeof value.vary !== 'object') { + throw new TypeError(`expected value.vary to be object, got ${typeof value.vary}`); + } + if (value.etag !== void 0 && typeof value.etag !== 'string') { + throw new TypeError(`expected value.etag to be string, got ${typeof value.etag}`); + } + } + function parseCacheControlHeader(header) { + const output = {}; + let directives; + if (Array.isArray(header)) { + directives = []; + for (const directive of header) { + directives.push(...directive.split(',')); + } + } else { + directives = header.split(','); + } + for (let i = 0; i < directives.length; i++) { + const directive = directives[i].toLowerCase(); + const keyValueDelimiter = directive.indexOf('='); + let key; + let value; + if (keyValueDelimiter !== -1) { + key = directive.substring(0, keyValueDelimiter).trimStart(); + value = directive.substring(keyValueDelimiter + 1); + } else { + key = directive.trim(); + } + switch (key) { + case 'min-fresh': + case 'max-stale': + case 'max-age': + case 's-maxage': + case 'stale-while-revalidate': + case 'stale-if-error': { + if (value === void 0 || value[0] === ' ') { + continue; + } + if (value.length >= 2 && value[0] === '"' && value[value.length - 1] === '"') { + value = value.substring(1, value.length - 1); + } + const parsedValue = parseInt(value, 10); + if (parsedValue !== parsedValue) { + continue; + } + if (key === 'max-age' && key in output && output[key] >= parsedValue) { + continue; + } + output[key] = parsedValue; + break; + } + case 'private': + case 'no-cache': { + if (value) { + if (value[0] === '"') { + const headers = [value.substring(1)]; + let foundEndingQuote = value[value.length - 1] === '"'; + if (!foundEndingQuote) { + for (let j = i + 1; j < directives.length; j++) { + const nextPart = directives[j]; + const nextPartLength = nextPart.length; + headers.push(nextPart.trim()); + if (nextPartLength !== 0 && nextPart[nextPartLength - 1] === '"') { + foundEndingQuote = true; + break; + } + } + } + if (foundEndingQuote) { + let lastHeader = headers[headers.length - 1]; + if (lastHeader[lastHeader.length - 1] === '"') { + lastHeader = lastHeader.substring(0, lastHeader.length - 1); + headers[headers.length - 1] = lastHeader; + } + for (let j = 0; j < headers.length; j++) { + headers[j] = headers[j].trim(); + } + if (key in output) { + output[key] = output[key].concat(headers); + } else { + output[key] = headers; + } + } + } else { + const fieldName = value.trim(); + if (key in output) { + output[key] = output[key].concat(fieldName); + } else { + output[key] = [fieldName]; + } + } + break; + } + } + // eslint-disable-next-line no-fallthrough + case 'public': + case 'no-store': + case 'must-revalidate': + case 'proxy-revalidate': + case 'immutable': + case 'no-transform': + case 'must-understand': + case 'only-if-cached': + if (value) { + continue; + } + output[key] = true; + break; + default: + continue; + } + } + return output; + } + function parseVaryHeader(varyHeader, headers) { + if (typeof varyHeader === 'string' && varyHeader.includes('*')) { + return headers; + } + const output = + /** @type {Record} */ + {}; + const varyingHeaders = typeof varyHeader === 'string' ? varyHeader.split(',') : varyHeader; + for (const header of varyingHeaders) { + const trimmedHeader = header.trim().toLowerCase(); + output[trimmedHeader] = headers[trimmedHeader] ?? null; + } + return output; + } + function isEtagUsable(etag) { + if (etag.length <= 2) { + return false; + } + if (etag[0] === '"' && etag[etag.length - 1] === '"') { + return !(etag[1] === '"' || etag.startsWith('"W/')); + } + if (etag.startsWith('W/"') && etag[etag.length - 1] === '"') { + return etag.length !== 4; + } + return false; + } + function assertCacheStore(store, name = 'CacheStore') { + if (typeof store !== 'object' || store === null) { + throw new TypeError(`expected type of ${name} to be a CacheStore, got ${store === null ? 'null' : typeof store}`); + } + for (const fn of ['get', 'createWriteStream', 'delete']) { + if (typeof store[fn] !== 'function') { + throw new TypeError(`${name} needs to have a \`${fn}()\` function`); + } + } + } + function assertCacheMethods(methods, name = 'CacheMethods') { + if (!Array.isArray(methods)) { + throw new TypeError( + `expected type of ${name} needs to be an array, got ${methods === null ? 'null' : typeof methods}` + ); + } + if (methods.length === 0) { + throw new TypeError(`${name} needs to have at least one method`); + } + for (const method of methods) { + if (!safeHTTPMethods.includes(method)) { + throw new TypeError( + `element of ${name}-array needs to be one of following values: ${safeHTTPMethods.join(', ')}, got ${method}` + ); + } + } + } + function makeDeduplicationKey(cacheKey, excludeHeaders) { + const headers = {}; + if (cacheKey.headers) { + const sortedHeaders = Object.keys(cacheKey.headers).sort(); + for (const header of sortedHeaders) { + if (excludeHeaders?.has(header.toLowerCase())) { + continue; + } + headers[header] = cacheKey.headers[header]; + } + } + return JSON.stringify([cacheKey.origin, cacheKey.method, cacheKey.path, headers]); + } + module2.exports = { + makeCacheKey, + normalizeHeaders, + assertCacheKey, + assertCacheValue, + parseCacheControlHeader, + parseVaryHeader, + isEtagUsable, + assertCacheMethods, + assertCacheStore, + makeDeduplicationKey + }; + } +}); + +// node_modules/undici/lib/util/date.js +var require_date = __commonJS({ + 'node_modules/undici/lib/util/date.js'(exports2, module2) { + 'use strict'; + function parseHttpDate(date) { + switch (date[3]) { + case ',': + return parseImfDate(date); + case ' ': + return parseAscTimeDate(date); + default: + return parseRfc850Date(date); + } + } + function parseImfDate(date) { + if ( + date.length !== 29 || + date[4] !== ' ' || + date[7] !== ' ' || + date[11] !== ' ' || + date[16] !== ' ' || + date[19] !== ':' || + date[22] !== ':' || + date[25] !== ' ' || + date[26] !== 'G' || + date[27] !== 'M' || + date[28] !== 'T' + ) { + return void 0; + } + let weekday = -1; + if (date[0] === 'S' && date[1] === 'u' && date[2] === 'n') { + weekday = 0; + } else if (date[0] === 'M' && date[1] === 'o' && date[2] === 'n') { + weekday = 1; + } else if (date[0] === 'T' && date[1] === 'u' && date[2] === 'e') { + weekday = 2; + } else if (date[0] === 'W' && date[1] === 'e' && date[2] === 'd') { + weekday = 3; + } else if (date[0] === 'T' && date[1] === 'h' && date[2] === 'u') { + weekday = 4; + } else if (date[0] === 'F' && date[1] === 'r' && date[2] === 'i') { + weekday = 5; + } else if (date[0] === 'S' && date[1] === 'a' && date[2] === 't') { + weekday = 6; + } else { + return void 0; + } + let day = 0; + if (date[5] === '0') { + const code = date.charCodeAt(6); + if (code < 49 || code > 57) { + return void 0; + } + day = code - 48; + } else { + const code1 = date.charCodeAt(5); + if (code1 < 49 || code1 > 51) { + return void 0; + } + const code2 = date.charCodeAt(6); + if (code2 < 48 || code2 > 57) { + return void 0; + } + day = (code1 - 48) * 10 + (code2 - 48); + } + let monthIdx = -1; + if (date[8] === 'J' && date[9] === 'a' && date[10] === 'n') { + monthIdx = 0; + } else if (date[8] === 'F' && date[9] === 'e' && date[10] === 'b') { + monthIdx = 1; + } else if (date[8] === 'M' && date[9] === 'a') { + if (date[10] === 'r') { + monthIdx = 2; + } else if (date[10] === 'y') { + monthIdx = 4; + } else { + return void 0; + } + } else if (date[8] === 'J') { + if (date[9] === 'a' && date[10] === 'n') { + monthIdx = 0; + } else if (date[9] === 'u') { + if (date[10] === 'n') { + monthIdx = 5; + } else if (date[10] === 'l') { + monthIdx = 6; + } else { + return void 0; + } + } else { + return void 0; + } + } else if (date[8] === 'A') { + if (date[9] === 'p' && date[10] === 'r') { + monthIdx = 3; + } else if (date[9] === 'u' && date[10] === 'g') { + monthIdx = 7; + } else { + return void 0; + } + } else if (date[8] === 'S' && date[9] === 'e' && date[10] === 'p') { + monthIdx = 8; + } else if (date[8] === 'O' && date[9] === 'c' && date[10] === 't') { + monthIdx = 9; + } else if (date[8] === 'N' && date[9] === 'o' && date[10] === 'v') { + monthIdx = 10; + } else if (date[8] === 'D' && date[9] === 'e' && date[10] === 'c') { + monthIdx = 11; + } else { + return void 0; + } + const yearDigit1 = date.charCodeAt(12); + if (yearDigit1 < 48 || yearDigit1 > 57) { + return void 0; + } + const yearDigit2 = date.charCodeAt(13); + if (yearDigit2 < 48 || yearDigit2 > 57) { + return void 0; + } + const yearDigit3 = date.charCodeAt(14); + if (yearDigit3 < 48 || yearDigit3 > 57) { + return void 0; + } + const yearDigit4 = date.charCodeAt(15); + if (yearDigit4 < 48 || yearDigit4 > 57) { + return void 0; + } + const year = (yearDigit1 - 48) * 1e3 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48); + let hour = 0; + if (date[17] === '0') { + const code = date.charCodeAt(18); + if (code < 48 || code > 57) { + return void 0; + } + hour = code - 48; + } else { + const code1 = date.charCodeAt(17); + if (code1 < 48 || code1 > 50) { + return void 0; + } + const code2 = date.charCodeAt(18); + if (code2 < 48 || code2 > 57) { + return void 0; + } + if (code1 === 50 && code2 > 51) { + return void 0; + } + hour = (code1 - 48) * 10 + (code2 - 48); + } + let minute = 0; + if (date[20] === '0') { + const code = date.charCodeAt(21); + if (code < 48 || code > 57) { + return void 0; + } + minute = code - 48; + } else { + const code1 = date.charCodeAt(20); + if (code1 < 48 || code1 > 53) { + return void 0; + } + const code2 = date.charCodeAt(21); + if (code2 < 48 || code2 > 57) { + return void 0; + } + minute = (code1 - 48) * 10 + (code2 - 48); + } + let second = 0; + if (date[23] === '0') { + const code = date.charCodeAt(24); + if (code < 48 || code > 57) { + return void 0; + } + second = code - 48; + } else { + const code1 = date.charCodeAt(23); + if (code1 < 48 || code1 > 53) { + return void 0; + } + const code2 = date.charCodeAt(24); + if (code2 < 48 || code2 > 57) { + return void 0; + } + second = (code1 - 48) * 10 + (code2 - 48); + } + const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second)); + return result.getUTCDay() === weekday ? result : void 0; + } + function parseAscTimeDate(date) { + if (date.length !== 24 || date[7] !== ' ' || date[10] !== ' ' || date[19] !== ' ') { + return void 0; + } + let weekday = -1; + if (date[0] === 'S' && date[1] === 'u' && date[2] === 'n') { + weekday = 0; + } else if (date[0] === 'M' && date[1] === 'o' && date[2] === 'n') { + weekday = 1; + } else if (date[0] === 'T' && date[1] === 'u' && date[2] === 'e') { + weekday = 2; + } else if (date[0] === 'W' && date[1] === 'e' && date[2] === 'd') { + weekday = 3; + } else if (date[0] === 'T' && date[1] === 'h' && date[2] === 'u') { + weekday = 4; + } else if (date[0] === 'F' && date[1] === 'r' && date[2] === 'i') { + weekday = 5; + } else if (date[0] === 'S' && date[1] === 'a' && date[2] === 't') { + weekday = 6; + } else { + return void 0; + } + let monthIdx = -1; + if (date[4] === 'J' && date[5] === 'a' && date[6] === 'n') { + monthIdx = 0; + } else if (date[4] === 'F' && date[5] === 'e' && date[6] === 'b') { + monthIdx = 1; + } else if (date[4] === 'M' && date[5] === 'a') { + if (date[6] === 'r') { + monthIdx = 2; + } else if (date[6] === 'y') { + monthIdx = 4; + } else { + return void 0; + } + } else if (date[4] === 'J') { + if (date[5] === 'a' && date[6] === 'n') { + monthIdx = 0; + } else if (date[5] === 'u') { + if (date[6] === 'n') { + monthIdx = 5; + } else if (date[6] === 'l') { + monthIdx = 6; + } else { + return void 0; + } + } else { + return void 0; + } + } else if (date[4] === 'A') { + if (date[5] === 'p' && date[6] === 'r') { + monthIdx = 3; + } else if (date[5] === 'u' && date[6] === 'g') { + monthIdx = 7; + } else { + return void 0; + } + } else if (date[4] === 'S' && date[5] === 'e' && date[6] === 'p') { + monthIdx = 8; + } else if (date[4] === 'O' && date[5] === 'c' && date[6] === 't') { + monthIdx = 9; + } else if (date[4] === 'N' && date[5] === 'o' && date[6] === 'v') { + monthIdx = 10; + } else if (date[4] === 'D' && date[5] === 'e' && date[6] === 'c') { + monthIdx = 11; + } else { + return void 0; + } + let day = 0; + if (date[8] === ' ') { + const code = date.charCodeAt(9); + if (code < 49 || code > 57) { + return void 0; + } + day = code - 48; + } else { + const code1 = date.charCodeAt(8); + if (code1 < 49 || code1 > 51) { + return void 0; + } + const code2 = date.charCodeAt(9); + if (code2 < 48 || code2 > 57) { + return void 0; + } + day = (code1 - 48) * 10 + (code2 - 48); + } + let hour = 0; + if (date[11] === '0') { + const code = date.charCodeAt(12); + if (code < 48 || code > 57) { + return void 0; + } + hour = code - 48; + } else { + const code1 = date.charCodeAt(11); + if (code1 < 48 || code1 > 50) { + return void 0; + } + const code2 = date.charCodeAt(12); + if (code2 < 48 || code2 > 57) { + return void 0; + } + if (code1 === 50 && code2 > 51) { + return void 0; + } + hour = (code1 - 48) * 10 + (code2 - 48); + } + let minute = 0; + if (date[14] === '0') { + const code = date.charCodeAt(15); + if (code < 48 || code > 57) { + return void 0; + } + minute = code - 48; + } else { + const code1 = date.charCodeAt(14); + if (code1 < 48 || code1 > 53) { + return void 0; + } + const code2 = date.charCodeAt(15); + if (code2 < 48 || code2 > 57) { + return void 0; + } + minute = (code1 - 48) * 10 + (code2 - 48); + } + let second = 0; + if (date[17] === '0') { + const code = date.charCodeAt(18); + if (code < 48 || code > 57) { + return void 0; + } + second = code - 48; + } else { + const code1 = date.charCodeAt(17); + if (code1 < 48 || code1 > 53) { + return void 0; + } + const code2 = date.charCodeAt(18); + if (code2 < 48 || code2 > 57) { + return void 0; + } + second = (code1 - 48) * 10 + (code2 - 48); + } + const yearDigit1 = date.charCodeAt(20); + if (yearDigit1 < 48 || yearDigit1 > 57) { + return void 0; + } + const yearDigit2 = date.charCodeAt(21); + if (yearDigit2 < 48 || yearDigit2 > 57) { + return void 0; + } + const yearDigit3 = date.charCodeAt(22); + if (yearDigit3 < 48 || yearDigit3 > 57) { + return void 0; + } + const yearDigit4 = date.charCodeAt(23); + if (yearDigit4 < 48 || yearDigit4 > 57) { + return void 0; + } + const year = (yearDigit1 - 48) * 1e3 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48); + const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second)); + return result.getUTCDay() === weekday ? result : void 0; + } + function parseRfc850Date(date) { + let commaIndex = -1; + let weekday = -1; + if (date[0] === 'S') { + if (date[1] === 'u' && date[2] === 'n' && date[3] === 'd' && date[4] === 'a' && date[5] === 'y') { + weekday = 0; + commaIndex = 6; + } else if ( + date[1] === 'a' && + date[2] === 't' && + date[3] === 'u' && + date[4] === 'r' && + date[5] === 'd' && + date[6] === 'a' && + date[7] === 'y' + ) { + weekday = 6; + commaIndex = 8; + } + } else if ( + date[0] === 'M' && + date[1] === 'o' && + date[2] === 'n' && + date[3] === 'd' && + date[4] === 'a' && + date[5] === 'y' + ) { + weekday = 1; + commaIndex = 6; + } else if (date[0] === 'T') { + if (date[1] === 'u' && date[2] === 'e' && date[3] === 's' && date[4] === 'd' && date[5] === 'a' && date[6] === 'y') { + weekday = 2; + commaIndex = 7; + } else if ( + date[1] === 'h' && + date[2] === 'u' && + date[3] === 'r' && + date[4] === 's' && + date[5] === 'd' && + date[6] === 'a' && + date[7] === 'y' + ) { + weekday = 4; + commaIndex = 8; + } + } else if ( + date[0] === 'W' && + date[1] === 'e' && + date[2] === 'd' && + date[3] === 'n' && + date[4] === 'e' && + date[5] === 's' && + date[6] === 'd' && + date[7] === 'a' && + date[8] === 'y' + ) { + weekday = 3; + commaIndex = 9; + } else if ( + date[0] === 'F' && + date[1] === 'r' && + date[2] === 'i' && + date[3] === 'd' && + date[4] === 'a' && + date[5] === 'y' + ) { + weekday = 5; + commaIndex = 6; + } else { + return void 0; + } + if ( + date[commaIndex] !== ',' || + date.length - commaIndex - 1 !== 23 || + date[commaIndex + 1] !== ' ' || + date[commaIndex + 4] !== '-' || + date[commaIndex + 8] !== '-' || + date[commaIndex + 11] !== ' ' || + date[commaIndex + 14] !== ':' || + date[commaIndex + 17] !== ':' || + date[commaIndex + 20] !== ' ' || + date[commaIndex + 21] !== 'G' || + date[commaIndex + 22] !== 'M' || + date[commaIndex + 23] !== 'T' + ) { + return void 0; + } + let day = 0; + if (date[commaIndex + 2] === '0') { + const code = date.charCodeAt(commaIndex + 3); + if (code < 49 || code > 57) { + return void 0; + } + day = code - 48; + } else { + const code1 = date.charCodeAt(commaIndex + 2); + if (code1 < 49 || code1 > 51) { + return void 0; + } + const code2 = date.charCodeAt(commaIndex + 3); + if (code2 < 48 || code2 > 57) { + return void 0; + } + day = (code1 - 48) * 10 + (code2 - 48); + } + let monthIdx = -1; + if (date[commaIndex + 5] === 'J' && date[commaIndex + 6] === 'a' && date[commaIndex + 7] === 'n') { + monthIdx = 0; + } else if (date[commaIndex + 5] === 'F' && date[commaIndex + 6] === 'e' && date[commaIndex + 7] === 'b') { + monthIdx = 1; + } else if (date[commaIndex + 5] === 'M' && date[commaIndex + 6] === 'a' && date[commaIndex + 7] === 'r') { + monthIdx = 2; + } else if (date[commaIndex + 5] === 'A' && date[commaIndex + 6] === 'p' && date[commaIndex + 7] === 'r') { + monthIdx = 3; + } else if (date[commaIndex + 5] === 'M' && date[commaIndex + 6] === 'a' && date[commaIndex + 7] === 'y') { + monthIdx = 4; + } else if (date[commaIndex + 5] === 'J' && date[commaIndex + 6] === 'u' && date[commaIndex + 7] === 'n') { + monthIdx = 5; + } else if (date[commaIndex + 5] === 'J' && date[commaIndex + 6] === 'u' && date[commaIndex + 7] === 'l') { + monthIdx = 6; + } else if (date[commaIndex + 5] === 'A' && date[commaIndex + 6] === 'u' && date[commaIndex + 7] === 'g') { + monthIdx = 7; + } else if (date[commaIndex + 5] === 'S' && date[commaIndex + 6] === 'e' && date[commaIndex + 7] === 'p') { + monthIdx = 8; + } else if (date[commaIndex + 5] === 'O' && date[commaIndex + 6] === 'c' && date[commaIndex + 7] === 't') { + monthIdx = 9; + } else if (date[commaIndex + 5] === 'N' && date[commaIndex + 6] === 'o' && date[commaIndex + 7] === 'v') { + monthIdx = 10; + } else if (date[commaIndex + 5] === 'D' && date[commaIndex + 6] === 'e' && date[commaIndex + 7] === 'c') { + monthIdx = 11; + } else { + return void 0; + } + const yearDigit1 = date.charCodeAt(commaIndex + 9); + if (yearDigit1 < 48 || yearDigit1 > 57) { + return void 0; + } + const yearDigit2 = date.charCodeAt(commaIndex + 10); + if (yearDigit2 < 48 || yearDigit2 > 57) { + return void 0; + } + let year = (yearDigit1 - 48) * 10 + (yearDigit2 - 48); + year += year < 70 ? 2e3 : 1900; + let hour = 0; + if (date[commaIndex + 12] === '0') { + const code = date.charCodeAt(commaIndex + 13); + if (code < 48 || code > 57) { + return void 0; + } + hour = code - 48; + } else { + const code1 = date.charCodeAt(commaIndex + 12); + if (code1 < 48 || code1 > 50) { + return void 0; + } + const code2 = date.charCodeAt(commaIndex + 13); + if (code2 < 48 || code2 > 57) { + return void 0; + } + if (code1 === 50 && code2 > 51) { + return void 0; + } + hour = (code1 - 48) * 10 + (code2 - 48); + } + let minute = 0; + if (date[commaIndex + 15] === '0') { + const code = date.charCodeAt(commaIndex + 16); + if (code < 48 || code > 57) { + return void 0; + } + minute = code - 48; + } else { + const code1 = date.charCodeAt(commaIndex + 15); + if (code1 < 48 || code1 > 53) { + return void 0; + } + const code2 = date.charCodeAt(commaIndex + 16); + if (code2 < 48 || code2 > 57) { + return void 0; + } + minute = (code1 - 48) * 10 + (code2 - 48); + } + let second = 0; + if (date[commaIndex + 18] === '0') { + const code = date.charCodeAt(commaIndex + 19); + if (code < 48 || code > 57) { + return void 0; + } + second = code - 48; + } else { + const code1 = date.charCodeAt(commaIndex + 18); + if (code1 < 48 || code1 > 53) { + return void 0; + } + const code2 = date.charCodeAt(commaIndex + 19); + if (code2 < 48 || code2 > 57) { + return void 0; + } + second = (code1 - 48) * 10 + (code2 - 48); + } + const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second)); + return result.getUTCDay() === weekday ? result : void 0; + } + module2.exports = { + parseHttpDate + }; + } +}); + +// node_modules/undici/lib/handler/cache-handler.js +var require_cache_handler = __commonJS({ + 'node_modules/undici/lib/handler/cache-handler.js'(exports2, module2) { + 'use strict'; + var util = require_util(); + var { parseCacheControlHeader, parseVaryHeader, isEtagUsable } = require_cache(); + var { parseHttpDate } = require_date(); + function noop3() {} + var HEURISTICALLY_CACHEABLE_STATUS_CODES = [200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 501]; + var NOT_UNDERSTOOD_STATUS_CODES = [206]; + var MAX_RESPONSE_AGE = 2147483647e3; + var CacheHandler = class { + /** + * @type {import('../../types/cache-interceptor.d.ts').default.CacheKey} + */ + #cacheKey; + /** + * @type {import('../../types/cache-interceptor.d.ts').default.CacheHandlerOptions['type']} + */ + #cacheType; + /** + * @type {number | undefined} + */ + #cacheByDefault; + /** + * @type {import('../../types/cache-interceptor.d.ts').default.CacheStore} + */ + #store; + /** + * @type {import('../../types/dispatcher.d.ts').default.DispatchHandler} + */ + #handler; + /** + * @type {import('node:stream').Writable | undefined} + */ + #writeStream; + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheHandlerOptions} opts + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} cacheKey + * @param {import('../../types/dispatcher.d.ts').default.DispatchHandler} handler + */ + constructor({ store, type, cacheByDefault }, cacheKey, handler2) { + this.#store = store; + this.#cacheType = type; + this.#cacheByDefault = cacheByDefault; + this.#cacheKey = cacheKey; + this.#handler = handler2; + } + onRequestStart(controller, context3) { + this.#writeStream?.destroy(); + this.#writeStream = void 0; + this.#handler.onRequestStart?.(controller, context3); + } + onRequestUpgrade(controller, statusCode, headers, socket) { + this.#handler.onRequestUpgrade?.(controller, statusCode, headers, socket); + } + /** + * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller + * @param {number} statusCode + * @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders + * @param {string} statusMessage + */ + onResponseStart(controller, statusCode, resHeaders, statusMessage) { + const downstreamOnHeaders = () => this.#handler.onResponseStart?.(controller, statusCode, resHeaders, statusMessage); + const handler2 = this; + if (!util.safeHTTPMethods.includes(this.#cacheKey.method) && statusCode >= 200 && statusCode <= 399) { + try { + this.#store.delete(this.#cacheKey)?.catch?.(noop3); + } catch {} + return downstreamOnHeaders(); + } + const cacheControlHeader = resHeaders['cache-control']; + const heuristicallyCacheable = + resHeaders['last-modified'] && HEURISTICALLY_CACHEABLE_STATUS_CODES.includes(statusCode); + if (!cacheControlHeader && !resHeaders['expires'] && !heuristicallyCacheable && !this.#cacheByDefault) { + return downstreamOnHeaders(); + } + const cacheControlDirectives = cacheControlHeader ? parseCacheControlHeader(cacheControlHeader) : {}; + if (!canCacheResponse(this.#cacheType, statusCode, resHeaders, cacheControlDirectives, this.#cacheKey.headers)) { + return downstreamOnHeaders(); + } + const now = Date.now(); + const resAge = resHeaders.age ? getAge(resHeaders.age) : void 0; + if (resAge && resAge >= MAX_RESPONSE_AGE) { + return downstreamOnHeaders(); + } + const resDate = typeof resHeaders.date === 'string' ? parseHttpDate(resHeaders.date) : void 0; + const staleAt = + determineStaleAt(this.#cacheType, now, resAge, resHeaders, resDate, cacheControlDirectives) ?? + this.#cacheByDefault; + if (staleAt === void 0 || (resAge && resAge > staleAt)) { + return downstreamOnHeaders(); + } + const baseTime = resDate ? resDate.getTime() : now; + const absoluteStaleAt = staleAt + baseTime; + if (now >= absoluteStaleAt) { + return downstreamOnHeaders(); + } + let varyDirectives; + if (this.#cacheKey.headers && resHeaders.vary) { + varyDirectives = parseVaryHeader(resHeaders.vary, this.#cacheKey.headers); + if (!varyDirectives) { + return downstreamOnHeaders(); + } + } + const cachedAt = resAge ? now - resAge : now; + const deleteAt = determineDeleteAt(baseTime, cachedAt, cacheControlDirectives, absoluteStaleAt); + const strippedHeaders = stripNecessaryHeaders(resHeaders, cacheControlDirectives); + const value = { + statusCode, + statusMessage, + headers: strippedHeaders, + vary: varyDirectives, + cacheControlDirectives, + cachedAt, + staleAt: absoluteStaleAt, + deleteAt + }; + if (statusCode === 304) { + const handle304 = cachedValue => { + if (!cachedValue) { + return downstreamOnHeaders(); + } + value.statusCode = cachedValue.statusCode; + value.statusMessage = cachedValue.statusMessage; + value.etag = cachedValue.etag; + value.headers = { ...cachedValue.headers, ...strippedHeaders }; + downstreamOnHeaders(); + this.#writeStream = this.#store.createWriteStream(this.#cacheKey, value); + if (!this.#writeStream || !cachedValue?.body) { + return; + } + if (typeof cachedValue.body.values === 'function') { + const bodyIterator = cachedValue.body.values(); + const streamCachedBody = () => { + for (const chunk of bodyIterator) { + const full = this.#writeStream.write(chunk) === false; + this.#handler.onResponseData?.(controller, chunk); + if (full) { + break; + } + } + }; + this.#writeStream + .on('error', function () { + handler2.#writeStream = void 0; + handler2.#store.delete(handler2.#cacheKey); + }) + .on('drain', () => { + streamCachedBody(); + }) + .on('close', function () { + if (handler2.#writeStream === this) { + handler2.#writeStream = void 0; + } + }); + streamCachedBody(); + } else if (typeof cachedValue.body.on === 'function') { + cachedValue.body + .on('data', chunk => { + this.#writeStream.write(chunk); + this.#handler.onResponseData?.(controller, chunk); + }) + .on('end', () => { + this.#writeStream.end(); + }) + .on('error', () => { + this.#writeStream = void 0; + this.#store.delete(this.#cacheKey); + }); + this.#writeStream + .on('error', function () { + handler2.#writeStream = void 0; + handler2.#store.delete(handler2.#cacheKey); + }) + .on('close', function () { + if (handler2.#writeStream === this) { + handler2.#writeStream = void 0; + } + }); + } + }; + const result = this.#store.get(this.#cacheKey); + if (result && typeof result.then === 'function') { + result.then(handle304); + } else { + handle304(result); + } + } else { + if (typeof resHeaders.etag === 'string' && isEtagUsable(resHeaders.etag)) { + value.etag = resHeaders.etag; + } + this.#writeStream = this.#store.createWriteStream(this.#cacheKey, value); + if (!this.#writeStream) { + return downstreamOnHeaders(); + } + this.#writeStream + .on('drain', () => controller.resume()) + .on('error', function () { + handler2.#writeStream = void 0; + handler2.#store.delete(handler2.#cacheKey); + }) + .on('close', function () { + if (handler2.#writeStream === this) { + handler2.#writeStream = void 0; + } + controller.resume(); + }); + downstreamOnHeaders(); + } + } + onResponseData(controller, chunk) { + if (this.#writeStream?.write(chunk) === false) { + controller.pause(); + } + this.#handler.onResponseData?.(controller, chunk); + } + onResponseEnd(controller, trailers) { + this.#writeStream?.end(); + this.#handler.onResponseEnd?.(controller, trailers); + } + onResponseError(controller, err) { + this.#writeStream?.destroy(err); + this.#writeStream = void 0; + this.#handler.onResponseError?.(controller, err); + } + }; + function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives, reqHeaders) { + if (statusCode < 200 || NOT_UNDERSTOOD_STATUS_CODES.includes(statusCode)) { + return false; + } + if ( + !HEURISTICALLY_CACHEABLE_STATUS_CODES.includes(statusCode) && + !resHeaders['expires'] && + !cacheControlDirectives.public && + cacheControlDirectives['max-age'] === void 0 && // RFC 9111: a private response directive, if the cache is not shared + !(cacheControlDirectives.private && cacheType === 'private') && + !(cacheControlDirectives['s-maxage'] !== void 0 && cacheType === 'shared') + ) { + return false; + } + if (cacheControlDirectives['no-store']) { + return false; + } + if (cacheType === 'shared' && cacheControlDirectives.private === true) { + return false; + } + if (resHeaders.vary?.includes('*')) { + return false; + } + if (reqHeaders?.authorization) { + if ( + !cacheControlDirectives.public && + !cacheControlDirectives['s-maxage'] && + !cacheControlDirectives['must-revalidate'] + ) { + return false; + } + if (typeof reqHeaders.authorization !== 'string') { + return false; + } + if ( + Array.isArray(cacheControlDirectives['no-cache']) && + cacheControlDirectives['no-cache'].includes('authorization') + ) { + return false; + } + if ( + Array.isArray(cacheControlDirectives['private']) && + cacheControlDirectives['private'].includes('authorization') + ) { + return false; + } + } + return true; + } + function getAge(ageHeader) { + const age = parseInt(Array.isArray(ageHeader) ? ageHeader[0] : ageHeader); + return isNaN(age) ? void 0 : age * 1e3; + } + function determineStaleAt(cacheType, now, age, resHeaders, responseDate, cacheControlDirectives) { + if (cacheType === 'shared') { + const sMaxAge = cacheControlDirectives['s-maxage']; + if (sMaxAge !== void 0) { + return sMaxAge > 0 ? sMaxAge * 1e3 : void 0; + } + } + const maxAge = cacheControlDirectives['max-age']; + if (maxAge !== void 0) { + return maxAge > 0 ? maxAge * 1e3 : void 0; + } + if (typeof resHeaders.expires === 'string') { + const expiresDate = parseHttpDate(resHeaders.expires); + if (expiresDate) { + if (now >= expiresDate.getTime()) { + return void 0; + } + if (responseDate) { + if (responseDate >= expiresDate) { + return void 0; + } + if (age !== void 0 && age > expiresDate - responseDate) { + return void 0; + } + } + return expiresDate.getTime() - now; + } + } + if (typeof resHeaders['last-modified'] === 'string') { + const lastModified = new Date(resHeaders['last-modified']); + if (isValidDate(lastModified)) { + if (lastModified.getTime() >= now) { + return void 0; + } + const responseAge = now - lastModified.getTime(); + return responseAge * 0.1; + } + } + if (cacheControlDirectives.immutable) { + return 31536e6; + } + return void 0; + } + function determineDeleteAt(baseTime, cachedAt, cacheControlDirectives, staleAt) { + let staleWhileRevalidate = -Infinity; + let staleIfError = -Infinity; + let immutable = -Infinity; + if (cacheControlDirectives['stale-while-revalidate']) { + staleWhileRevalidate = staleAt + cacheControlDirectives['stale-while-revalidate'] * 1e3; + } + if (cacheControlDirectives['stale-if-error']) { + staleIfError = staleAt + cacheControlDirectives['stale-if-error'] * 1e3; + } + if (cacheControlDirectives.immutable && staleWhileRevalidate === -Infinity && staleIfError === -Infinity) { + immutable = cachedAt + 31536e6; + } + if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity && immutable === -Infinity) { + const freshnessLifetime = staleAt - baseTime; + const datePrecisionPadding = Math.min(Math.max(cachedAt - baseTime, 0), 1e3); + return staleAt + freshnessLifetime + datePrecisionPadding; + } + return Math.max(staleAt, staleWhileRevalidate, staleIfError, immutable); + } + function stripNecessaryHeaders(resHeaders, cacheControlDirectives) { + const headersToRemove = [ + 'connection', + 'proxy-authenticate', + 'proxy-authentication-info', + 'proxy-authorization', + 'proxy-connection', + 'te', + 'transfer-encoding', + 'upgrade', + // We'll add age back when serving it + 'age' + ]; + if (resHeaders['connection']) { + if (Array.isArray(resHeaders['connection'])) { + headersToRemove.push(...resHeaders['connection'].map(header => header.trim())); + } else { + headersToRemove.push(...resHeaders['connection'].split(',').map(header => header.trim())); + } + } + if (Array.isArray(cacheControlDirectives['no-cache'])) { + headersToRemove.push(...cacheControlDirectives['no-cache']); + } + if (Array.isArray(cacheControlDirectives['private'])) { + headersToRemove.push(...cacheControlDirectives['private']); + } + let strippedHeaders; + for (const headerName of headersToRemove) { + if (resHeaders[headerName]) { + strippedHeaders ??= { ...resHeaders }; + delete strippedHeaders[headerName]; + } + } + return strippedHeaders ?? resHeaders; + } + function isValidDate(date) { + return date instanceof Date && Number.isFinite(date.valueOf()); + } + module2.exports = CacheHandler; + } +}); + +// node_modules/undici/lib/cache/memory-cache-store.js +var require_memory_cache_store = __commonJS({ + 'node_modules/undici/lib/cache/memory-cache-store.js'(exports2, module2) { + 'use strict'; + var { Writable } = require('node:stream'); + var { EventEmitter } = require('node:events'); + var { assertCacheKey, assertCacheValue } = require_cache(); + var MemoryCacheStore = class extends EventEmitter { + #maxCount = 1024; + #maxSize = 104857600; + // 100MB + #maxEntrySize = 5242880; + // 5MB + #size = 0; + #count = 0; + #entries = /* @__PURE__ */ new Map(); + #hasEmittedMaxSizeEvent = false; + /** + * @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts] + */ + constructor(opts) { + super(); + if (opts) { + if (typeof opts !== 'object') { + throw new TypeError('MemoryCacheStore options must be an object'); + } + if (opts.maxCount !== void 0) { + if (typeof opts.maxCount !== 'number' || !Number.isInteger(opts.maxCount) || opts.maxCount < 0) { + throw new TypeError('MemoryCacheStore options.maxCount must be a non-negative integer'); + } + this.#maxCount = opts.maxCount; + } + if (opts.maxSize !== void 0) { + if (typeof opts.maxSize !== 'number' || !Number.isInteger(opts.maxSize) || opts.maxSize < 0) { + throw new TypeError('MemoryCacheStore options.maxSize must be a non-negative integer'); + } + this.#maxSize = opts.maxSize; + } + if (opts.maxEntrySize !== void 0) { + if (typeof opts.maxEntrySize !== 'number' || !Number.isInteger(opts.maxEntrySize) || opts.maxEntrySize < 0) { + throw new TypeError('MemoryCacheStore options.maxEntrySize must be a non-negative integer'); + } + this.#maxEntrySize = opts.maxEntrySize; + } + } + } + /** + * Get the current size of the cache in bytes + * @returns {number} The current size of the cache in bytes + */ + get size() { + return this.#size; + } + /** + * Check if the cache is full (either max size or max count reached) + * @returns {boolean} True if the cache is full, false otherwise + */ + isFull() { + return this.#size >= this.#maxSize || this.#count >= this.#maxCount; + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req + * @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined} + */ + get(key) { + assertCacheKey(key); + const topLevelKey = `${key.origin}:${key.path}`; + const now = Date.now(); + const entries = this.#entries.get(topLevelKey); + const entry = entries ? findEntry(key, entries, now) : null; + return entry == null + ? void 0 + : { + statusMessage: entry.statusMessage, + statusCode: entry.statusCode, + headers: entry.headers, + body: entry.body, + vary: entry.vary ? entry.vary : void 0, + etag: entry.etag, + cacheControlDirectives: entry.cacheControlDirectives, + cachedAt: entry.cachedAt, + staleAt: entry.staleAt, + deleteAt: entry.deleteAt + }; + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key + * @param {import('../../types/cache-interceptor.d.ts').default.CacheValue} val + * @returns {Writable | undefined} + */ + createWriteStream(key, val) { + assertCacheKey(key); + assertCacheValue(val); + const topLevelKey = `${key.origin}:${key.path}`; + const store = this; + const entry = { ...key, ...val, body: [], size: 0 }; + return new Writable({ + write(chunk, encoding, callback) { + if (typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + entry.size += chunk.byteLength; + if (entry.size > store.#maxEntrySize) { + this.destroy(); + } else { + entry.body.push(chunk); + } + callback(null); + }, + final(callback) { + let entries = store.#entries.get(topLevelKey); + if (!entries) { + entries = []; + store.#entries.set(topLevelKey, entries); + } + const previousEntry = findEntry(key, entries, Date.now()); + if (previousEntry) { + const index = entries.indexOf(previousEntry); + entries.splice(index, 1, entry); + store.#size -= previousEntry.size; + } else { + entries.push(entry); + store.#count += 1; + } + store.#size += entry.size; + if (store.#size > store.#maxSize || store.#count > store.#maxCount) { + if (!store.#hasEmittedMaxSizeEvent) { + store.emit('maxSizeExceeded', { + size: store.#size, + maxSize: store.#maxSize, + count: store.#count, + maxCount: store.#maxCount + }); + store.#hasEmittedMaxSizeEvent = true; + } + for (const [key2, entries2] of store.#entries) { + for (const entry2 of entries2.splice(0, entries2.length / 2)) { + store.#size -= entry2.size; + store.#count -= 1; + } + if (entries2.length === 0) { + store.#entries.delete(key2); + } + } + if (store.#size < store.#maxSize && store.#count < store.#maxCount) { + store.#hasEmittedMaxSizeEvent = false; + } + } + callback(null); + } + }); + } + /** + * @param {CacheKey} key + */ + delete(key) { + if (typeof key !== 'object') { + throw new TypeError(`expected key to be object, got ${typeof key}`); + } + const topLevelKey = `${key.origin}:${key.path}`; + for (const entry of this.#entries.get(topLevelKey) ?? []) { + this.#size -= entry.size; + this.#count -= 1; + } + this.#entries.delete(topLevelKey); + } + }; + function findEntry(key, entries, now) { + return entries.find( + entry => + entry.deleteAt > now && + entry.method === key.method && + (entry.vary == null || + Object.keys(entry.vary).every(headerName => { + if (entry.vary[headerName] === null) { + return key.headers[headerName] === void 0; + } + return entry.vary[headerName] === key.headers[headerName]; + })) + ); + } + module2.exports = MemoryCacheStore; + } +}); + +// node_modules/undici/lib/handler/cache-revalidation-handler.js +var require_cache_revalidation_handler = __commonJS({ + 'node_modules/undici/lib/handler/cache-revalidation-handler.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var CacheRevalidationHandler = class { + #successful = false; + /** + * @type {((boolean, any) => void) | null} + */ + #callback; + /** + * @type {(import('../../types/dispatcher.d.ts').default.DispatchHandler)} + */ + #handler; + #context; + /** + * @type {boolean} + */ + #allowErrorStatusCodes; + /** + * @param {(boolean) => void} callback Function to call if the cached value is valid + * @param {import('../../types/dispatcher.d.ts').default.DispatchHandlers} handler + * @param {boolean} allowErrorStatusCodes + */ + constructor(callback, handler2, allowErrorStatusCodes) { + if (typeof callback !== 'function') { + throw new TypeError('callback must be a function'); + } + this.#callback = callback; + this.#handler = handler2; + this.#allowErrorStatusCodes = allowErrorStatusCodes; + } + onRequestStart(_, context3) { + this.#successful = false; + this.#context = context3; + } + onRequestUpgrade(controller, statusCode, headers, socket) { + this.#handler.onRequestUpgrade?.(controller, statusCode, headers, socket); + } + onResponseStart(controller, statusCode, headers, statusMessage) { + assert(this.#callback != null); + this.#successful = statusCode === 304 || (this.#allowErrorStatusCodes && statusCode >= 500 && statusCode <= 504); + this.#callback(this.#successful, this.#context); + this.#callback = null; + if (this.#successful) { + return true; + } + this.#handler.onRequestStart?.(controller, this.#context); + this.#handler.onResponseStart?.(controller, statusCode, headers, statusMessage); + } + onResponseData(controller, chunk) { + if (this.#successful) { + return; + } + return this.#handler.onResponseData?.(controller, chunk); + } + onResponseEnd(controller, trailers) { + if (this.#successful) { + return; + } + this.#handler.onResponseEnd?.(controller, trailers); + } + onResponseError(controller, err) { + if (this.#successful) { + return; + } + if (this.#callback) { + this.#callback(false); + this.#callback = null; + } + if (typeof this.#handler.onResponseError === 'function') { + this.#handler.onResponseError(controller, err); + } else { + throw err; + } + } + }; + module2.exports = CacheRevalidationHandler; + } +}); + +// node_modules/undici/lib/interceptor/cache.js +var require_cache2 = __commonJS({ + 'node_modules/undici/lib/interceptor/cache.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { Readable } = require('node:stream'); + var util = require_util(); + var CacheHandler = require_cache_handler(); + var MemoryCacheStore = require_memory_cache_store(); + var CacheRevalidationHandler = require_cache_revalidation_handler(); + var { assertCacheStore, assertCacheMethods, makeCacheKey, normalizeHeaders, parseCacheControlHeader } = require_cache(); + var { AbortError } = require_errors(); + function assertCacheOrigins(origins, name) { + if (origins === void 0) return; + if (!Array.isArray(origins)) { + throw new TypeError(`expected ${name} to be an array or undefined, got ${typeof origins}`); + } + for (let i = 0; i < origins.length; i++) { + const origin = origins[i]; + if (typeof origin !== 'string' && !(origin instanceof RegExp)) { + throw new TypeError(`expected ${name}[${i}] to be a string or RegExp, got ${typeof origin}`); + } + } + } + var nop = () => {}; + function needsRevalidation(result, cacheControlDirectives, { headers = {} }) { + if (cacheControlDirectives?.['no-cache']) { + return true; + } + if (result.cacheControlDirectives?.['no-cache'] && !Array.isArray(result.cacheControlDirectives['no-cache'])) { + return true; + } + if (headers['if-modified-since'] || headers['if-none-match']) { + return true; + } + return false; + } + function isStale(result, cacheControlDirectives) { + const now = Date.now(); + if (now > result.staleAt) { + if (cacheControlDirectives?.['max-stale']) { + const gracePeriod = result.staleAt + cacheControlDirectives['max-stale'] * 1e3; + return now > gracePeriod; + } + return true; + } + if (cacheControlDirectives?.['min-fresh']) { + const timeLeftTillStale = result.staleAt - now; + const threshold = cacheControlDirectives['min-fresh'] * 1e3; + return timeLeftTillStale <= threshold; + } + return false; + } + function withinStaleWhileRevalidateWindow(result) { + const staleWhileRevalidate = result.cacheControlDirectives?.['stale-while-revalidate']; + if (!staleWhileRevalidate) { + return false; + } + const now = Date.now(); + const staleWhileRevalidateExpiry = result.staleAt + staleWhileRevalidate * 1e3; + return now <= staleWhileRevalidateExpiry; + } + function handleUncachedResponse(dispatch, globalOpts, cacheKey, handler2, opts, reqCacheControl) { + if (reqCacheControl?.['only-if-cached']) { + let aborted = false; + const controller = { + paused: false, + rawHeaders: [], + rawTrailers: [], + pause() { + this.paused = true; + }, + resume() { + this.paused = false; + }, + abort: reason => { + aborted = true; + handler2.onResponseError?.(controller, reason ?? new AbortError()); + } + }; + try { + handler2.onRequestStart?.(controller, null); + if (aborted) { + return; + } + handler2.onResponseStart?.(controller, 504, {}, 'Gateway Timeout'); + if (aborted) { + return; + } + handler2.onResponseEnd?.(controller, {}); + } catch (err) { + if (typeof handler2.onResponseError === 'function') { + handler2.onResponseError(controller, err); + } + } + return true; + } + return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler2)); + } + function sendCachedValue(handler2, opts, result, age, context3, isStale2) { + const stream = util.isStream(result.body) ? result.body : Readable.from(result.body ?? []); + assert(!stream.destroyed, 'stream should not be destroyed'); + assert(!stream.readableDidRead, 'stream should not be readableDidRead'); + const controller = { + rawHeaders: [], + rawTrailers: [], + resume() { + stream.resume(); + }, + pause() { + stream.pause(); + }, + get paused() { + return stream.isPaused(); + }, + get aborted() { + return stream.destroyed; + }, + get reason() { + return stream.errored; + }, + abort(reason) { + stream.destroy(reason ?? new AbortError()); + } + }; + stream + .on('error', function (err) { + if (!this.readableEnded) { + if (typeof handler2.onResponseError === 'function') { + handler2.onResponseError(controller, err); + } else { + throw err; + } + } + }) + .on('close', function () { + if (!this.errored) { + handler2.onResponseEnd?.(controller, {}); + } + }); + handler2.onRequestStart?.(controller, context3); + if (stream.destroyed) { + return; + } + const headers = { ...result.headers, age: String(age) }; + if (isStale2) { + headers.warning = '110 - "response is stale"'; + } + controller.rawHeaders = util.toRawHeaders(headers); + handler2.onResponseStart?.(controller, result.statusCode, headers, result.statusMessage); + if (opts.method === 'HEAD') { + stream.destroy(); + } else { + stream.on('data', function (chunk) { + handler2.onResponseData?.(controller, chunk); + }); + } + } + function handleResult(dispatch, globalOpts, cacheKey, handler2, opts, reqCacheControl, result) { + if (!result) { + return handleUncachedResponse(dispatch, globalOpts, cacheKey, handler2, opts, reqCacheControl); + } + const now = Date.now(); + if (now > result.deleteAt) { + return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler2)); + } + const age = Math.round((now - result.cachedAt) / 1e3); + if (reqCacheControl?.['max-age'] && age >= reqCacheControl['max-age']) { + return dispatch(opts, handler2); + } + const stale = isStale(result, reqCacheControl); + const revalidate = needsRevalidation(result, reqCacheControl, opts); + if (stale || revalidate) { + if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) { + return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler2)); + } + if (!revalidate && withinStaleWhileRevalidateWindow(result)) { + sendCachedValue(handler2, opts, result, age, null, true); + queueMicrotask(() => { + const headers2 = { + ...opts.headers, + 'if-modified-since': new Date(result.cachedAt).toUTCString() + }; + if (result.etag) { + headers2['if-none-match'] = result.etag; + } + if (result.vary) { + for (const key in result.vary) { + if (result.vary[key] != null) { + headers2[key] = result.vary[key]; + } + } + } + dispatch( + { + ...opts, + headers: headers2 + }, + new CacheHandler(globalOpts, cacheKey, { + // Silent handler that just updates the cache + onRequestStart() {}, + onRequestUpgrade() {}, + onResponseStart() {}, + onResponseData() {}, + onResponseEnd() {}, + onResponseError() {} + }) + ); + }); + return true; + } + let withinStaleIfErrorThreshold = false; + const staleIfErrorExpiry = result.cacheControlDirectives['stale-if-error'] ?? reqCacheControl?.['stale-if-error']; + if (staleIfErrorExpiry) { + withinStaleIfErrorThreshold = now < result.staleAt + staleIfErrorExpiry * 1e3; + } + const headers = { + ...opts.headers, + 'if-modified-since': new Date(result.cachedAt).toUTCString() + }; + if (result.etag) { + headers['if-none-match'] = result.etag; + } + if (result.vary) { + for (const key in result.vary) { + if (result.vary[key] != null) { + headers[key] = result.vary[key]; + } + } + } + return dispatch( + { + ...opts, + headers + }, + new CacheRevalidationHandler( + (success, context3) => { + if (success) { + sendCachedValue(handler2, opts, result, age, context3, stale); + } else if (util.isStream(result.body)) { + result.body.on('error', nop).destroy(); + } + }, + new CacheHandler(globalOpts, cacheKey, handler2), + withinStaleIfErrorThreshold + ) + ); + } + if (util.isStream(opts.body)) { + opts.body.on('error', nop).destroy(); + } + sendCachedValue(handler2, opts, result, age, null, false); + } + module2.exports = (opts = {}) => { + const { + store = new MemoryCacheStore(), + methods = ['GET'], + cacheByDefault = void 0, + type = 'shared', + origins = void 0 + } = opts; + if (typeof opts !== 'object' || opts === null) { + throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? 'null' : typeof opts}`); + } + assertCacheStore(store, 'opts.store'); + assertCacheMethods(methods, 'opts.methods'); + assertCacheOrigins(origins, 'opts.origins'); + if (typeof cacheByDefault !== 'undefined' && typeof cacheByDefault !== 'number') { + throw new TypeError(`expected opts.cacheByDefault to be number or undefined, got ${typeof cacheByDefault}`); + } + if (typeof type !== 'undefined' && type !== 'shared' && type !== 'private') { + throw new TypeError(`expected opts.type to be shared, private, or undefined, got ${typeof type}`); + } + const globalOpts = { + store, + methods, + cacheByDefault, + type + }; + const safeMethodsToNotCache = util.safeHTTPMethods.filter(method => methods.includes(method) === false); + return dispatch => { + return (opts2, handler2) => { + if (!opts2.origin || safeMethodsToNotCache.includes(opts2.method)) { + return dispatch(opts2, handler2); + } + if (origins !== void 0) { + const requestOrigin = opts2.origin.toString().toLowerCase(); + let isAllowed = false; + for (let i = 0; i < origins.length; i++) { + const allowed = origins[i]; + if (typeof allowed === 'string') { + if (allowed.toLowerCase() === requestOrigin) { + isAllowed = true; + break; + } + } else if (allowed.test(requestOrigin)) { + isAllowed = true; + break; + } + } + if (!isAllowed) { + return dispatch(opts2, handler2); + } + } + opts2 = { + ...opts2, + headers: normalizeHeaders(opts2) + }; + const reqCacheControl = opts2.headers?.['cache-control'] + ? parseCacheControlHeader(opts2.headers['cache-control']) + : void 0; + if (reqCacheControl?.['no-store']) { + return dispatch(opts2, handler2); + } + const cacheKey = makeCacheKey(opts2); + const result = store.get(cacheKey); + if (result && typeof result.then === 'function') { + return result.then(result2 => + handleResult(dispatch, globalOpts, cacheKey, handler2, opts2, reqCacheControl, result2) + ); + } else { + return handleResult(dispatch, globalOpts, cacheKey, handler2, opts2, reqCacheControl, result); + } + }; + }; + }; + } +}); + +// node_modules/undici/lib/interceptor/decompress.js +var require_decompress = __commonJS({ + 'node_modules/undici/lib/interceptor/decompress.js'(exports2, module2) { + 'use strict'; + var { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require('node:zlib'); + var { pipeline } = require('node:stream'); + var DecoratorHandler = require_decorator_handler(); + var supportedEncodings = { + gzip: createGunzip, + 'x-gzip': createGunzip, + br: createBrotliDecompress, + deflate: createInflate, + compress: createInflate, + 'x-compress': createInflate, + zstd: createZstdDecompress + }; + var defaultSkipStatusCodes = + /** @type {const} */ + [204, 304]; + var warningEmitted = + /** @type {boolean} */ + false; + var DecompressHandler = class extends DecoratorHandler { + /** @type {Transform[]} */ + #decompressors = []; + /** @type {Readonly} */ + #skipStatusCodes; + /** @type {boolean} */ + #skipErrorResponses; + constructor(handler2, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true } = {}) { + super(handler2); + this.#skipStatusCodes = skipStatusCodes; + this.#skipErrorResponses = skipErrorResponses; + } + /** + * Determines if decompression should be skipped based on encoding and status code + * @param {string} contentEncoding - Content-Encoding header value + * @param {number} statusCode - HTTP status code of the response + * @returns {boolean} - True if decompression should be skipped + */ + #shouldSkipDecompression(contentEncoding, statusCode) { + if (!contentEncoding || statusCode < 200) return true; + if (this.#skipStatusCodes.includes(statusCode)) return true; + if (this.#skipErrorResponses && statusCode >= 400) return true; + return false; + } + /** + * Creates a chain of decompressors for multiple content encodings + * + * @param {string} encodings - Comma-separated list of content encodings + * @returns {Array} - Array of decompressor streams + * @throws {Error} - If the number of content-encodings exceeds the maximum allowed + */ + #createDecompressionChain(encodings) { + const parts = encodings.split(','); + const maxContentEncodings = 5; + if (parts.length > maxContentEncodings) { + throw new Error( + `too many content-encodings in response: ${parts.length}, maximum allowed is ${maxContentEncodings}` + ); + } + const decompressors = []; + for (let i = parts.length - 1; i >= 0; i--) { + const encoding = parts[i].trim(); + if (!encoding) continue; + if (!supportedEncodings[encoding]) { + decompressors.length = 0; + return decompressors; + } + decompressors.push(supportedEncodings[encoding]()); + } + return decompressors; + } + /** + * Sets up event handlers for a decompressor stream using readable events + * @param {DecompressorStream} decompressor - The decompressor stream + * @param {Controller} controller - The controller to coordinate with + * @returns {void} + */ + #setupDecompressorEvents(decompressor, controller) { + decompressor.on('readable', () => { + let chunk; + while ((chunk = decompressor.read()) !== null) { + const result = super.onResponseData(controller, chunk); + if (result === false) { + break; + } + } + }); + decompressor.on('error', error2 => { + super.onResponseError(controller, error2); + }); + } + /** + * Sets up event handling for a single decompressor + * @param {Controller} controller - The controller to handle events + * @returns {void} + */ + #setupSingleDecompressor(controller) { + const decompressor = this.#decompressors[0]; + this.#setupDecompressorEvents(decompressor, controller); + decompressor.on('end', () => { + super.onResponseEnd(controller, {}); + }); + } + /** + * Sets up event handling for multiple chained decompressors using pipeline + * @param {Controller} controller - The controller to handle events + * @returns {void} + */ + #setupMultipleDecompressors(controller) { + const lastDecompressor = this.#decompressors[this.#decompressors.length - 1]; + this.#setupDecompressorEvents(lastDecompressor, controller); + pipeline(this.#decompressors, err => { + if (err) { + super.onResponseError(controller, err); + return; + } + super.onResponseEnd(controller, {}); + }); + } + /** + * Cleans up decompressor references to prevent memory leaks + * @returns {void} + */ + #cleanupDecompressors() { + this.#decompressors.length = 0; + } + /** + * @param {Controller} controller + * @param {number} statusCode + * @param {Record} headers + * @param {string} statusMessage + * @returns {void} + */ + onResponseStart(controller, statusCode, headers, statusMessage) { + const contentEncoding = headers['content-encoding']; + if (this.#shouldSkipDecompression(contentEncoding, statusCode)) { + return super.onResponseStart(controller, statusCode, headers, statusMessage); + } + const decompressors = this.#createDecompressionChain(contentEncoding.toLowerCase()); + if (decompressors.length === 0) { + this.#cleanupDecompressors(); + return super.onResponseStart(controller, statusCode, headers, statusMessage); + } + this.#decompressors = decompressors; + const { 'content-encoding': _, 'content-length': __, ...newHeaders } = headers; + if (controller?.rawHeaders) { + const rawHeaders = controller.rawHeaders; + if (Array.isArray(rawHeaders)) { + const filteredHeaders = []; + for (let i = 0; i < rawHeaders.length; i += 2) { + const headerName = rawHeaders[i]; + const name = Buffer.isBuffer(headerName) ? headerName.toString('latin1') : `${headerName}`; + const lowerName = name.toLowerCase(); + if (lowerName === 'content-encoding' || lowerName === 'content-length') { + continue; + } + filteredHeaders.push(rawHeaders[i], rawHeaders[i + 1]); + } + controller.rawHeaders = filteredHeaders; + } else if (typeof rawHeaders === 'object') { + for (const name of Object.keys(rawHeaders)) { + const lowerName = name.toLowerCase(); + if (lowerName === 'content-encoding' || lowerName === 'content-length') { + delete rawHeaders[name]; + } + } + } + } + if (this.#decompressors.length === 1) { + this.#setupSingleDecompressor(controller); + } else { + this.#setupMultipleDecompressors(controller); + } + return super.onResponseStart(controller, statusCode, newHeaders, statusMessage); + } + /** + * @param {Controller} controller + * @param {Buffer} chunk + * @returns {void} + */ + onResponseData(controller, chunk) { + if (this.#decompressors.length > 0) { + this.#decompressors[0].write(chunk); + return; + } + super.onResponseData(controller, chunk); + } + /** + * @param {Controller} controller + * @param {Record | undefined} trailers + * @returns {void} + */ + onResponseEnd(controller, trailers) { + if (this.#decompressors.length > 0) { + this.#decompressors[0].end(); + this.#cleanupDecompressors(); + return; + } + super.onResponseEnd(controller, trailers); + } + /** + * @param {Controller} controller + * @param {Error} err + * @returns {void} + */ + onResponseError(controller, err) { + if (this.#decompressors.length > 0) { + for (const decompressor of this.#decompressors) { + decompressor.destroy(err); + } + this.#cleanupDecompressors(); + } + super.onResponseError(controller, err); + } + }; + function createDecompressInterceptor(options = {}) { + if (!warningEmitted) { + process.emitWarning('DecompressInterceptor is experimental and subject to change', 'ExperimentalWarning'); + warningEmitted = true; + } + return dispatch => { + return (opts, handler2) => { + const decompressHandler = new DecompressHandler(handler2, options); + return dispatch(opts, decompressHandler); + }; + }; + } + module2.exports = createDecompressInterceptor; + } +}); + +// node_modules/undici/lib/handler/deduplication-handler.js +var require_deduplication_handler = __commonJS({ + 'node_modules/undici/lib/handler/deduplication-handler.js'(exports2, module2) { + 'use strict'; + var { RequestAbortedError } = require_errors(); + var DEFAULT_MAX_BUFFER_SIZE = 5 * 1024 * 1024; + var DeduplicationHandler = class { + /** + * @type {DispatchHandler} + */ + #primaryHandler; + /** + * @type {WaitingHandler[]} + */ + #waitingHandlers = []; + /** + * @type {number} + */ + #maxBufferSize = DEFAULT_MAX_BUFFER_SIZE; + /** + * @type {number} + */ + #statusCode = 0; + /** + * @type {Record} + */ + #headers = {}; + /** + * @type {string} + */ + #statusMessage = ''; + /** + * @type {boolean} + */ + #aborted = false; + /** + * @type {boolean} + */ + #responseStarted = false; + /** + * @type {boolean} + */ + #responseDataStarted = false; + /** + * @type {boolean} + */ + #completed = false; + /** + * @type {import('../../types/dispatcher.d.ts').default.DispatchController | null} + */ + #controller = null; + /** + * @type {(() => void) | null} + */ + #onComplete = null; + /** + * @param {DispatchHandler} primaryHandler The primary handler + * @param {() => void} onComplete Callback when request completes + * @param {number} [maxBufferSize] Maximum paused buffer size per waiting handler + */ + constructor(primaryHandler, onComplete, maxBufferSize = DEFAULT_MAX_BUFFER_SIZE) { + this.#primaryHandler = primaryHandler; + this.#onComplete = onComplete; + this.#maxBufferSize = maxBufferSize; + } + /** + * Add a waiting handler that will receive response events. + * Returns false if deduplication can no longer safely attach this handler. + * + * @param {DispatchHandler} handler + * @returns {boolean} + */ + addWaitingHandler(handler2) { + if (this.#completed || this.#responseDataStarted) { + return false; + } + const waitingHandler = this.#createWaitingHandler(handler2); + const waitingController = waitingHandler.controller; + try { + handler2.onRequestStart?.(waitingController, null); + if (waitingController.aborted) { + waitingHandler.done = true; + return true; + } + if (this.#responseStarted) { + handler2.onResponseStart?.(waitingController, this.#statusCode, this.#headers, this.#statusMessage); + } + } catch { + waitingHandler.done = true; + return true; + } + if (!waitingController.aborted) { + this.#waitingHandlers.push(waitingHandler); + } + return true; + } + /** + * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller + * @param {any} context + */ + onRequestStart(controller, context3) { + this.#controller = controller; + this.#primaryHandler.onRequestStart?.(controller, context3); + } + /** + * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller + * @param {number} statusCode + * @param {import('../../types/header.d.ts').IncomingHttpHeaders} headers + * @param {Socket} socket + */ + onRequestUpgrade(controller, statusCode, headers, socket) { + this.#primaryHandler.onRequestUpgrade?.(controller, statusCode, headers, socket); + } + /** + * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller + * @param {number} statusCode + * @param {Record} headers + * @param {string} statusMessage + */ + onResponseStart(controller, statusCode, headers, statusMessage) { + this.#responseStarted = true; + this.#statusCode = statusCode; + this.#headers = headers; + this.#statusMessage = statusMessage; + this.#primaryHandler.onResponseStart?.(controller, statusCode, headers, statusMessage); + for (const waitingHandler of this.#waitingHandlers) { + const { handler: handler2, controller: waitingController } = waitingHandler; + if (waitingHandler.done || waitingController.aborted) { + waitingHandler.done = true; + continue; + } + try { + handler2.onResponseStart?.(waitingController, statusCode, headers, statusMessage); + } catch {} + if (waitingController.aborted) { + waitingHandler.done = true; + } + } + this.#pruneDoneWaitingHandlers(); + } + /** + * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller + * @param {Buffer} chunk + */ + onResponseData(controller, chunk) { + if (this.#aborted || this.#completed) { + return; + } + this.#responseDataStarted = true; + this.#primaryHandler.onResponseData?.(controller, chunk); + for (const waitingHandler of this.#waitingHandlers) { + const { handler: handler2, controller: waitingController } = waitingHandler; + if (waitingHandler.done || waitingController.aborted) { + waitingHandler.done = true; + continue; + } + if (waitingController.paused) { + this.#bufferWaitingChunk(waitingHandler, chunk); + continue; + } + try { + handler2.onResponseData?.(waitingController, chunk); + } catch {} + if (waitingController.aborted) { + waitingHandler.done = true; + waitingHandler.bufferedChunks = []; + waitingHandler.bufferedBytes = 0; + } + } + this.#pruneDoneWaitingHandlers(); + } + /** + * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller + * @param {object} trailers + */ + onResponseEnd(controller, trailers) { + if (this.#aborted || this.#completed) { + return; + } + this.#completed = true; + this.#primaryHandler.onResponseEnd?.(controller, trailers); + for (const waitingHandler of this.#waitingHandlers) { + if (waitingHandler.done || waitingHandler.controller.aborted) { + waitingHandler.done = true; + continue; + } + this.#flushWaitingHandler(waitingHandler); + if (waitingHandler.done || waitingHandler.controller.aborted) { + waitingHandler.done = true; + continue; + } + if (waitingHandler.controller.paused && waitingHandler.bufferedChunks.length > 0) { + waitingHandler.pendingTrailers = trailers; + continue; + } + try { + waitingHandler.handler.onResponseEnd?.(waitingHandler.controller, trailers); + } catch {} + waitingHandler.done = true; + } + this.#pruneDoneWaitingHandlers(); + this.#onComplete?.(); + } + /** + * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller + * @param {Error} err + */ + onResponseError(controller, err) { + if (this.#completed) { + return; + } + this.#aborted = true; + this.#completed = true; + this.#primaryHandler.onResponseError?.(controller, err); + for (const waitingHandler of this.#waitingHandlers) { + this.#errorWaitingHandler(waitingHandler, err); + } + this.#waitingHandlers = []; + this.#onComplete?.(); + } + /** + * @param {DispatchHandler} handler + * @returns {WaitingHandler} + */ + #createWaitingHandler(handler2) { + const waitingHandler = { + handler: handler2, + controller: null, + bufferedChunks: [], + bufferedBytes: 0, + pendingTrailers: null, + done: false + }; + const state = { + aborted: false, + paused: false, + reason: null + }; + waitingHandler.controller = { + resume: () => { + if (state.aborted) { + return; + } + state.paused = false; + this.#flushWaitingHandler(waitingHandler); + if ( + this.#completed && + waitingHandler.pendingTrailers && + waitingHandler.bufferedChunks.length === 0 && + !state.paused && + !state.aborted + ) { + try { + waitingHandler.handler.onResponseEnd?.(waitingHandler.controller, waitingHandler.pendingTrailers); + } catch {} + waitingHandler.pendingTrailers = null; + waitingHandler.done = true; + } + this.#pruneDoneWaitingHandlers(); + }, + pause: () => { + if (!state.aborted) { + state.paused = true; + } + }, + get paused() { + return state.paused; + }, + get aborted() { + return state.aborted; + }, + get reason() { + return state.reason; + }, + abort: reason => { + state.aborted = true; + state.reason = reason ?? null; + waitingHandler.done = true; + waitingHandler.pendingTrailers = null; + waitingHandler.bufferedChunks = []; + waitingHandler.bufferedBytes = 0; + } + }; + return waitingHandler; + } + /** + * @param {WaitingHandler} waitingHandler + * @param {Buffer} chunk + */ + #bufferWaitingChunk(waitingHandler, chunk) { + if (waitingHandler.done || waitingHandler.controller.aborted) { + waitingHandler.done = true; + waitingHandler.bufferedChunks = []; + waitingHandler.bufferedBytes = 0; + return; + } + const bufferedChunk = Buffer.from(chunk); + waitingHandler.bufferedChunks.push(bufferedChunk); + waitingHandler.bufferedBytes += bufferedChunk.length; + if (waitingHandler.bufferedBytes > this.#maxBufferSize) { + const err = new RequestAbortedError( + `Deduplicated waiting handler exceeded maxBufferSize (${this.#maxBufferSize} bytes) while paused` + ); + this.#errorWaitingHandler(waitingHandler, err); + } + } + /** + * @param {WaitingHandler} waitingHandler + */ + #flushWaitingHandler(waitingHandler) { + const { handler: handler2, controller } = waitingHandler; + while ( + !waitingHandler.done && + !controller.aborted && + !controller.paused && + waitingHandler.bufferedChunks.length > 0 + ) { + const bufferedChunk = waitingHandler.bufferedChunks.shift(); + waitingHandler.bufferedBytes -= bufferedChunk.length; + try { + handler2.onResponseData?.(controller, bufferedChunk); + } catch {} + if (controller.aborted) { + waitingHandler.done = true; + waitingHandler.pendingTrailers = null; + waitingHandler.bufferedChunks = []; + waitingHandler.bufferedBytes = 0; + break; + } + } + } + /** + * @param {WaitingHandler} waitingHandler + * @param {Error} err + */ + #errorWaitingHandler(waitingHandler, err) { + if (waitingHandler.done) { + return; + } + waitingHandler.done = true; + waitingHandler.pendingTrailers = null; + waitingHandler.bufferedChunks = []; + waitingHandler.bufferedBytes = 0; + try { + waitingHandler.controller.abort(err); + waitingHandler.handler.onResponseError?.(waitingHandler.controller, err); + } catch {} + } + #pruneDoneWaitingHandlers() { + this.#waitingHandlers = this.#waitingHandlers.filter(waitingHandler => waitingHandler.done === false); + } + }; + module2.exports = DeduplicationHandler; + } +}); + +// node_modules/undici/lib/interceptor/deduplicate.js +var require_deduplicate = __commonJS({ + 'node_modules/undici/lib/interceptor/deduplicate.js'(exports2, module2) { + 'use strict'; + var diagnosticsChannel = require('node:diagnostics_channel'); + var util = require_util(); + var DeduplicationHandler = require_deduplication_handler(); + var { normalizeHeaders, makeCacheKey, makeDeduplicationKey } = require_cache(); + var pendingRequestsChannel = diagnosticsChannel.channel('undici:request:pending-requests'); + module2.exports = (opts = {}) => { + const { methods = ['GET'], skipHeaderNames = [], excludeHeaderNames = [], maxBufferSize = 5 * 1024 * 1024 } = opts; + if (typeof opts !== 'object' || opts === null) { + throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? 'null' : typeof opts}`); + } + if (!Array.isArray(methods)) { + throw new TypeError(`expected opts.methods to be an array, got ${typeof methods}`); + } + for (const method of methods) { + if (!util.safeHTTPMethods.includes(method)) { + throw new TypeError(`expected opts.methods to only contain safe HTTP methods, got ${method}`); + } + } + if (!Array.isArray(skipHeaderNames)) { + throw new TypeError(`expected opts.skipHeaderNames to be an array, got ${typeof skipHeaderNames}`); + } + if (!Array.isArray(excludeHeaderNames)) { + throw new TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof excludeHeaderNames}`); + } + if (!Number.isFinite(maxBufferSize) || maxBufferSize <= 0) { + throw new TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${maxBufferSize}`); + } + const skipHeaderNamesSet = new Set(skipHeaderNames.map(name => name.toLowerCase())); + const excludeHeaderNamesSet = new Set(excludeHeaderNames.map(name => name.toLowerCase())); + const pendingRequests = /* @__PURE__ */ new Map(); + return dispatch => { + return (opts2, handler2) => { + if (!opts2.origin || methods.includes(opts2.method) === false) { + return dispatch(opts2, handler2); + } + opts2 = { + ...opts2, + headers: normalizeHeaders(opts2) + }; + if (skipHeaderNamesSet.size > 0) { + for (const headerName of Object.keys(opts2.headers)) { + if (skipHeaderNamesSet.has(headerName.toLowerCase())) { + return dispatch(opts2, handler2); + } + } + } + const cacheKey = makeCacheKey(opts2); + const dedupeKey = makeDeduplicationKey(cacheKey, excludeHeaderNamesSet); + const pendingHandler = pendingRequests.get(dedupeKey); + if (pendingHandler) { + if (pendingHandler.addWaitingHandler(handler2)) { + return true; + } + return dispatch(opts2, handler2); + } + const deduplicationHandler = new DeduplicationHandler( + handler2, + () => { + pendingRequests.delete(dedupeKey); + if (pendingRequestsChannel.hasSubscribers) { + pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: 'removed' }); + } + }, + maxBufferSize + ); + pendingRequests.set(dedupeKey, deduplicationHandler); + if (pendingRequestsChannel.hasSubscribers) { + pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: 'added' }); + } + return dispatch(opts2, deduplicationHandler); + }; + }; + }; + } +}); + +// node_modules/undici/lib/cache/sqlite-cache-store.js +var require_sqlite_cache_store = __commonJS({ + 'node_modules/undici/lib/cache/sqlite-cache-store.js'(exports2, module2) { + 'use strict'; + var { Writable } = require('node:stream'); + var { assertCacheKey, assertCacheValue } = require_cache(); + var DatabaseSync; + var VERSION7 = 3; + var MAX_ENTRY_SIZE = 2 * 1e3 * 1e3 * 1e3; + module2.exports = class SqliteCacheStore { + #maxEntrySize = MAX_ENTRY_SIZE; + #maxCount = Infinity; + /** + * @type {import('node:sqlite').DatabaseSync} + */ + #db; + /** + * @type {import('node:sqlite').StatementSync} + */ + #getValuesQuery; + /** + * @type {import('node:sqlite').StatementSync} + */ + #updateValueQuery; + /** + * @type {import('node:sqlite').StatementSync} + */ + #insertValueQuery; + /** + * @type {import('node:sqlite').StatementSync} + */ + #deleteExpiredValuesQuery; + /** + * @type {import('node:sqlite').StatementSync} + */ + #deleteByUrlQuery; + /** + * @type {import('node:sqlite').StatementSync} + */ + #countEntriesQuery; + /** + * @type {import('node:sqlite').StatementSync | null} + */ + #deleteOldValuesQuery; + /** + * @param {import('../../types/cache-interceptor.d.ts').default.SqliteCacheStoreOpts | undefined} opts + */ + constructor(opts) { + if (opts) { + if (typeof opts !== 'object') { + throw new TypeError('SqliteCacheStore options must be an object'); + } + if (opts.maxEntrySize !== void 0) { + if (typeof opts.maxEntrySize !== 'number' || !Number.isInteger(opts.maxEntrySize) || opts.maxEntrySize < 0) { + throw new TypeError('SqliteCacheStore options.maxEntrySize must be a non-negative integer'); + } + if (opts.maxEntrySize > MAX_ENTRY_SIZE) { + throw new TypeError('SqliteCacheStore options.maxEntrySize must be less than 2gb'); + } + this.#maxEntrySize = opts.maxEntrySize; + } + if (opts.maxCount !== void 0) { + if (typeof opts.maxCount !== 'number' || !Number.isInteger(opts.maxCount) || opts.maxCount < 0) { + throw new TypeError('SqliteCacheStore options.maxCount must be a non-negative integer'); + } + this.#maxCount = opts.maxCount; + } + } + if (!DatabaseSync) { + DatabaseSync = require('node:sqlite').DatabaseSync; + } + this.#db = new DatabaseSync(opts?.location ?? ':memory:'); + this.#db.exec(` + PRAGMA journal_mode = WAL; + PRAGMA synchronous = NORMAL; + PRAGMA temp_store = memory; + PRAGMA optimize; + + CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION7} ( + -- Data specific to us + id INTEGER PRIMARY KEY AUTOINCREMENT, + url TEXT NOT NULL, + method TEXT NOT NULL, + + -- Data returned to the interceptor + body BUF NULL, + deleteAt INTEGER NOT NULL, + statusCode INTEGER NOT NULL, + statusMessage TEXT NOT NULL, + headers TEXT NULL, + cacheControlDirectives TEXT NULL, + etag TEXT NULL, + vary TEXT NULL, + cachedAt INTEGER NOT NULL, + staleAt INTEGER NOT NULL + ); + + CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_getValuesQuery ON cacheInterceptorV${VERSION7}(url, method, deleteAt); + CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION7}_deleteByUrlQuery ON cacheInterceptorV${VERSION7}(deleteAt); + `); + this.#getValuesQuery = this.#db.prepare(` + SELECT + id, + body, + deleteAt, + statusCode, + statusMessage, + headers, + etag, + cacheControlDirectives, + vary, + cachedAt, + staleAt + FROM cacheInterceptorV${VERSION7} + WHERE + url = ? + AND method = ? + ORDER BY + deleteAt ASC + `); + this.#updateValueQuery = this.#db.prepare(` + UPDATE cacheInterceptorV${VERSION7} SET + body = ?, + deleteAt = ?, + statusCode = ?, + statusMessage = ?, + headers = ?, + etag = ?, + cacheControlDirectives = ?, + vary = ?, + cachedAt = ?, + staleAt = ? + WHERE + id = ? + `); + this.#insertValueQuery = this.#db.prepare(` + INSERT INTO cacheInterceptorV${VERSION7} ( + url, + method, + body, + deleteAt, + statusCode, + statusMessage, + headers, + etag, + cacheControlDirectives, + vary, + cachedAt, + staleAt + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `); + this.#deleteByUrlQuery = this.#db.prepare(`DELETE FROM cacheInterceptorV${VERSION7} WHERE url = ?`); + this.#countEntriesQuery = this.#db.prepare(`SELECT COUNT(*) AS total FROM cacheInterceptorV${VERSION7}`); + this.#deleteExpiredValuesQuery = this.#db.prepare(`DELETE FROM cacheInterceptorV${VERSION7} WHERE deleteAt <= ?`); + this.#deleteOldValuesQuery = + this.#maxCount === Infinity + ? null + : this.#db.prepare(` + DELETE FROM cacheInterceptorV${VERSION7} + WHERE id IN ( + SELECT + id + FROM cacheInterceptorV${VERSION7} + ORDER BY cachedAt ASC + LIMIT ? + ) + `); + } + close() { + this.#db.close(); + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key + * @returns {(import('../../types/cache-interceptor.d.ts').default.GetResult & { body?: Buffer }) | undefined} + */ + get(key) { + assertCacheKey(key); + const value = this.#findValue(key); + return value + ? { + body: value.body ? Buffer.from(value.body.buffer, value.body.byteOffset, value.body.byteLength) : void 0, + statusCode: value.statusCode, + statusMessage: value.statusMessage, + headers: value.headers ? JSON.parse(value.headers) : void 0, + etag: value.etag ? value.etag : void 0, + vary: value.vary ? JSON.parse(value.vary) : void 0, + cacheControlDirectives: value.cacheControlDirectives ? JSON.parse(value.cacheControlDirectives) : void 0, + cachedAt: value.cachedAt, + staleAt: value.staleAt, + deleteAt: value.deleteAt + } + : void 0; + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key + * @param {import('../../types/cache-interceptor.d.ts').default.CacheValue & { body: null | Buffer | Array}} value + */ + set(key, value) { + assertCacheKey(key); + const url = this.#makeValueUrl(key); + const body = Array.isArray(value.body) ? Buffer.concat(value.body) : value.body; + const size = body?.byteLength; + if (size && size > this.#maxEntrySize) { + return; + } + const existingValue = this.#findValue(key, true); + if (existingValue) { + this.#updateValueQuery.run( + body, + value.deleteAt, + value.statusCode, + value.statusMessage, + value.headers ? JSON.stringify(value.headers) : null, + value.etag ? value.etag : null, + value.cacheControlDirectives ? JSON.stringify(value.cacheControlDirectives) : null, + value.vary ? JSON.stringify(value.vary) : null, + value.cachedAt, + value.staleAt, + existingValue.id + ); + } else { + this.#insertValueQuery.run( + url, + key.method, + body, + value.deleteAt, + value.statusCode, + value.statusMessage, + value.headers ? JSON.stringify(value.headers) : null, + value.etag ? value.etag : null, + value.cacheControlDirectives ? JSON.stringify(value.cacheControlDirectives) : null, + value.vary ? JSON.stringify(value.vary) : null, + value.cachedAt, + value.staleAt + ); + this.#prune(); + } + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key + * @param {import('../../types/cache-interceptor.d.ts').default.CacheValue} value + * @returns {Writable | undefined} + */ + createWriteStream(key, value) { + assertCacheKey(key); + assertCacheValue(value); + let size = 0; + const body = []; + const store = this; + return new Writable({ + decodeStrings: true, + write(chunk, encoding, callback) { + size += chunk.byteLength; + if (size <= store.#maxEntrySize) { + body.push(chunk); + } else { + this.destroy(); + } + callback(); + }, + final(callback) { + store.set(key, { ...value, body }); + callback(); + } + }); + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key + */ + delete(key) { + if (typeof key !== 'object') { + throw new TypeError(`expected key to be object, got ${typeof key}`); + } + this.#deleteByUrlQuery.run(this.#makeValueUrl(key)); + } + #prune() { + if (Number.isFinite(this.#maxCount) && this.size <= this.#maxCount) { + return 0; + } + { + const removed = this.#deleteExpiredValuesQuery.run(Date.now()).changes; + if (removed) { + return removed; + } + } + { + const removed = this.#deleteOldValuesQuery?.run(Math.max(Math.floor(this.#maxCount * 0.1), 1)).changes; + if (removed) { + return removed; + } + } + return 0; + } + /** + * Counts the number of rows in the cache + * @returns {Number} + */ + get size() { + const { total } = this.#countEntriesQuery.get(); + return total; + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key + * @returns {string} + */ + #makeValueUrl(key) { + return `${key.origin}/${key.path}`; + } + /** + * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key + * @param {boolean} [canBeExpired=false] + * @returns {SqliteStoreValue | undefined} + */ + #findValue(key, canBeExpired = false) { + const url = this.#makeValueUrl(key); + const { headers, method } = key; + const values = this.#getValuesQuery.all(url, method); + if (values.length === 0) { + return void 0; + } + const now = Date.now(); + for (const value of values) { + if (now >= value.deleteAt && !canBeExpired) { + continue; + } + let matches = true; + if (value.vary) { + const vary = JSON.parse(value.vary); + for (const header in vary) { + if (!headerValueEquals(headers[header], vary[header])) { + matches = false; + break; + } + } + } + if (matches) { + return value; + } + } + return void 0; + } + }; + function headerValueEquals(lhs, rhs) { + if (lhs == null && rhs == null) { + return true; + } + if ((lhs == null && rhs != null) || (lhs != null && rhs == null)) { + return false; + } + if (Array.isArray(lhs) && Array.isArray(rhs)) { + if (lhs.length !== rhs.length) { + return false; + } + return lhs.every((x, i) => x === rhs[i]); + } + return lhs === rhs; + } + } +}); + +// node_modules/undici/lib/web/fetch/headers.js +var require_headers = __commonJS({ + 'node_modules/undici/lib/web/fetch/headers.js'(exports2, module2) { + 'use strict'; + var { kConstruct } = require_symbols(); + var { kEnumerableProperty } = require_util(); + var { iteratorMixin, isValidHeaderName, isValidHeaderValue } = require_util2(); + var { webidl } = require_webidl(); + var assert = require('node:assert'); + var util = require('node:util'); + 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 headersListSortAndCombine(target) { + const headersList = getHeadersList(target); + if (!headersList) { + return []; + } + if (headersList.sortedMap) { + return headersList.sortedMap; + } + const headers = []; + const names = headersList.toSortedArray(); + const cookies = headersList.cookies; + if (cookies === null || cookies.length === 1) { + return (headersList.sortedMap = 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 (headersList.sortedMap = headers); + } + function compareHeaderName(a, b) { + return a[0] < b[0] ? -1 : 1; + } + var HeadersList = class _HeadersList { + /** @type {[string, string][]|null} */ + cookies = null; + sortedMap; + headersMap; + constructor(init) { + if (init instanceof _HeadersList) { + this.headersMap = new Map(init.headersMap); + this.sortedMap = init.sortedMap; + this.cookies = init.cookies === null ? null : [...init.cookies]; + } else { + this.headersMap = new Map(init); + this.sortedMap = null; + } + } + /** + * @see https://fetch.spec.whatwg.org/#header-list-contains + * @param {string} name + * @param {boolean} isLowerCase + */ + contains(name, isLowerCase) { + return this.headersMap.has(isLowerCase ? name : name.toLowerCase()); + } + clear() { + this.headersMap.clear(); + this.sortedMap = 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.sortedMap = null; + const lowercaseName = isLowerCase ? name : name.toLowerCase(); + const exists2 = this.headersMap.get(lowercaseName); + if (exists2) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', '; + this.headersMap.set(lowercaseName, { + name: exists2.name, + value: `${exists2.value}${delimiter}${value}` + }); + } else { + this.headersMap.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.sortedMap = null; + const lowercaseName = isLowerCase ? name : name.toLowerCase(); + if (lowercaseName === 'set-cookie') { + this.cookies = [value]; + } + this.headersMap.set(lowercaseName, { name, value }); + } + /** + * @see https://fetch.spec.whatwg.org/#concept-header-list-delete + * @param {string} name + * @param {boolean} isLowerCase + */ + delete(name, isLowerCase) { + this.sortedMap = null; + if (!isLowerCase) name = name.toLowerCase(); + if (name === 'set-cookie') { + this.cookies = null; + } + this.headersMap.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.headersMap.get(isLowerCase ? name : name.toLowerCase())?.value ?? null; + } + *[Symbol.iterator]() { + for (const { + 0: name, + 1: { value } + } of this.headersMap) { + yield [name, value]; + } + } + get entries() { + const headers = {}; + if (this.headersMap.size !== 0) { + for (const { name, value } of this.headersMap.values()) { + headers[name] = value; + } + } + return headers; + } + rawValues() { + return this.headersMap.values(); + } + get entriesList() { + const headers = []; + if (this.headersMap.size !== 0) { + for (const { + 0: lowerName, + 1: { name, value } + } of this.headersMap) { + 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.headersMap.size; + const array = new Array(size); + if (size <= 32) { + if (size === 0) { + return array; + } + const iterator2 = this.headersMap[Symbol.iterator](); + const firstValue = iterator2.next().value; + array[0] = [firstValue[0], firstValue[1].value]; + assert(firstValue[1].value !== null); + for (let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value; i < size; ++i) { + value = iterator2.next().value; + x = array[i] = [value[0], value[1].value]; + assert(x[1] !== null); + left = 0; + right = i; + while (left < right) { + pivot = left + ((right - left) >> 1); + if (array[pivot][0] <= x[0]) { + left = pivot + 1; + } else { + right = pivot; + } + } + if (i !== pivot) { + j = i; + while (j > left) { + array[j] = array[--j]; + } + array[left] = x; + } + } + if (!iterator2.next().done) { + throw new TypeError('Unreachable'); + } + return array; + } else { + let i = 0; + for (const { + 0: name, + 1: { value } + } of this.headersMap) { + array[i++] = [name, value]; + assert(value !== null); + } + return array.sort(compareHeaderName); + } + } + }; + var Headers2 = class _Headers { + #guard; + /** + * @type {HeadersList} + */ + #headersList; + /** + * @param {HeadersInit|Symbol} [init] + * @returns + */ + 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 constructor', '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 []; + } + [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; + } + /** + * @param {Headers} o + */ + static getHeadersList(o) { + return o.#headersList; + } + /** + * @param {Headers} target + * @param {HeadersList} list + */ + static setHeadersList(target, list) { + target.#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, headersListSortAndCombine, 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) === webidl.util.Types.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'] + }); + }; + module2.exports = { + fill, + // for test. + compareHeaderName, + Headers: Headers2, + HeadersList, + getHeadersGuard, + setHeadersGuard, + setHeadersList, + getHeadersList + }; + } +}); + +// node_modules/undici/lib/web/fetch/response.js +var require_response = __commonJS({ + 'node_modules/undici/lib/web/fetch/response.js'(exports2, module2) { + 'use strict'; + var { Headers: Headers2, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers(); + var { extractBody, cloneBody, mixinBody, streamRegistry, bodyUnusable } = require_body(); + var util = require_util(); + var nodeUtil = require('node:util'); + var { kEnumerableProperty } = util; + var { + isValidReasonPhrase, + isCancelled, + isAborted, + isErrorLike, + environmentSettingsObject: relevantRealm + } = require_util2(); + var { redirectStatusSet, nullBodyStatus } = require_constants3(); + var { webidl } = require_webidl(); + var { URLSerializer } = require_data_url(); + var { kConstruct } = require_symbols(); + var assert = require('node:assert'); + var { isomorphicEncode, serializeJavascriptValueToJSONString } = require_infra(); + var textEncoder = new TextEncoder('utf-8'); + var Response = class _Response { + /** @type {Headers} */ + #headers; + #state; + // 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 = void 0) { + 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.#state.status = status; + const value = isomorphicEncode(URLSerializer(parsedURL)); + responseObject.#state.headersList.append('location', value, true); + return responseObject; + } + // https://fetch.spec.whatwg.org/#dom-response + constructor(body = null, init = void 0) { + webidl.util.markAsUncloneable(this); + if (body === kConstruct) { + return; + } + if (body !== null) { + body = webidl.converters.BodyInit(body, 'Response', 'body'); + } + init = webidl.converters.ResponseInit(init); + this.#state = makeResponse({}); + this.#headers = new Headers2(kConstruct); + setHeadersGuard(this.#headers, 'response'); + setHeadersList(this.#headers, this.#state.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.#state.type; + } + // Returns response’s URL, if it has one; otherwise the empty string. + get url() { + webidl.brandCheck(this, _Response); + const urlList = this.#state.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.#state.urlList.length > 1; + } + // Returns response’s status. + get status() { + webidl.brandCheck(this, _Response); + return this.#state.status; + } + // Returns whether response’s status is an ok status. + get ok() { + webidl.brandCheck(this, _Response); + return this.#state.status >= 200 && this.#state.status <= 299; + } + // Returns response’s status message. + get statusText() { + webidl.brandCheck(this, _Response); + return this.#state.statusText; + } + // Returns response’s headers as Headers. + get headers() { + webidl.brandCheck(this, _Response); + return this.#headers; + } + get body() { + webidl.brandCheck(this, _Response); + return this.#state.body ? this.#state.body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Response); + return !!this.#state.body && util.isDisturbed(this.#state.body.stream); + } + // Returns a clone of response. + clone() { + webidl.brandCheck(this, _Response); + if (bodyUnusable(this.#state)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }); + } + const clonedResponse = cloneResponse(this.#state); + if (this.#state.urlList.length !== 0 && this.#state.body?.stream) { + streamRegistry.register(this, new WeakRef(this.#state.body.stream)); + } + return fromInnerResponse(clonedResponse, getHeadersGuard(this.#headers)); + } + [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)}`; + } + /** + * @param {Response} response + */ + static getResponseHeaders(response) { + return response.#headers; + } + /** + * @param {Response} response + * @param {Headers} newHeaders + */ + static setResponseHeaders(response, newHeaders) { + response.#headers = newHeaders; + } + /** + * @param {Response} response + */ + static getResponseState(response) { + return response.#state; + } + /** + * @param {Response} response + * @param {any} newState + */ + static setResponseState(response, newState) { + response.#state = newState; + } + }; + var { getResponseHeaders, setResponseHeaders, getResponseState, setResponseState } = Response; + Reflect.deleteProperty(Response, 'getResponseHeaders'); + Reflect.deleteProperty(Response, 'setResponseHeaders'); + Reflect.deleteProperty(Response, 'getResponseState'); + Reflect.deleteProperty(Response, 'setResponseState'); + mixinBody(Response, getResponseState); + 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(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) { + assert(!(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: [], + status: 0, + statusText: '', + body: null + }); + } else if (type === 'opaqueredirect') { + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }); + } else { + assert(false); + } + } + function makeAppropriateNetworkError(fetchParams, err = null) { + assert(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) { + getResponseState(response).status = init.status; + } + if ('statusText' in init && init.statusText != null) { + getResponseState(response).statusText = init.statusText; + } + if ('headers' in init && init.headers != null) { + fill(getResponseHeaders(response), init.headers); + } + if (body) { + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: `Invalid response status code ${response.status}` + }); + } + getResponseState(response).body = body.body; + if (body.type != null && !getResponseState(response).headersList.contains('content-type', true)) { + getResponseState(response).headersList.append('content-type', body.type, true); + } + } + } + function fromInnerResponse(innerResponse, guard) { + const response = new Response(kConstruct); + setResponseState(response, innerResponse); + const headers = new Headers2(kConstruct); + setResponseHeaders(response, headers); + setHeadersList(headers, innerResponse.headersList); + setHeadersGuard(headers, guard); + if (innerResponse.urlList.length !== 0 && innerResponse.body?.stream) { + streamRegistry.register(response, new WeakRef(innerResponse.body.stream)); + } + return response; + } + webidl.converters.XMLHttpRequestBodyInit = function (V, prefix, name) { + if (typeof V === 'string') { + return webidl.converters.USVString(V, prefix, name); + } + if (webidl.is.Blob(V)) { + return V; + } + if (webidl.is.BufferSource(V)) { + return V; + } + if (webidl.is.FormData(V)) { + return V; + } + if (webidl.is.URLSearchParams(V)) { + return V; + } + return webidl.converters.DOMString(V, prefix, name); + }; + webidl.converters.BodyInit = function (V, prefix, argument) { + if (webidl.is.ReadableStream(V)) { + return V; + } + 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 + } + ]); + webidl.is.Response = webidl.util.MakeTypeAssertion(Response); + module2.exports = { + isNetworkError, + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse, + fromInnerResponse, + getResponseState + }; + } +}); + +// node_modules/undici/lib/web/fetch/request.js +var require_request2 = __commonJS({ + 'node_modules/undici/lib/web/fetch/request.js'(exports2, module2) { + 'use strict'; + var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body(); + var { + Headers: Headers2, + fill: fillHeaders, + HeadersList, + setHeadersGuard, + getHeadersGuard, + setHeadersList, + getHeadersList + } = require_headers(); + 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 { webidl } = require_webidl(); + var { URLSerializer } = require_data_url(); + var { kConstruct } = require_symbols(); + var assert = require('node:assert'); + var { getMaxListeners, setMaxListeners, defaultMaxListeners } = require('node:events'); + var kAbortController = /* @__PURE__ */ Symbol('abortController'); + var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener('abort', abort); + }); + var dependentControllerMap = /* @__PURE__ */ new WeakMap(); + var abortSignalHasEventHandlerLeakWarning; + try { + abortSignalHasEventHandlerLeakWarning = getMaxListeners(new AbortController().signal) > 0; + } catch { + abortSignalHasEventHandlerLeakWarning = false; + } + 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 { + /** @type {AbortSignal} */ + #signal; + /** @type {import('../../dispatcher/dispatcher')} */ + #dispatcher; + /** @type {Headers} */ + #headers; + #state; + /** + * Removes the `abort` listener that makes this request's signal follow the + * passed signal. `null` when no such listener was registered. + * @type {(() => void) | null} + */ + #abortCleanup = null; + // https://fetch.spec.whatwg.org/#dom-request + constructor(input, init = void 0) { + webidl.util.markAsUncloneable(this); + if (input === kConstruct) { + return; + } + const prefix = 'Request constructor'; + webidl.argumentLengthCheck(arguments, 1, prefix); + input = webidl.converters.RequestInfo(input); + init = webidl.converters.RequestInit(init); + let request2 = null; + let fallbackMode = null; + const baseUrl2 = environmentSettingsObject.settingsObject.baseUrl; + let signal = null; + if (typeof input === 'string') { + this.#dispatcher = 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 { + assert(webidl.is.Request(input)); + request2 = input.#state; + signal = input.#signal; + this.#dispatcher = init.dispatcher || input.#dispatcher; + } + const origin = environmentSettingsObject.settingsObject.origin; + let window = 'client'; + if (request2.window?.constructor?.name === 'EnvironmentSettingsObject' && sameOrigin(request2.window, origin)) { + window = request2.window; + } + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`); + } + if ('window' in init) { + window = '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, + // 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.#state = request2; + const ac = new AbortController(); + this.#signal = ac.signal; + if (signal != null) { + if (signal.aborted) { + ac.abort(signal.reason); + } else { + this[kAbortController] = ac; + const acRef = new WeakRef(ac); + const abort = buildAbort(acRef); + if (abortSignalHasEventHandlerLeakWarning && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(1500, signal); + } + const removeAbortListener = util.addAbortListener(signal, abort); + requestFinalizer.register(ac, { signal, abort }, abort); + this.#abortCleanup = () => { + requestFinalizer.unregister(abort); + removeAbortListener(); + this.#abortCleanup = null; + }; + } + } + this.#headers = new Headers2(kConstruct); + setHeadersList(this.#headers, request2.headersList); + setHeadersGuard(this.#headers, 'request'); + if (mode === 'no-cors') { + if (!corsSafeListedMethodsSet.has(request2.method)) { + throw new TypeError(`'${request2.method} is unsupported in no-cors mode.`); + } + setHeadersGuard(this.#headers, 'request-no-cors'); + } + if (initHasKey) { + const headersList = getHeadersList(this.#headers); + 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.#headers, headers); + } + } + const inputBody = webidl.is.Request(input) ? input.#state.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.#headers).contains('content-type', true)) { + this.#headers.append('content-type', contentType, true); + } + } + 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.#state)) { + 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.#state.body = finalBody; + } + // Returns request’s HTTP method, which is "GET" by default. + get method() { + webidl.brandCheck(this, _Request); + return this.#state.method; + } + // Returns the URL of request as a string. + get url() { + webidl.brandCheck(this, _Request); + return URLSerializer(this.#state.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.#headers; + } + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination() { + webidl.brandCheck(this, _Request); + return this.#state.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.#state.referrer === 'no-referrer') { + return ''; + } + if (this.#state.referrer === 'client') { + return 'about:client'; + } + return this.#state.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.#state.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.#state.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() { + webidl.brandCheck(this, _Request); + return this.#state.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.#state.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.#state.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.#state.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.#state.keepalive; + } + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation() { + webidl.brandCheck(this, _Request); + return this.#state.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.#state.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.#signal; + } + get body() { + webidl.brandCheck(this, _Request); + return this.#state.body ? this.#state.body.stream : null; + } + get bodyUsed() { + webidl.brandCheck(this, _Request); + return !!this.#state.body && util.isDisturbed(this.#state.body.stream); + } + get duplex() { + webidl.brandCheck(this, _Request); + return 'half'; + } + // Returns a clone of request. + clone() { + webidl.brandCheck(this, _Request); + if (bodyUnusable(this.#state)) { + throw new TypeError('unusable'); + } + const clonedRequest = cloneRequest(this.#state); + 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, this.#dispatcher, ac.signal, getHeadersGuard(this.#headers)); + } + [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)}`; + } + /** + * @param {Request} request + * @param {AbortSignal} newSignal + */ + static setRequestSignal(request2, newSignal) { + request2.#signal = newSignal; + return request2; + } + /** + * @param {Request} request + */ + static getRequestDispatcher(request2) { + return request2.#dispatcher; + } + /** + * @param {Request} request + * @param {import('../../dispatcher/dispatcher')} newDispatcher + */ + static setRequestDispatcher(request2, newDispatcher) { + request2.#dispatcher = newDispatcher; + } + /** + * @param {Request} request + * @param {Headers} newHeaders + */ + static setRequestHeaders(request2, newHeaders) { + request2.#headers = newHeaders; + } + /** + * @param {Request} request + */ + static getRequestState(request2) { + return request2.#state; + } + /** + * @param {Request} request + * @param {any} newState + */ + static setRequestState(request2, newState) { + request2.#state = newState; + } + /** + * Removes the `abort` listener that makes this request's signal follow the + * signal passed to its constructor, if any. Idempotent. + * @param {Request} request + */ + static removeRequestAbortListener(request2) { + request2.#abortCleanup?.(); + } + }; + var { + setRequestSignal, + getRequestDispatcher, + setRequestDispatcher, + setRequestHeaders, + getRequestState, + setRequestState, + removeRequestAbortListener + } = Request; + Reflect.deleteProperty(Request, 'setRequestSignal'); + Reflect.deleteProperty(Request, 'getRequestDispatcher'); + Reflect.deleteProperty(Request, 'setRequestDispatcher'); + Reflect.deleteProperty(Request, 'setRequestHeaders'); + Reflect.deleteProperty(Request, 'getRequestState'); + Reflect.deleteProperty(Request, 'setRequestState'); + Reflect.deleteProperty(Request, 'removeRequestAbortListener'); + mixinBody(Request, getRequestState); + 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, + // TODO: is this credentials mode? https://fetch.spec.whatwg.org/#concept-request-credentials-mode + 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, + useURLCredentials: init.useURLCredentials ?? void 0, + traversableForUserPrompts: init.traversableForUserPrompts ?? 'client', + 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(request2.body); + } + return newRequest; + } + function fromInnerRequest(innerRequest, dispatcher, signal, guard) { + const request2 = new Request(kConstruct); + setRequestState(request2, innerRequest); + setRequestDispatcher(request2, dispatcher); + setRequestSignal(request2, signal); + const headers = new Headers2(kConstruct); + setRequestHeaders(request2, headers); + setHeadersList(headers, innerRequest.headersList); + setHeadersGuard(headers, 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.is.Request = webidl.util.MakeTypeAssertion(Request); + webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V); + } + if (webidl.is.Request(V)) { + return V; + } + return webidl.converters.USVString(V); + }; + 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')) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + }, + { + key: 'dispatcher', + // undici specific option + converter: webidl.converters.any + }, + { + key: 'priority', + converter: webidl.converters.DOMString, + allowedValues: ['high', 'low', 'auto'], + defaultValue: () => 'auto' + } + ]); + module2.exports = { + Request, + makeRequest, + fromInnerRequest, + cloneRequest, + getRequestDispatcher, + getRequestState, + removeRequestAbortListener + }; + } +}); + +// node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +var require_subresource_integrity = __commonJS({ + 'node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { runtimeFeatures } = require_runtime_features(); + var validSRIHashAlgorithmTokenSet = /* @__PURE__ */ new Map([ + ['sha256', 0], + ['sha384', 1], + ['sha512', 2] + ]); + var crypto2; + if (runtimeFeatures.has('crypto')) { + crypto2 = require('node:crypto'); + const cryptoHashes = crypto2.getHashes(); + if (cryptoHashes.length === 0) { + validSRIHashAlgorithmTokenSet.clear(); + } + for (const algorithm of validSRIHashAlgorithmTokenSet.keys()) { + if (cryptoHashes.includes(algorithm) === false) { + validSRIHashAlgorithmTokenSet.delete(algorithm); + } + } + } else { + validSRIHashAlgorithmTokenSet.clear(); + } + var getSRIHashAlgorithmIndex = + /** @type {GetSRIHashAlgorithmIndex} */ + Map.prototype.get.bind(validSRIHashAlgorithmTokenSet); + var isValidSRIHashAlgorithm = + /** @type {IsValidSRIHashAlgorithm} */ + Map.prototype.has.bind(validSRIHashAlgorithmTokenSet); + var bytesMatch = + runtimeFeatures.has('crypto') === false || validSRIHashAlgorithmTokenSet.size === 0 + ? () => true + : (bytes, metadataList) => { + const parsedMetadata = parseMetadata(metadataList); + if (parsedMetadata.length === 0) { + return true; + } + const metadata = getStrongestMetadata(parsedMetadata); + for (const item of metadata) { + const algorithm = item.alg; + const expectedValue = item.val; + const actualValue = applyAlgorithmToBytes(algorithm, bytes); + if (caseSensitiveMatch(actualValue, expectedValue)) { + return true; + } + } + return false; + }; + function getStrongestMetadata(metadataList) { + const result = []; + let strongest = null; + for (const item of metadataList) { + assert(isValidSRIHashAlgorithm(item.alg), 'Invalid SRI hash algorithm token'); + if (result.length === 0) { + result.push(item); + strongest = item; + continue; + } + const currentAlgorithm = + /** @type {Metadata} */ + strongest.alg; + const currentAlgorithmIndex = getSRIHashAlgorithmIndex(currentAlgorithm); + const newAlgorithm = item.alg; + const newAlgorithmIndex = getSRIHashAlgorithmIndex(newAlgorithm); + if (newAlgorithmIndex < currentAlgorithmIndex) { + continue; + } else if (newAlgorithmIndex > currentAlgorithmIndex) { + strongest = item; + result[0] = item; + result.length = 1; + } else { + result.push(item); + } + } + return result; + } + function parseMetadata(metadata) { + const result = []; + for (const item of metadata.split(' ')) { + const expressionAndOptions = item.split('?', 1); + const algorithmExpression = expressionAndOptions[0]; + let base64Value = ''; + const algorithmAndValue = [algorithmExpression.slice(0, 6), algorithmExpression.slice(7)]; + const algorithm = algorithmAndValue[0]; + if (!isValidSRIHashAlgorithm(algorithm)) { + continue; + } + if (algorithmAndValue[1]) { + base64Value = algorithmAndValue[1]; + } + const metadata2 = { + alg: algorithm, + val: base64Value + }; + result.push(metadata2); + } + return result; + } + var applyAlgorithmToBytes = (algorithm, bytes) => { + return crypto2.hash(algorithm, bytes, 'base64'); + }; + function caseSensitiveMatch(actualValue, expectedValue) { + let actualValueLength = actualValue.length; + if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === '=') { + actualValueLength -= 1; + } + if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === '=') { + actualValueLength -= 1; + } + let expectedValueLength = expectedValue.length; + if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === '=') { + expectedValueLength -= 1; + } + if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === '=') { + expectedValueLength -= 1; + } + if (actualValueLength !== expectedValueLength) { + return false; + } + for (let i = 0; i < actualValueLength; ++i) { + if ( + actualValue[i] === expectedValue[i] || + (actualValue[i] === '+' && expectedValue[i] === '-') || + (actualValue[i] === '/' && expectedValue[i] === '_') + ) { + continue; + } + return false; + } + return true; + } + module2.exports = { + applyAlgorithmToBytes, + bytesMatch, + caseSensitiveMatch, + isValidSRIHashAlgorithm, + getStrongestMetadata, + parseMetadata + }; + } +}); + +// node_modules/undici/lib/web/fetch/index.js +var require_fetch = __commonJS({ + 'node_modules/undici/lib/web/fetch/index.js'(exports2, module2) { + 'use strict'; + var { + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse, + fromInnerResponse, + getResponseState + } = require_response(); + var { HeadersList } = require_headers(); + var { Request, cloneRequest, getRequestDispatcher, getRequestState, removeRequestAbortListener } = require_request2(); + var zlib = require('node:zlib'); + var { + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme, + clampAndCoarsenConnectionTimingInfo, + simpleRangeHeaderValue, + buildContentRange, + createInflate, + extractMimeType, + hasAuthenticationEntry, + includesCredentials, + isTraversableNavigable + } = require_util2(); + var assert = 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, isErrored, isReadable } = require('node:stream'); + var { addAbortListener, 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 { bytesMatch } = require_subresource_integrity(); + var { isomorphicEncode } = require_infra(); + var GET_OR_HEAD = ['GET', 'HEAD']; + var defaultUserAgent = + typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined' ? 'node' : 'undici'; + var resolveObjectURL; + function appendHeadersListFromResponseHeaders(headersList, headers, rawHeaders) { + if (Array.isArray(rawHeaders)) { + for (let i = 0; i < rawHeaders.length; i += 2) { + const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i]); + const value = rawHeaders[i + 1]; + if (Array.isArray(value) && !Buffer.isBuffer(value)) { + for (const val of value) { + headersList.append(nameStr, val.toString('latin1'), true); + } + } else { + headersList.append(nameStr, value.toString('latin1'), true); + } + } + return; + } + for (const [name, value] of Object.entries(headers ?? {})) { + if (Array.isArray(value)) { + for (const entry of value) { + headersList.append(name, `${entry}`, true); + } + } else { + headersList.append(name, `${value}`, true); + } + } + } + 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 fetch2(input, init = void 0) { + webidl.argumentLengthCheck(arguments, 1, 'globalThis.fetch'); + let p = Promise.withResolvers(); + let requestObject; + try { + requestObject = new Request(input, init); + } catch (e) { + p.reject(e); + return p.promise; + } + const request2 = getRequestState(requestObject); + if (requestObject.signal.aborted) { + abortFetch(p, request2, null, requestObject.signal.reason, null); + 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; + const removeAbortListener = addAbortListener(requestObject.signal, () => { + locallyAborted = true; + assert(controller != null); + controller.abort(requestObject.signal.reason); + const realResponse = responseObject?.deref(); + abortFetch(p, request2, realResponse, requestObject.signal.reason, controller.controller); + }); + const cleanupAbortListeners = () => { + removeAbortListener(); + removeRequestAbortListener(requestObject); + }; + const processResponse = response => { + if (locallyAborted) { + return; + } + if (response.aborted) { + abortFetch(p, request2, responseObject, controller.serializedAbortReason, controller.controller); + cleanupAbortListeners(); + return; + } + if (response.type === 'error') { + p.reject(new TypeError('fetch failed', { cause: response.error })); + cleanupAbortListeners(); + return; + } + responseObject = new WeakRef(fromInnerResponse(response, 'immutable')); + p.resolve(responseObject.deref()); + p = null; + }; + controller = fetching({ + request: request2, + processResponseEndOfBody: response => { + handleFetchDone(response); + cleanupAbortListeners(); + }, + processResponse, + dispatcher: getRequestDispatcher(requestObject), + // undici + // Keep requestObject alive to prevent its AbortController from being GC'd + // See https://github.com/nodejs/undici/issues/4627 + requestObject + }); + 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, + '', + // bodyType + response.status + ); + } + var markResourceTiming = performance.markResourceTiming; + function abortFetch(p, request2, responseObject, error2, controller) { + if (p) { + p.reject(error2); + } + if (request2.body?.stream != 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 = getResponseState(responseObject); + if (response.body?.stream != null && isReadable(response.body.stream)) { + controller.error(error2); + } + } + function fetching({ + request: request2, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher = getGlobalDispatcher(), + // undici + requestObject = null + // Keep alive to prevent AbortController GC, see #4627 + }) { + assert(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, + // Keep requestObject alive to prevent its AbortController from being GC'd + requestObject + }; + assert(!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, false); + return fetchParams.controller; + } + async function mainFetch(fetchParams, recursive) { + try { + 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) { + 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'; + response = await schemeFetch(fetchParams); + } else if (request2.mode === 'same-origin') { + response = makeNetworkError('request mode cannot be "same-origin"'); + } else if (request2.mode === 'no-cors') { + if (request2.redirect !== 'follow') { + response = makeNetworkError('redirect mode cannot be "follow" for "no-cors" request'); + } else { + request2.responseTainting = 'opaque'; + response = await schemeFetch(fetchParams); + } + } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request2))) { + response = makeNetworkError('URL scheme must be a HTTP(S) scheme'); + } else { + request2.responseTainting = 'cors'; + response = 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 { + assert(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); + }; + fullyReadBody(response.body, processBody, processBodyError); + } else { + fetchFinale(fetchParams, response); + } + } catch (err) { + fetchParams.controller.terminate(err); + } + } + 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' || !webidl.is.Blob(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 + 1, 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 (!urlIsHttpHttpsScheme(fetchParams.request.url)) { + 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 !== 'navigate' || !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 { + assert(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) { + assert(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.contains('content-length', true)) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue, true); + } + if (contentLength != null && httpRequest.keepalive) { + } + if (webidl.is.URL(httpRequest.referrer)) { + 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, true); + } + 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 (!httpRequest.headersList.contains('authorization', true)) { + let authorizationValue = null; + if ( + hasAuthenticationEntry(httpRequest) && + (httpRequest.useURLCredentials === void 0 || !includesCredentials(requestCurrentURL(httpRequest))) + ) { + } else if (includesCredentials(requestCurrentURL(httpRequest)) && isAuthenticationFetch) { + const { username, password } = requestCurrentURL(httpRequest); + authorizationValue = `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`; + } + if (authorizationValue !== null) { + httpRequest.headersList.append('Authorization', authorizationValue, false); + } + } + } + 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 === 401 && + httpRequest.responseTainting !== 'cors' && + includeCredentials && + (request2.useURLCredentials !== void 0 || isTraversableNavigable(request2.traversableForUserPrompts)) + ) { + if (request2.body != null) { + if (request2.body.source == null) { + return response; + } + request2.body = safelyExtractBody(request2.body.source)[0]; + } + if (request2.useURLCredentials === void 0 || isAuthenticationFetch) { + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams); + } + return response; + } + fetchParams.controller.connection.destroy(); + response = await httpNetworkOrCacheFetch(fetchParams, true); + } + 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) { + assert(!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 = () => { + return fetchParams.controller.resume(); + }; + const cancelAlgorithm = reason => { + if (!isCancelled(fetchParams)) { + fetchParams.controller.abort(reason); + } + }; + const stream = new ReadableStream({ + start(controller) { + fetchParams.controller.controller = controller; + }, + pull: pullAlgorithm, + cancel: cancelAlgorithm, + type: 'bytes' + }); + response.body = { stream, source: null, length: null }; + if (!fetchParams.controller.resume) { + 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; + const path2 = url.pathname + url.search; + const hasTrailingQuestionMark = url.search.length === 0 && url.href[url.href.length - url.hash.length - 1] === '?'; + return dispatchWithProtocolPreference(body); + function dispatchWithProtocolPreference(body2, allowH2) { + return new Promise((resolve2, reject) => + agent.dispatch( + { + path: hasTrailingQuestionMark ? `${path2}?` : path2, + origin: url.origin, + method: request2.method, + body: agent.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body2, + // Preserve the serialized fetch body for MockAgent net-connect fallthroughs. + __mockAgentBodyForDispatch: body2, + headers: request2.headersList.entries, + maxRedirections: 0, + upgrade: request2.mode === 'websocket' ? 'websocket' : void 0, + ...(allowH2 === false ? { allowH2 } : null) + }, + { + body: null, + abort: null, + onRequestStart(controller) { + const { connection } = fetchParams.controller; + timingInfo.finalConnectionTimingInfo = clampAndCoarsenConnectionTimingInfo( + void 0, + timingInfo.postRedirectStartTime, + fetchParams.crossOriginIsolatedCapability + ); + const abort = reason => controller.abort(reason); + 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 + ); + }, + onResponseStart(controller, status, headers, statusText) { + if (status < 200) { + return; + } + const rawHeaders = controller?.rawHeaders ?? []; + const headersList = new HeadersList(); + appendHeadersListFromResponseHeaders(headersList, headers, rawHeaders); + const location = headersList.get('location', true); + this.body = new Readable({ read: () => controller.resume() }); + const willFollow = location && request2.redirect === 'follow' && redirectStatusSet.has(status); + const decoders = []; + 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; + } + 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 if (coding === 'zstd') { + decoders.push( + zlib.createZstdDecompress({ + flush: zlib.constants.ZSTD_e_continue, + finishFlush: zlib.constants.ZSTD_e_end + }) + ); + } else { + decoders.length = 0; + break; + } + } + } + const onError = err => this.onResponseError(controller, err); + resolve2({ + status, + statusText, + headersList, + body: decoders.length + ? pipeline(this.body, ...decoders, err => { + if (err) { + this.onResponseError(controller, err); + } + }).on('error', onError) + : this.body.on('error', onError) + }); + }, + onResponseData(controller, chunk) { + if (fetchParams.controller.dump) { + return; + } + const bytes = chunk; + timingInfo.encodedBodySize += bytes.byteLength; + if (this.body.push(bytes) === false) { + controller.pause(); + } + }, + onResponseEnd() { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + fetchParams.controller.ended = true; + this.body?.push(null); + }, + onResponseError(_controller, error2) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort); + } + if ( + request2.mode === 'websocket' && + allowH2 !== false && + error2?.code === 'UND_ERR_INFO' && + error2?.message === 'HTTP/2: Extended CONNECT protocol not supported by server' + ) { + resolve2(dispatchWithProtocolPreference(body2, false)); + return; + } + this.body?.destroy(error2); + fetchParams.controller.terminate(error2); + reject(error2); + }, + onRequestUpgrade(controller, status, headers, socket) { + if ((socket.session != null && status !== 200) || (socket.session == null && status !== 101)) { + return false; + } + const rawHeaders = controller?.rawHeaders ?? []; + const headersList = new HeadersList(); + appendHeadersListFromResponseHeaders(headersList, headers, rawHeaders); + resolve2({ + status, + statusText: STATUS_CODES[status], + headersList, + socket + }); + return true; + } + } + ) + ); + } + } + } + module2.exports = { + fetch: fetch2, + Fetch, + fetching, + finalizeAndReportTiming + }; + } +}); + +// node_modules/undici/lib/web/cache/util.js +var require_util3 = __commonJS({ + 'node_modules/undici/lib/web/cache/util.js'(exports2, module2) { + 'use strict'; + var assert = 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) { + assert(header !== null); + const values = []; + for (let value of header.split(',')) { + value = value.trim(); + if (isValidHeaderName(value)) { + values.push(value); + } + } + return values; + } + module2.exports = { + urlEquals, + getFieldValues + }; + } +}); + +// node_modules/undici/lib/web/cache/cache.js +var require_cache3 = __commonJS({ + 'node_modules/undici/lib/web/cache/cache.js'(exports2, module2) { + 'use strict'; + var assert = require('node:assert'); + var { kConstruct } = require_symbols(); + var { urlEquals, getFieldValues } = require_util3(); + var { kEnumerableProperty, isDisturbed } = require_util(); + var { webidl } = require_webidl(); + var { cloneResponse, fromInnerResponse, getResponseState } = require_response(); + var { Request, fromInnerRequest, getRequestState } = require_request2(); + var { fetching } = require_fetch(); + var { urlIsHttpHttpsScheme, readAllBytes } = require_util2(); + 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); + 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); + 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); + 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 = getRequestState(request2); + 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 = getRequestState(new Request(request2)); + 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 = Promise.withResolvers(); + 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 = Promise.withResolvers(); + 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); + response = webidl.converters.Response(response, prefix, 'response'); + let innerRequest = null; + if (webidl.is.Request(request2)) { + innerRequest = getRequestState(request2); + } else { + innerRequest = getRequestState(new Request(request2)); + } + 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 = getResponseState(response); + 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 = Promise.withResolvers(); + if (innerResponse.body != null) { + const stream = innerResponse.body.stream; + const reader = stream.getReader(); + readAllBytes(reader, 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 = Promise.withResolvers(); + 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); + options = webidl.converters.CacheQueryOptions(options, prefix, 'options'); + let r = null; + if (webidl.is.Request(request2)) { + r = getRequestState(request2); + if (r.method !== 'GET' && !options.ignoreMethod) { + return false; + } + } else { + assert(typeof request2 === 'string'); + r = getRequestState(new Request(request2)); + } + const operations = []; + const operation = { + type: 'delete', + request: r, + options + }; + operations.push(operation); + const cacheJobPromise = Promise.withResolvers(); + 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); + options = webidl.converters.CacheQueryOptions(options, prefix, 'options'); + let r = null; + if (request2 !== void 0) { + if (webidl.is.Request(request2)) { + r = getRequestState(request2); + if (r.method !== 'GET' && !options.ignoreMethod) { + return []; + } + } else if (typeof request2 === 'string') { + r = getRequestState(new Request(request2)); + } + } + const promise = Promise.withResolvers(); + 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, void 0, 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); + assert(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); + assert(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 (webidl.is.Request(request2)) { + r = getRequestState(request2); + if (r.method !== 'GET' && !options.ignoreMethod) { + return []; + } + } else if (typeof request2 === 'string') { + r = getRequestState(new Request(request2)); + } + } + 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(cloneResponse(response), 'immutable'); + responseList.push(responseObject); + 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(webidl.is.Response, 'Response'); + webidl.converters['sequence'] = webidl.sequenceConverter(webidl.converters.RequestInfo); + module2.exports = { + Cache + }; + } +}); + +// node_modules/undici/lib/web/cache/cachestorage.js +var require_cachestorage = __commonJS({ + 'node_modules/undici/lib/web/cache/cachestorage.js'(exports2, module2) { + 'use strict'; + var { Cache } = require_cache3(); + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var { kConstruct } = require_symbols(); + 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 + }); + module2.exports = { + CacheStorage + }; + } +}); + +// node_modules/undici/lib/web/cookies/constants.js +var require_constants4 = __commonJS({ + 'node_modules/undici/lib/web/cookies/constants.js'(exports2, module2) { + 'use strict'; + var maxAttributeValueSize = 1024; + var maxNameValuePairSize = 4096; + module2.exports = { + maxAttributeValueSize, + maxNameValuePairSize + }; + } +}); + +// node_modules/undici/lib/web/cookies/util.js +var require_util4 = __commonJS({ + 'node_modules/undici/lib/web/cookies/util.js'(exports2, module2) { + '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(path2) { + for (let i = 0; i < path2.length; ++i) { + const code = path2.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('; '); + } + module2.exports = { + isCTLExcludingHtab, + validateCookieName, + validateCookiePath, + validateCookieValue, + toIMFDate, + stringify + }; + } +}); + +// node_modules/undici/lib/web/cookies/parse.js +var require_parse = __commonJS({ + 'node_modules/undici/lib/web/cookies/parse.js'(exports2, module2) { + 'use strict'; + var { collectASequenceOfCodePointsFast } = require_infra(); + var { maxNameValuePairSize, maxAttributeValueSize } = require_constants4(); + var { isCTLExcludingHtab } = require_util4(); + var assert = 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; + } + assert(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') { + const attributeValueLowercase = attributeValue.toLowerCase(); + if (attributeValueLowercase === 'none') { + cookieAttributeList.sameSite = 'None'; + } else if (attributeValueLowercase === 'strict') { + cookieAttributeList.sameSite = 'Strict'; + } else if (attributeValueLowercase === 'lax') { + cookieAttributeList.sameSite = 'Lax'; + } + } else { + cookieAttributeList.unparsed ??= []; + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); + } + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); + } + module2.exports = { + parseSetCookie, + parseUnparsedAttributes + }; + } +}); + +// node_modules/undici/lib/web/cookies/index.js +var require_cookies = __commonJS({ + 'node_modules/undici/lib/web/cookies/index.js'(exports2, module2) { + 'use strict'; + var { parseSetCookie } = require_parse(); + var { stringify } = require_util4(); + var { webidl } = require_webidl(); + var { Headers: Headers2 } = require_headers(); + var brandChecks = webidl.brandCheckMultiple([Headers2, globalThis.Headers].filter(Boolean)); + function getCookies(headers) { + webidl.argumentLengthCheck(arguments, 1, 'getCookies'); + brandChecks(headers); + 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) { + brandChecks(headers); + 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'); + brandChecks(headers); + const cookies = headers.getSetCookie(); + if (!cookies) { + return []; + } + return cookies.map(pair => parseSetCookie(pair)); + } + function parseCookie(cookie) { + cookie = webidl.converters.DOMString(cookie); + return parseSetCookie(cookie); + } + function setCookie(headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, 'setCookie'); + brandChecks(headers); + cookie = webidl.converters.Cookie(cookie); + const str = stringify(cookie); + if (str) { + headers.append('set-cookie', str, true); + } + } + 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: () => [] + } + ]); + module2.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie, + parseCookie + }; + } +}); + +// node_modules/undici/lib/web/websocket/events.js +var require_events = __commonJS({ + 'node_modules/undici/lib/web/websocket/events.js'(exports2, module2) { + 'use strict'; + var { webidl } = require_webidl(); + var { kEnumerableProperty } = require_util(); + var { kConstruct } = require_symbols(); + 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(webidl.is.MessagePort, '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: () => [] + } + ]); + 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 + } + ]); + module2.exports = { + MessageEvent, + CloseEvent, + ErrorEvent, + createFastMessageEvent + }; + } +}); + +// node_modules/undici/lib/web/websocket/constants.js +var require_constants5 = __commonJS({ + 'node_modules/undici/lib/web/websocket/constants.js'(exports2, module2) { + '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 = { + SENT: 1, + RECEIVED: 2 + }; + var opcodes = { + CONTINUATION: 0, + TEXT: 1, + BINARY: 2, + CLOSE: 8, + PING: 9, + PONG: 10 + }; + var maxUnsigned16Bit = 65535; + var parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 + }; + var emptyBuffer = Buffer.allocUnsafe(0); + var sendHints = { + text: 1, + typedArray: 2, + arrayBuffer: 3, + blob: 4 + }; + module2.exports = { + uid, + sentCloseFrameState, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer, + sendHints + }; + } +}); + +// node_modules/undici/lib/web/websocket/util.js +var require_util5 = __commonJS({ + 'node_modules/undici/lib/web/websocket/util.js'(exports2, module2) { + 'use strict'; + var { states, opcodes } = require_constants5(); + var { isUtf8 } = require('node:buffer'); + var { removeHTTPWhitespace } = require_data_url(); + var { collectASequenceOfCodePointsFast } = require_infra(); + function isConnecting(readyState) { + return readyState === states.CONNECTING; + } + function isEstablished(readyState) { + return readyState === states.OPEN; + } + function isClosing(readyState) { + return readyState === states.CLOSING; + } + function isClosed(readyState) { + return readyState === states.CLOSED; + } + function fireEvent(e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) { + const event = eventFactory(e, eventInitDict); + target.dispatchEvent(event); + } + function websocketMessageReceived(handler2, type, data) { + handler2.onMessage(type, data); + } + function toArrayBuffer(buffer) { + if (buffer.byteLength === buffer.buffer.byteLength) { + return buffer.buffer; + } + return new Uint8Array(buffer).buffer; + } + 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 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('=', 2); + 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; + } + function getURLRecord(url, 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: url', 'SyntaxError'); + } + if (urlRecord.hash.length || urlRecord.href.endsWith('#')) { + throw new DOMException('hash', 'SyntaxError'); + } + return urlRecord; + } + function validateCloseCodeAndReason(code, reason) { + if (code !== null) { + if (code !== 1e3 && (code < 3e3 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError'); + } + } + if (reason !== null) { + const reasonBytesLength = Buffer.byteLength(reason); + if (reasonBytesLength > 123) { + throw new DOMException(`Reason must be less than 123 bytes; received ${reasonBytesLength}`, 'SyntaxError'); + } + } + } + var utf8Decode = (() => { + if (typeof process.versions.icu === 'string') { + const fatalDecoder = new TextDecoder('utf-8', { fatal: true }); + return fatalDecoder.decode.bind(fatalDecoder); + } + return function (buffer) { + if (isUtf8(buffer)) { + return buffer.toString('utf-8'); + } + throw new TypeError('Invalid utf-8 received.'); + }; + })(); + module2.exports = { + isConnecting, + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isContinuationFrame, + isTextBinaryFrame, + isValidOpcode, + parseExtensions, + isValidClientWindowBits, + toArrayBuffer, + getURLRecord, + validateCloseCodeAndReason + }; + } +}); + +// node_modules/undici/lib/web/websocket/frame.js +var require_frame = __commonJS({ + 'node_modules/undici/lib/web/websocket/frame.js'(exports2, module2) { + 'use strict'; + var { runtimeFeatures } = require_runtime_features(); + var { maxUnsigned16Bit, opcodes } = require_constants5(); + var BUFFER_SIZE = 8 * 1024; + var buffer = null; + var bufIdx = BUFFER_SIZE; + var randomFillSync = runtimeFeatures.has('crypto') ? require('node:crypto').randomFillSync : null; + function generateMask() { + if (bufIdx === BUFFER_SIZE) { + bufIdx = 0; + randomFillSync((buffer ??= Buffer.allocUnsafeSlow(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; + } + /** + * @param {Uint8Array} buffer + */ + static createFastTextFrame(buffer2) { + const maskKey = generateMask(); + const bodyLength = buffer2.length; + for (let i = 0; i < bodyLength; ++i) { + buffer2[i] ^= maskKey[i & 3]; + } + let payloadLength = bodyLength; + let offset = 6; + if (bodyLength > maxUnsigned16Bit) { + offset += 8; + payloadLength = 127; + } else if (bodyLength > 125) { + offset += 2; + payloadLength = 126; + } + const head = Buffer.allocUnsafeSlow(offset); + head[0] = 128 | opcodes.TEXT; + head[1] = payloadLength | 128; + head[offset - 4] = maskKey[0]; + head[offset - 3] = maskKey[1]; + head[offset - 2] = maskKey[2]; + head[offset - 1] = maskKey[3]; + if (payloadLength === 126) { + head.writeUInt16BE(bodyLength, 2); + } else if (payloadLength === 127) { + head[2] = head[3] = 0; + head.writeUIntBE(bodyLength, 4, 6); + } + return [head, buffer2]; + } + }; + module2.exports = { + WebsocketFrameSend, + generateMask + // for benchmark + }; + } +}); + +// node_modules/undici/lib/web/websocket/connection.js +var require_connection = __commonJS({ + 'node_modules/undici/lib/web/websocket/connection.js'(exports2, module2) { + 'use strict'; + var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants5(); + var { parseExtensions, isClosed, isClosing, isEstablished, isConnecting, validateCloseCodeAndReason } = require_util5(); + var { makeRequest } = require_request2(); + var { fetching } = require_fetch(); + var { Headers: Headers2, getHeadersList } = require_headers(); + var { getDecodeSplit } = require_util2(); + var { WebsocketFrameSend } = require_frame(); + var assert = require('node:assert'); + var { runtimeFeatures } = require_runtime_features(); + var crypto2 = runtimeFeatures.has('crypto') ? require('node:crypto') : null; + var warningEmitted = false; + function establishWebSocketConnection(url, protocols, client, handler2, 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', + useURLCredentials: true + }); + if (options.headers) { + const headersList = getHeadersList(new Headers2(options.headers)); + request2.headersList = headersList; + } + const keyValue = crypto2.randomBytes(16).toString('base64'); + request2.headersList.append('sec-websocket-key', keyValue, true); + request2.headersList.append('sec-websocket-version', '13', true); + for (const protocol of protocols) { + request2.headersList.append('sec-websocket-protocol', protocol, true); + } + const permessageDeflate = 'permessage-deflate; client_max_window_bits'; + request2.headersList.append('sec-websocket-extensions', permessageDeflate, true); + const controller = fetching({ + request: request2, + useParallelQueue: true, + dispatcher: options.dispatcher, + processResponse(response) { + if (response.type === 'error' || response.status !== 101) { + if (response.socket?.session == null) { + failWebsocketConnection(handler2, 1002, 'Received network error or non-101 status code.', response.error); + return; + } + if (response.status !== 200) { + failWebsocketConnection(handler2, 1002, 'Received network error or non-200 status code.', response.error); + return; + } + } + if (warningEmitted === false && response.socket?.session != null) { + process.emitWarning('WebSocket over HTTP2 is experimental, and subject to change.', 'ExperimentalWarning'); + warningEmitted = true; + } + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(handler2, 1002, 'Server did not respond with sent protocols.'); + return; + } + if (response.socket.session == null && response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(handler2, 1002, 'Server did not set Upgrade header to "websocket".'); + return; + } + if (response.socket.session == null && response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(handler2, 1002, 'Server did not set Connection header to "upgrade".'); + return; + } + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept'); + const digest = crypto2.hash('sha1', keyValue + uid, 'base64'); + if (secWSAccept !== digest) { + failWebsocketConnection(handler2, 1002, '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(handler2, 1002, '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(handler2, 1002, 'Protocol was not set in the opening handshake.'); + return; + } + } + response.socket.on('data', handler2.onSocketData); + response.socket.on('close', handler2.onSocketClose); + response.socket.on('error', handler2.onSocketError); + handler2.wasEverConnected = true; + handler2.onConnectionEstablished(response, extensions); + } + }); + return controller; + } + function closeWebSocketConnection(object, code, reason, validate = false) { + code ??= null; + reason ??= ''; + if (validate) validateCloseCodeAndReason(code, reason); + if (isClosed(object.readyState) || isClosing(object.readyState)) { + } else if (!isEstablished(object.readyState)) { + failWebsocketConnection(object); + object.readyState = states.CLOSING; + } else if (!object.closeState.has(sentCloseFrameState.SENT) && !object.closeState.has(sentCloseFrameState.RECEIVED)) { + const frame = new WebsocketFrameSend(); + if (reason.length !== 0 && code === null) { + code = 1e3; + } + assert(code === null || Number.isInteger(code)); + if (code === null && reason.length === 0) { + frame.frameData = emptyBuffer; + } else if (code !== null && reason === null) { + frame.frameData = Buffer.allocUnsafe(2); + frame.frameData.writeUInt16BE(code, 0); + } else if (code !== null && reason !== null) { + frame.frameData = Buffer.allocUnsafe(2 + Buffer.byteLength(reason)); + frame.frameData.writeUInt16BE(code, 0); + frame.frameData.write(reason, 2, 'utf-8'); + } else { + frame.frameData = emptyBuffer; + } + object.socket.write(frame.createFrame(opcodes.CLOSE)); + object.closeState.add(sentCloseFrameState.SENT); + object.readyState = states.CLOSING; + } else { + object.readyState = states.CLOSING; + } + } + function failWebsocketConnection(handler2, code, reason, cause) { + if (isEstablished(handler2.readyState)) { + closeWebSocketConnection(handler2, code, reason, false); + } + handler2.controller.abort(); + if (isConnecting(handler2.readyState)) { + handler2.onSocketClose(); + } else if (handler2.socket?.destroyed === false) { + handler2.socket.destroy(); + } + } + module2.exports = { + establishWebSocketConnection, + failWebsocketConnection, + closeWebSocketConnection + }; + } +}); + +// node_modules/undici/lib/web/websocket/permessage-deflate.js +var require_permessage_deflate = __commonJS({ + 'node_modules/undici/lib/web/websocket/permessage-deflate.js'(exports2, module2) { + 'use strict'; + var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require('node:zlib'); + var { isValidClientWindowBits } = require_util5(); + var { MessageSizeExceededError } = require_errors(); + var tail = Buffer.from([0, 0, 255, 255]); + var kBuffer = /* @__PURE__ */ Symbol('kBuffer'); + var kLength = /* @__PURE__ */ 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); + }); + } + }; + module2.exports = { PerMessageDeflate }; + } +}); + +// node_modules/undici/lib/web/websocket/receiver.js +var require_receiver = __commonJS({ + 'node_modules/undici/lib/web/websocket/receiver.js'(exports2, module2) { + 'use strict'; + var { Writable } = require('node:stream'); + var assert = require('node:assert'); + var { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require_constants5(); + var { + isValidStatusCode, + isValidOpcode, + websocketMessageReceived, + utf8Decode, + isControlFrame, + isTextBinaryFrame, + isContinuationFrame + } = require_util5(); + var { failWebsocketConnection } = require_connection(); + var { WebsocketFrameSend } = require_frame(); + 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 {import('./websocket').Handler} */ + #handler; + /** @type {number} */ + #maxFragments; + /** @type {number} */ + #maxPayloadSize; + /** + * @param {import('./websocket').Handler} handler + * @param {Map|null} extensions + * @param {{ maxPayloadSize?: number }} [options] + */ + constructor(handler2, extensions, options = {}) { + super(); + this.#handler = handler2; + this.#extensions = extensions == null ? /* @__PURE__ */ new Map() : extensions; + this.#maxFragments = options.maxFragments ?? 0; + 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.#fragmentsBytes > this.#maxPayloadSize + ) { + failWebsocketConnection(this.#handler, 1009, '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.#handler, 1002, 'Invalid opcode received'); + return callback(); + } + if (masked) { + failWebsocketConnection(this.#handler, 1002, 'Frame cannot be masked'); + return callback(); + } + if (rsv1 !== 0 && !this.#extensions.has('permessage-deflate')) { + failWebsocketConnection(this.#handler, 1002, 'Expected RSV1 to be clear.'); + return; + } + if (rsv2 !== 0 || rsv3 !== 0) { + failWebsocketConnection(this.#handler, 1002, 'RSV1, RSV2, RSV3 must be clear'); + return; + } + if (fragmented && !isTextBinaryFrame(opcode)) { + failWebsocketConnection(this.#handler, 1002, 'Invalid frame type was fragmented.'); + return; + } + if (isTextBinaryFrame(opcode) && this.#fragments.length > 0) { + failWebsocketConnection(this.#handler, 1002, 'Expected continuation frame'); + return; + } + if (this.#info.fragmented && fragmented) { + failWebsocketConnection(this.#handler, 1002, 'Fragmented frame exceeded 125 bytes.'); + return; + } + if ((payloadLength > 125 || fragmented) && isControlFrame(opcode)) { + failWebsocketConnection(this.#handler, 1002, 'Control frame either too large or fragmented'); + return; + } + if (isContinuationFrame(opcode) && this.#fragments.length === 0 && !this.#info.compressed) { + failWebsocketConnection(this.#handler, 1002, '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.#handler, 1009, '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) { + if (!this.writeFragments(body)) { + return; + } + if (!this.#info.fragmented && this.#info.fin) { + websocketMessageReceived(this.#handler, this.#info.binaryType, this.consumeFragments()); + } + this.#state = parserStates.INFO; + } else { + this.#extensions.get('permessage-deflate').decompress( + body, + this.#info.fin, + (error2, data) => { + if (error2) { + const code = error2 instanceof MessageSizeExceededError ? 1009 : 1007; + failWebsocketConnection(this.#handler, code, error2.message); + return; + } + if (!this.writeFragments(data)) { + return; + } + if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) { + failWebsocketConnection(this.#handler, 1009, new MessageSizeExceededError().message); + return; + } + if (!this.#info.fin) { + this.#state = parserStates.INFO; + this.#loop = true; + this.run(callback); + return; + } + websocketMessageReceived(this.#handler, this.#info.binaryType, this.consumeFragments()); + this.#loop = true; + this.#state = parserStates.INFO; + this.run(callback); + }, + this.#fragmentsBytes + ); + 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; + } + this.#byteOffset -= n; + const first = this.#buffers[0]; + if (first.length > n) { + this.#buffers[0] = first.subarray(n, first.length); + return first.subarray(0, n); + } else if (first.length === n) { + return this.#buffers.shift(); + } else { + let offset = 0; + const buffer = Buffer.allocUnsafeSlow(n); + while (offset !== n) { + const next = this.#buffers[0]; + const length = next.length; + 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 += length; + } + } + return buffer; + } + } + writeFragments(fragment) { + if (this.#maxFragments > 0 && this.#fragments.length === this.#maxFragments) { + failWebsocketConnection(this.#handler, 1008, 'Too many message fragments'); + return false; + } + this.#fragmentsBytes += fragment.length; + this.#fragments.push(fragment); + return true; + } + consumeFragments() { + const fragments = this.#fragments; + if (fragments.length === 1) { + this.#fragmentsBytes = 0; + return fragments.shift(); + } + let offset = 0; + const output = Buffer.allocUnsafeSlow(this.#fragmentsBytes); + for (let i = 0; i < fragments.length; ++i) { + const buffer = fragments[i]; + output.set(buffer, offset); + offset += buffer.length; + } + this.#fragments = []; + this.#fragmentsBytes = 0; + return output; + } + parseCloseBody(data) { + assert(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.#handler, 1002, '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; + failWebsocketConnection(this.#handler, code, reason); + return false; + } + if ( + !this.#handler.closeState.has(sentCloseFrameState.SENT) && + !this.#handler.closeState.has(sentCloseFrameState.RECEIVED) + ) { + 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.#handler.socket.write(closeFrame.createFrame(opcodes.CLOSE)); + this.#handler.closeState.add(sentCloseFrameState.SENT); + } + this.#handler.readyState = states.CLOSING; + this.#handler.closeState.add(sentCloseFrameState.RECEIVED); + return false; + } else if (opcode === opcodes.PING) { + if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) { + const frame = new WebsocketFrameSend(body); + this.#handler.socket.write(frame.createFrame(opcodes.PONG)); + this.#handler.onPing(body); + } + } else if (opcode === opcodes.PONG) { + this.#handler.onPong(body); + } + return true; + } + get closingInfo() { + return this.#info.closeInfo; + } + }; + module2.exports = { + ByteParser + }; + } +}); + +// node_modules/undici/lib/web/websocket/sender.js +var require_sender = __commonJS({ + 'node_modules/undici/lib/web/websocket/sender.js'(exports2, module2) { + 'use strict'; + var { WebsocketFrameSend } = require_frame(); + var { opcodes, sendHints } = require_constants5(); + var FixedQueue = require_fixed_queue(); + 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) { + if (!this.#running) { + if (hint === sendHints.text) { + const { 0: head, 1: body } = WebsocketFrameSend.createFastTextFrame(item); + this.#socket.cork(); + this.#socket.write(head); + this.#socket.write(body, cb); + this.#socket.uncork(); + } else { + this.#socket.write(createFrame(item, hint), cb); + } + } else { + const node2 = { + promise: null, + callback: cb, + frame: createFrame(item, hint) + }; + 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.text ? opcodes.TEXT : opcodes.BINARY + ); + } + function toBuffer(data, hint) { + switch (hint) { + case sendHints.text: + case sendHints.typedArray: + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength); + case sendHints.arrayBuffer: + case sendHints.blob: + return new Uint8Array(data); + } + } + module2.exports = { SendQueue }; + } +}); + +// node_modules/undici/lib/web/websocket/websocket.js +var require_websocket = __commonJS({ + 'node_modules/undici/lib/web/websocket/websocket.js'(exports2, module2) { + 'use strict'; + var { isArrayBuffer } = require('node:util/types'); + var { webidl } = require_webidl(); + var { URLSerializer } = require_data_url(); + var { environmentSettingsObject } = require_util2(); + var { staticPropertyDescriptors, states, sentCloseFrameState, sendHints, opcodes } = require_constants5(); + var { + isConnecting, + isEstablished, + isClosing, + isClosed, + isValidSubprotocol, + fireEvent, + utf8Decode, + toArrayBuffer, + getURLRecord + } = require_util5(); + var { establishWebSocketConnection, closeWebSocketConnection, failWebsocketConnection } = require_connection(); + var { ByteParser } = require_receiver(); + var { kEnumerableProperty } = require_util(); + var { getGlobalDispatcher } = require_global2(); + var { ErrorEvent, CloseEvent, createFastMessageEvent } = require_events(); + var { SendQueue } = require_sender(); + var { WebsocketFrameSend } = require_frame(); + var { channels } = require_diagnostics(); + function getSocketAddress(socket) { + if (typeof socket?.address === 'function') { + return socket.address(); + } + if (typeof socket?.session?.socket?.address === 'function') { + return socket.session.socket.address(); + } + return null; + } + var WebSocket = class _WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + }; + #bufferedAmount = 0; + #protocol = ''; + #extensions = ''; + /** @type {SendQueue} */ + #sendQueue; + /** @type {Handler} */ + #handler = { + onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions), + onMessage: (opcode, data) => this.#onMessage(opcode, data), + onParserError: err => failWebsocketConnection(this.#handler, null, err.message), + onParserDrain: () => this.#onParserDrain(), + onSocketData: chunk => { + if (!this.#parser.write(chunk)) { + this.#handler.socket.pause(); + } + }, + onSocketError: err => { + this.#handler.readyState = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(err); + } + this.#handler.socket.destroy(); + }, + onSocketClose: () => this.#onSocketClose(), + onPing: body => { + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body, + websocket: this + }); + } + }, + onPong: body => { + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body, + websocket: this + }); + } + }, + readyState: states.CONNECTING, + socket: null, + closeState: /* @__PURE__ */ new Set(), + controller: null, + wasEverConnected: false + }; + #url; + #binaryType; + /** @type {import('./receiver').ByteParser} */ + #parser; + /** + * @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); + protocols = options.protocols; + const baseURL = environmentSettingsObject.settingsObject.baseUrl; + const urlRecord = getURLRecord(url, baseURL); + 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.#url = new URL(urlRecord.href); + const client = environmentSettingsObject.settingsObject; + this.#handler.controller = establishWebSocketConnection(urlRecord, protocols, client, this.#handler, options); + this.#handler.readyState = _WebSocket.CONNECTING; + this.#binaryType = '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', webidl.attributes.Clamp); + } + if (reason !== void 0) { + reason = webidl.converters.USVString(reason); + } + code ??= null; + reason ??= ''; + closeWebSocketConnection(this.#handler, code, reason, true); + } + /** + * @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.#handler.readyState)) { + throw new DOMException('Sent before connected.', 'InvalidStateError'); + } + if (!isEstablished(this.#handler.readyState) || isClosing(this.#handler.readyState)) { + return; + } + if (typeof data === 'string') { + const buffer = Buffer.from(data); + this.#bufferedAmount += buffer.byteLength; + this.#sendQueue.add( + buffer, + () => { + this.#bufferedAmount -= buffer.byteLength; + }, + sendHints.text + ); + } else if (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 (webidl.is.Blob(data)) { + this.#bufferedAmount += data.size; + this.#sendQueue.add( + data, + () => { + this.#bufferedAmount -= data.size; + }, + sendHints.blob + ); + } + } + get readyState() { + webidl.brandCheck(this, _WebSocket); + return this.#handler.readyState; + } + get bufferedAmount() { + webidl.brandCheck(this, _WebSocket); + return this.#bufferedAmount; + } + get url() { + webidl.brandCheck(this, _WebSocket); + return URLSerializer(this.#url); + } + 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); + } + const listener = webidl.converters.EventHandlerNonNull(fn); + if (listener !== null) { + this.addEventListener('open', listener); + this.#events.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); + } + const listener = webidl.converters.EventHandlerNonNull(fn); + if (listener !== null) { + this.addEventListener('error', listener); + this.#events.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); + } + const listener = webidl.converters.EventHandlerNonNull(fn); + if (listener !== null) { + this.addEventListener('close', listener); + this.#events.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); + } + const listener = webidl.converters.EventHandlerNonNull(fn); + if (listener !== null) { + this.addEventListener('message', listener); + this.#events.message = fn; + } else { + this.#events.message = null; + } + } + get binaryType() { + webidl.brandCheck(this, _WebSocket); + return this.#binaryType; + } + set binaryType(type) { + webidl.brandCheck(this, _WebSocket); + if (type !== 'blob' && type !== 'arraybuffer') { + this.#binaryType = 'blob'; + } else { + this.#binaryType = type; + } + } + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished(response, parsedExtensions) { + this.#handler.socket = response.socket; + const maxFragments = this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments; + const maxPayloadSize = this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize; + const parser = new ByteParser(this.#handler, parsedExtensions, { + maxFragments, + maxPayloadSize + }); + parser.on('drain', () => this.#handler.onParserDrain()); + parser.on('error', err => this.#handler.onParserError(err)); + this.#parser = parser; + this.#sendQueue = new SendQueue(response.socket); + this.#handler.readyState = 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); + if (channels.open.hasSubscribers) { + const headers = response.headersList.entries; + channels.open.publish({ + address: getSocketAddress(response.socket), + protocol: this.#protocol, + extensions: this.#extensions, + websocket: this, + handshakeResponse: { + status: response.status, + statusText: response.statusText, + headers + } + }); + } + } + #onMessage(type, data) { + if (this.#handler.readyState !== states.OPEN) { + return; + } + let dataForEvent; + if (type === opcodes.TEXT) { + try { + dataForEvent = utf8Decode(data); + } catch { + failWebsocketConnection(this.#handler, 1007, 'Received invalid UTF-8 in text frame.'); + return; + } + } else if (type === opcodes.BINARY) { + if (this.#binaryType === 'blob') { + dataForEvent = new Blob([data]); + } else { + dataForEvent = toArrayBuffer(data); + } + } + fireEvent('message', this, createFastMessageEvent, { + origin: this.#url.origin, + data: dataForEvent + }); + } + #onParserDrain() { + this.#handler.socket.resume(); + } + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 + */ + #onSocketClose() { + const wasClean = + this.#handler.closeState.has(sentCloseFrameState.SENT) && + this.#handler.closeState.has(sentCloseFrameState.RECEIVED); + let code = 1005; + let reason = ''; + const result = this.#parser?.closingInfo; + if (result && !result.error) { + code = result.code ?? 1005; + reason = result.reason; + } + this.#handler.readyState = states.CLOSED; + if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) { + code = 1006; + fireEvent('error', this, (type, init) => new ErrorEvent(type, init), { + error: new TypeError(reason) + }); + } + fireEvent('close', this, (type, init) => new CloseEvent(type, init), { + wasClean, + code, + reason + }); + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: this, + code, + reason + }); + } + } + /** + * @param {WebSocket} ws + * @param {Buffer|undefined} buffer + */ + static ping(ws, buffer) { + if (Buffer.isBuffer(buffer)) { + if (buffer.length > 125) { + throw new TypeError('A PING frame cannot have a body larger than 125 bytes.'); + } + } else if (buffer !== void 0) { + throw new TypeError('Expected buffer payload'); + } + const readyState = ws.#handler.readyState; + if (isEstablished(readyState) && !isClosing(readyState) && !isClosed(readyState)) { + const frame = new WebsocketFrameSend(buffer); + ws.#handler.socket.write(frame.createFrame(opcodes.PING)); + } + } + }; + var { ping } = WebSocket; + Reflect.deleteProperty(WebSocket, 'ping'); + 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) === webidl.util.Types.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: () => [] + }, + { + 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) === webidl.util.Types.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) === webidl.util.Types.OBJECT) { + if (webidl.is.Blob(V)) { + return V; + } + if (webidl.is.BufferSource(V)) { + return V; + } + } + return webidl.converters.USVString(V); + }; + module2.exports = { + WebSocket, + ping + }; + } +}); + +// node_modules/undici/lib/web/websocket/stream/websocketerror.js +var require_websocketerror = __commonJS({ + 'node_modules/undici/lib/web/websocket/stream/websocketerror.js'(exports2, module2) { + 'use strict'; + var { webidl } = require_webidl(); + var { validateCloseCodeAndReason } = require_util5(); + var { kConstruct } = require_symbols(); + var { kEnumerableProperty } = require_util(); + function createInheritableDOMException() { + class Test extends DOMException { + get reason() { + return ''; + } + } + if (new Test().reason !== void 0) { + return DOMException; + } + return new Proxy(DOMException, { + construct(target, args, newTarget) { + const instance = Reflect.construct(target, args, target); + Object.setPrototypeOf(instance, newTarget.prototype); + return instance; + } + }); + } + var WebSocketError = class _WebSocketError extends createInheritableDOMException() { + #closeCode; + #reason; + constructor(message = '', init = void 0) { + message = webidl.converters.DOMString(message, 'WebSocketError', 'message'); + super(message, 'WebSocketError'); + if (init === kConstruct) { + return; + } else if (init !== null) { + init = webidl.converters.WebSocketCloseInfo(init); + } + let code = init.closeCode ?? null; + const reason = init.reason ?? ''; + validateCloseCodeAndReason(code, reason); + if (reason.length !== 0 && code === null) { + code = 1e3; + } + this.#closeCode = code; + this.#reason = reason; + } + get closeCode() { + return this.#closeCode; + } + get reason() { + return this.#reason; + } + /** + * @param {string} message + * @param {number|null} code + * @param {string} reason + */ + static createUnvalidatedWebSocketError(message, code, reason) { + const error2 = new _WebSocketError(message, kConstruct); + error2.#closeCode = code; + error2.#reason = reason; + return error2; + } + }; + var { createUnvalidatedWebSocketError } = WebSocketError; + delete WebSocketError.createUnvalidatedWebSocketError; + Object.defineProperties(WebSocketError.prototype, { + closeCode: kEnumerableProperty, + reason: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocketError', + writable: false, + enumerable: false, + configurable: true + } + }); + webidl.is.WebSocketError = webidl.util.MakeTypeAssertion(WebSocketError); + module2.exports = { WebSocketError, createUnvalidatedWebSocketError }; + } +}); + +// node_modules/undici/lib/web/websocket/stream/websocketstream.js +var require_websocketstream = __commonJS({ + 'node_modules/undici/lib/web/websocket/stream/websocketstream.js'(exports2, module2) { + 'use strict'; + var { addAbortListener } = require('node:events'); + var { environmentSettingsObject, readableStreamClose } = require_util2(); + var { states, opcodes, sentCloseFrameState } = require_constants5(); + var { webidl } = require_webidl(); + var { getURLRecord, isValidSubprotocol, isEstablished, utf8Decode } = require_util5(); + var { establishWebSocketConnection, failWebsocketConnection, closeWebSocketConnection } = require_connection(); + var { channels } = require_diagnostics(); + var { WebsocketFrameSend } = require_frame(); + var { ByteParser } = require_receiver(); + var { WebSocketError, createUnvalidatedWebSocketError } = require_websocketerror(); + var { kEnumerableProperty } = require_util(); + var { utf8DecodeBytes } = require_encoding(); + var emittedExperimentalWarning = false; + var WebSocketStream = class { + // Each WebSocketStream object has an associated url , which is a URL record . + /** @type {URL} */ + #url; + // Each WebSocketStream object has an associated opened promise , which is a promise. + /** @type {ReturnType} */ + #openedPromise; + // Each WebSocketStream object has an associated closed promise , which is a promise. + /** @type {ReturnType} */ + #closedPromise; + // Each WebSocketStream object has an associated readable stream , which is a ReadableStream . + /** @type {ReadableStream} */ + #readableStream; + /** @type {ReadableStreamDefaultController} */ + #readableStreamController; + // Each WebSocketStream object has an associated writable stream , which is a WritableStream . + /** @type {WritableStream} */ + #writableStream; + // Each WebSocketStream object has an associated boolean handshake aborted , which is initially false. + #handshakeAborted = false; + /** @type {import('../websocket').Handler} */ + #handler = { + // https://whatpr.org/websockets/48/7b748d3...d5570f3.html#feedback-to-websocket-stream-from-the-protocol + onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions), + onMessage: (opcode, data) => this.#onMessage(opcode, data), + onParserError: err => failWebsocketConnection(this.#handler, null, err.message), + onParserDrain: () => this.#handler.socket.resume(), + onSocketData: chunk => { + if (!this.#parser.write(chunk)) { + this.#handler.socket.pause(); + } + }, + onSocketError: err => { + this.#handler.readyState = states.CLOSING; + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(err); + } + this.#handler.socket.destroy(); + }, + onSocketClose: () => this.#onSocketClose(), + onPing: () => {}, + onPong: () => {}, + readyState: states.CONNECTING, + socket: null, + closeState: /* @__PURE__ */ new Set(), + controller: null, + wasEverConnected: false + }; + /** @type {import('../receiver').ByteParser} */ + #parser; + constructor(url, options = void 0) { + if (!emittedExperimentalWarning) { + process.emitWarning('WebSocketStream is experimental! Expect it to change at any time.', { + code: 'UNDICI-WSS' + }); + emittedExperimentalWarning = true; + } + webidl.argumentLengthCheck(arguments, 1, 'WebSocket'); + url = webidl.converters.USVString(url); + if (options !== null) { + options = webidl.converters.WebSocketStreamOptions(options); + } + const baseURL = environmentSettingsObject.settingsObject.baseUrl; + const urlRecord = getURLRecord(url, baseURL); + const protocols = options.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.#url = urlRecord.toString(); + this.#openedPromise = Promise.withResolvers(); + this.#closedPromise = Promise.withResolvers(); + if (options.signal != null) { + const signal = options.signal; + if (signal.aborted) { + this.#openedPromise.reject(signal.reason); + this.#closedPromise.reject(signal.reason); + return; + } + addAbortListener(signal, () => { + if (!isEstablished(this.#handler.readyState)) { + failWebsocketConnection(this.#handler); + this.#handler.readyState = states.CLOSING; + this.#openedPromise.reject(signal.reason); + this.#closedPromise.reject(signal.reason); + this.#handshakeAborted = true; + } + }); + } + const client = environmentSettingsObject.settingsObject; + this.#handler.controller = establishWebSocketConnection(urlRecord, protocols, client, this.#handler, options); + } + // The url getter steps are to return this 's url , serialized . + get url() { + return this.#url.toString(); + } + // The opened getter steps are to return this 's opened promise . + get opened() { + return this.#openedPromise.promise; + } + // The closed getter steps are to return this 's closed promise . + get closed() { + return this.#closedPromise.promise; + } + // The close( closeInfo ) method steps are: + close(closeInfo = void 0) { + if (closeInfo !== null) { + closeInfo = webidl.converters.WebSocketCloseInfo(closeInfo); + } + const code = closeInfo.closeCode ?? null; + const reason = closeInfo.reason; + closeWebSocketConnection(this.#handler, code, reason, true); + } + #write(chunk) { + chunk = webidl.converters.WebSocketStreamWrite(chunk); + const promise = Promise.withResolvers(); + let data = null; + let opcode = null; + if (webidl.is.BufferSource(chunk)) { + data = new Uint8Array( + ArrayBuffer.isView(chunk) ? new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength) : chunk.slice() + ); + opcode = opcodes.BINARY; + } else { + let string; + try { + string = webidl.converters.DOMString(chunk); + } catch (e) { + promise.reject(e); + return promise.promise; + } + data = new TextEncoder().encode(string); + opcode = opcodes.TEXT; + } + if ( + !this.#handler.closeState.has(sentCloseFrameState.SENT) && + !this.#handler.closeState.has(sentCloseFrameState.RECEIVED) + ) { + const frame = new WebsocketFrameSend(data); + this.#handler.socket.write(frame.createFrame(opcode), () => { + promise.resolve(void 0); + }); + } + return promise.promise; + } + /** @type {import('../websocket').Handler['onConnectionEstablished']} */ + #onConnectionEstablished(response, parsedExtensions) { + this.#handler.socket = response.socket; + const maxFragments = this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments; + const maxPayloadSize = this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize; + const parser = new ByteParser(this.#handler, parsedExtensions, { + maxFragments, + maxPayloadSize + }); + parser.on('drain', () => this.#handler.onParserDrain()); + parser.on('error', err => this.#handler.onParserError(err)); + this.#parser = parser; + this.#handler.readyState = states.OPEN; + const extensions = parsedExtensions ?? ''; + const protocol = response.headersList.get('sec-websocket-protocol') ?? ''; + const readable = new ReadableStream({ + start: controller => { + this.#readableStreamController = controller; + }, + cancel: reason => this.#cancel(reason) + }); + const writable = new WritableStream({ + write: chunk => this.#write(chunk), + close: () => closeWebSocketConnection(this.#handler, null, null), + abort: reason => this.#closeUsingReason(reason) + }); + this.#readableStream = readable; + this.#writableStream = writable; + this.#openedPromise.resolve({ + extensions, + protocol, + readable, + writable + }); + } + /** @type {import('../websocket').Handler['onMessage']} */ + #onMessage(type, data) { + if (this.#handler.readyState !== states.OPEN) { + return; + } + let chunk; + if (type === opcodes.TEXT) { + try { + chunk = utf8Decode(data); + } catch { + failWebsocketConnection(this.#handler, 1007, 'Received invalid UTF-8 in text frame.'); + return; + } + } else if (type === opcodes.BINARY) { + chunk = new Uint8Array(data.buffer, data.byteOffset, data.byteLength); + } + this.#readableStreamController.enqueue(chunk); + } + /** @type {import('../websocket').Handler['onSocketClose']} */ + #onSocketClose() { + const wasClean = + this.#handler.closeState.has(sentCloseFrameState.SENT) && + this.#handler.closeState.has(sentCloseFrameState.RECEIVED); + this.#handler.readyState = states.CLOSED; + if (this.#handshakeAborted) { + return; + } + if (!this.#handler.wasEverConnected) { + this.#openedPromise.reject(new WebSocketError('Socket never opened')); + } + const result = this.#parser?.closingInfo; + let code = result?.code ?? 1005; + if ( + !this.#handler.closeState.has(sentCloseFrameState.SENT) && + !this.#handler.closeState.has(sentCloseFrameState.RECEIVED) + ) { + code = 1006; + } + const reason = result?.reason == null ? '' : utf8DecodeBytes(Buffer.from(result.reason)); + if (wasClean) { + readableStreamClose(this.#readableStreamController); + if (!this.#writableStream.locked) { + this.#writableStream.abort( + new DOMException('A closed WebSocketStream cannot be written to', 'InvalidStateError') + ); + } + this.#closedPromise.resolve({ + closeCode: code, + reason + }); + } else { + const error2 = createUnvalidatedWebSocketError('unclean close', code, reason); + this.#readableStreamController?.error(error2); + this.#writableStream?.abort(error2); + this.#closedPromise.reject(error2); + } + } + #closeUsingReason(reason) { + let code = null; + let reasonString = ''; + if (webidl.is.WebSocketError(reason)) { + code = reason.closeCode; + reasonString = reason.reason; + } + closeWebSocketConnection(this.#handler, code, reasonString); + } + // To cancel a WebSocketStream stream given reason , close using reason giving stream and reason . + #cancel(reason) { + this.#closeUsingReason(reason); + } + }; + Object.defineProperties(WebSocketStream.prototype, { + url: kEnumerableProperty, + opened: kEnumerableProperty, + closed: kEnumerableProperty, + close: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocketStream', + writable: false, + enumerable: false, + configurable: true + } + }); + webidl.converters.WebSocketStreamOptions = webidl.dictionaryConverter([ + { + key: 'protocols', + converter: webidl.sequenceConverter(webidl.converters.USVString), + defaultValue: () => [] + }, + { + key: 'signal', + converter: webidl.nullableConverter(webidl.converters.AbortSignal), + defaultValue: () => null + } + ]); + webidl.converters.WebSocketCloseInfo = webidl.dictionaryConverter([ + { + key: 'closeCode', + converter: V => webidl.converters['unsigned short'](V, webidl.attributes.EnforceRange) + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: () => '' + } + ]); + webidl.converters.WebSocketStreamWrite = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V); + } + return webidl.converters.BufferSource(V); + }; + module2.exports = { WebSocketStream }; + } +}); + +// node_modules/undici/lib/web/eventsource/util.js +var require_util6 = __commonJS({ + 'node_modules/undici/lib/web/eventsource/util.js'(exports2, module2) { + 'use strict'; + var { makeRequest } = require_request2(); + 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 createPotentialCORSRequest(url, destination, corsAttributeState, sameOriginFallback) { + let mode = corsAttributeState === 'no cors' ? 'no-cors' : 'cors'; + if (sameOriginFallback && mode === 'no-cors') { + mode = 'same-origin'; + } + let credentialsMode = 'include'; + if (corsAttributeState === 'anonymous') { + credentialsMode = 'same-origin'; + } + return makeRequest({ + urlList: [url], + destination, + mode, + credentials: credentialsMode, + useCredentials: true + }); + } + module2.exports = { + isValidLastEventId, + isASCIINumber, + createPotentialCORSRequest + }; + } +}); + +// node_modules/undici/lib/web/eventsource/eventsource-stream.js +var require_eventsource_stream = __commonJS({ + 'node_modules/undici/lib/web/eventsource/eventsource-stream.js'(exports2, module2) { + 'use strict'; + var { Transform } = require('node:stream'); + var { isASCIINumber, isValidLastEventId } = require_util6(); + var BOM = [239, 187, 191]; + var LF = 10; + var CR = 13; + var COLON = 58; + var SPACE = 32; + var DATA = Buffer.from('data'); + var EVENT = Buffer.from('event'); + var ID = Buffer.from('id'); + var RETRY = Buffer.from('retry'); + function isASCIINumberBytes(buffer, start) { + if (start >= buffer.length) { + return false; + } + for (let i = start; i < buffer.length; i++) { + if (buffer[i] < 48 || buffer[i] > 57) { + return false; + } + } + return true; + } + function isValidLastEventIdBytes(buffer, start) { + for (let i = start; i < buffer.length; i++) { + if (buffer[i] === 0) { + return false; + } + } + return true; + } + function isFieldName(line, length, field) { + if (length !== field.length) { + return false; + } + for (let i = 0; i < length; i++) { + if (line[i] !== field[i]) { + return false; + } + } + return true; + } + var EventSourceStream = class extends Transform { + /** + * @type {eventSourceSettings} + */ + state; + /** + * Leading byte-order-mark check. + * @type {boolean} + */ + checkBOM = true; + /** + * @type {boolean} + */ + crlfCheck = false; + /** + * @type {boolean} + */ + eventEndCheck = false; + /** + * @type {Buffer[]} + */ + chunks = []; + chunkIndex = 0; + pos = 0; + lineChunkIndex = 0; + linePos = 0; + event = { + data: void 0, + event: void 0, + id: void 0, + retry: void 0 + }; + /** + * @param {object} options + * @param {boolean} [options.readableObjectMode] + * @param {eventSourceSettings} [options.eventSourceSettings] + * @param {(chunk: any, encoding?: BufferEncoding | undefined) => boolean} [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; + } + this.chunks.push(chunk); + if (this.checkBOM) { + if (this.handleBOM()) { + callback(); + return; + } + } + while (this.hasCurrentByte()) { + const byte = this.currentByte(); + if (this.eventEndCheck) { + if (this.crlfCheck) { + if (byte === LF) { + this.crlfCheck = false; + this.consumeCurrentByte(); + continue; + } + this.crlfCheck = false; + } + if (byte === LF || byte === CR) { + if (byte === CR) { + this.crlfCheck = true; + } + this.consumeCurrentByte(); + if (this.hasPendingEvent()) { + this.processEvent(this.event); + } + this.clearEvent(); + continue; + } + this.eventEndCheck = false; + continue; + } + if (byte === LF || byte === CR) { + if (byte === CR) { + this.crlfCheck = true; + } + this.parseLine(this.readLine(), this.event); + this.consumeCurrentByte(); + this.eventEndCheck = true; + continue; + } + this.advanceCursor(); + } + callback(); + } + /** + * @param {Buffer} line + * @param {EventSourceStreamEvent} event + */ + parseLine(line, event) { + if (line.length === 0) { + return; + } + const colonPosition = line.indexOf(COLON); + if (colonPosition === 0) { + return; + } + let fieldLength = line.length; + let valueStart = line.length; + if (colonPosition !== -1) { + fieldLength = colonPosition; + valueStart = colonPosition + 1; + if (line[valueStart] === SPACE) { + ++valueStart; + } + } + if (isFieldName(line, fieldLength, DATA)) { + const value = line.toString('utf8', valueStart); + if (event.data === void 0) { + event.data = value; + } else { + event.data += ` +${value}`; + } + return; + } + if (isFieldName(line, fieldLength, RETRY)) { + if (isASCIINumberBytes(line, valueStart)) { + event.retry = line.toString('utf8', valueStart); + } + return; + } + if (isFieldName(line, fieldLength, ID)) { + if (isValidLastEventIdBytes(line, valueStart)) { + event.id = line.toString('utf8', valueStart); + } + return; + } + if (isFieldName(line, fieldLength, EVENT)) { + const value = line.toString('utf8', valueStart); + if (value.length > 0) { + event.event = value; + } + } + } + /** + * @param {EventSourceStreamEvent} event + */ + processEvent(event) { + if (event.retry && isASCIINumber(event.retry)) { + this.state.reconnectionTime = parseInt(event.retry, 10); + } + if (event.id !== void 0 && 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; + this.event.event = void 0; + this.event.id = void 0; + this.event.retry = void 0; + } + hasPendingEvent() { + return ( + this.event.data !== void 0 || + this.event.event !== void 0 || + this.event.id !== void 0 || + this.event.retry !== void 0 + ); + } + hasCurrentByte() { + return this.chunkIndex < this.chunks.length && this.pos < this.chunks[this.chunkIndex].length; + } + currentByte() { + return this.chunks[this.chunkIndex][this.pos]; + } + consumeCurrentByte() { + this.advanceCursor(); + this.syncLineStartToCursor(); + } + advanceCursor() { + this.pos++; + while (this.chunkIndex < this.chunks.length && this.pos >= this.chunks[this.chunkIndex].length) { + this.chunkIndex++; + this.pos = 0; + } + } + syncLineStartToCursor() { + this.lineChunkIndex = this.chunkIndex; + this.linePos = this.pos; + this.dropConsumedChunks(); + } + dropConsumedChunks() { + while (this.lineChunkIndex > 0) { + this.chunks.shift(); + this.lineChunkIndex--; + this.chunkIndex--; + } + if (this.chunkIndex === this.chunks.length) { + this.chunks.length = 0; + this.chunkIndex = 0; + this.pos = 0; + this.lineChunkIndex = 0; + this.linePos = 0; + } + } + readLine() { + if (this.lineChunkIndex === this.chunkIndex) { + return this.chunks[this.chunkIndex].subarray(this.linePos, this.pos); + } + const chunks = []; + let length = 0; + for (let i = this.lineChunkIndex; i <= this.chunkIndex; i++) { + const chunk = this.chunks[i]; + const start = i === this.lineChunkIndex ? this.linePos : 0; + const end = i === this.chunkIndex ? this.pos : chunk.length; + const slice = chunk.subarray(start, end); + length += slice.length; + chunks.push(slice); + } + return Buffer.concat(chunks, length); + } + peekBufferedByte(offset) { + let chunkIndex = this.lineChunkIndex; + let pos = this.linePos; + while (chunkIndex < this.chunks.length) { + const chunk = this.chunks[chunkIndex]; + const remaining = chunk.length - pos; + if (offset < remaining) { + return chunk[pos + offset]; + } + offset -= remaining; + chunkIndex++; + pos = 0; + } + } + discardLeadingBytes(count) { + while (count > 0 && this.lineChunkIndex < this.chunks.length) { + const chunk = this.chunks[this.lineChunkIndex]; + const remaining = chunk.length - this.linePos; + if (count < remaining) { + this.linePos += count; + count = 0; + } else { + count -= remaining; + this.lineChunkIndex++; + this.linePos = 0; + } + } + this.chunkIndex = this.lineChunkIndex; + this.pos = this.linePos; + this.dropConsumedChunks(); + } + handleBOM() { + const first = this.peekBufferedByte(0); + const second = this.peekBufferedByte(1); + const third = this.peekBufferedByte(2); + if (second === void 0) { + if (first === BOM[0]) { + return true; + } + this.checkBOM = false; + return true; + } + if (third === void 0) { + if (first === BOM[0] && second === BOM[1]) { + return true; + } + this.checkBOM = false; + return false; + } + if (first === BOM[0] && second === BOM[1] && third === BOM[2]) { + this.discardLeadingBytes(3); + } + this.checkBOM = false; + return !this.hasCurrentByte(); + } + }; + module2.exports = { + EventSourceStream + }; + } +}); + +// node_modules/undici/lib/web/eventsource/eventsource.js +var require_eventsource = __commonJS({ + 'node_modules/undici/lib/web/eventsource/eventsource.js'(exports2, module2) { + 'use strict'; + var { pipeline } = require('node:stream'); + var { fetching } = require_fetch(); + var { webidl } = require_webidl(); + var { EventSourceStream } = require_eventsource_stream(); + var { parseMIMEType } = require_data_url(); + var { createFastMessageEvent } = require_events(); + var { isNetworkError } = require_response(); + var { kEnumerableProperty } = require_util(); + var { environmentSettingsObject } = require_util2(); + var { createPotentialCORSRequest } = require_util6(); + 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; + #withCredentials = false; + /** + * @type {ReadyState} + */ + #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); + eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict'); + this.#dispatcher = eventSourceInitDict.node.dispatcher || eventSourceInitDict.dispatcher; + this.#state = { + lastEventId: '', + reconnectionTime: eventSourceInitDict.node.reconnectionTime + }; + 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 === true) { + corsAttributeState = USE_CREDENTIALS; + this.#withCredentials = true; + } + const request2 = createPotentialCORSRequest(urlRecord, '', corsAttributeState); + request2.client = environmentSettingsObject.settingsObject; + request2.headersList.set('Accept', 'text/event-stream'); + request2.cache = 'no-store'; + request2.initiator = 'other'; + this.#request = request2; + this.#connect(); + } + /** + * Returns the state of this EventSource object's connection. It can have the + * values described below. + * @returns {ReadyState} + * @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)) { + return 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 {void} + */ + #reconnect() { + if (this.#readyState === CLOSED) return; + this.#readyState = CONNECTING; + this.dispatchEvent(new Event('error')); + setTimeout(() => { + if (this.#readyState !== CONNECTING) return; + if (this.#state.lastEventId.length) { + this.#request.headersList.set('last-event-id', this.#state.lastEventId, true); + } + this.#connect(); + }, this.#state.reconnectionTime)?.unref(); + } + /** + * 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); + } + const listener = webidl.converters.EventHandlerNonNull(fn); + if (listener !== null) { + this.addEventListener('open', listener); + this.#events.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); + } + const listener = webidl.converters.EventHandlerNonNull(fn); + if (listener !== null) { + this.addEventListener('message', listener); + this.#events.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); + } + const listener = webidl.converters.EventHandlerNonNull(fn); + if (listener !== null) { + this.addEventListener('error', listener); + this.#events.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 + }, + { + key: 'node', + // undici only + converter: webidl.dictionaryConverter([ + { + key: 'reconnectionTime', + converter: webidl.converters['unsigned long'], + defaultValue: () => defaultReconnectionTime + }, + { + key: 'dispatcher', + converter: webidl.converters.any + } + ]), + defaultValue: () => ({}) + } + ]); + module2.exports = { + EventSource, + defaultReconnectionTime + }; + } +}); + +// node_modules/undici/index.js +var require_undici = __commonJS({ + 'node_modules/undici/index.js'(exports2, module2) { + 'use strict'; + var Client = require_client(); + var Dispatcher = require_dispatcher(); + var Pool = require_pool(); + var BalancedPool = require_balanced_pool(); + var RoundRobinPool = require_round_robin_pool(); + var Agent = require_agent(); + var Dispatcher1Wrapper = require_dispatcher1_wrapper(); + var ProxyAgent2 = require_proxy_agent(); + var Socks5ProxyAgent = require_socks5_proxy_agent(); + var EnvHttpProxyAgent = require_env_http_proxy_agent(); + var RetryAgent = require_retry_agent(); + var H2CClient = require_h2c_client(); + 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 { MockCallHistory, MockCallHistoryLog } = require_mock_call_history(); + var MockAgent = require_mock_agent(); + var MockPool = require_mock_pool(); + var SnapshotAgent = require_snapshot_agent(); + 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(); + Object.assign(Dispatcher.prototype, api); + module2.exports.Dispatcher = Dispatcher; + module2.exports.Client = Client; + module2.exports.Pool = Pool; + module2.exports.BalancedPool = BalancedPool; + module2.exports.RoundRobinPool = RoundRobinPool; + module2.exports.Agent = Agent; + module2.exports.Dispatcher1Wrapper = Dispatcher1Wrapper; + module2.exports.ProxyAgent = ProxyAgent2; + module2.exports.Socks5ProxyAgent = Socks5ProxyAgent; + module2.exports.EnvHttpProxyAgent = EnvHttpProxyAgent; + module2.exports.RetryAgent = RetryAgent; + module2.exports.H2CClient = H2CClient; + module2.exports.RetryHandler = RetryHandler; + module2.exports.DecoratorHandler = DecoratorHandler; + module2.exports.RedirectHandler = RedirectHandler; + module2.exports.interceptors = { + redirect: require_redirect(), + responseError: require_response_error(), + retry: require_retry(), + dump: require_dump(), + dns: require_dns(), + cache: require_cache2(), + decompress: require_decompress(), + deduplicate: require_deduplicate() + }; + module2.exports.cacheStores = { + MemoryCacheStore: require_memory_cache_store() + }; + var SqliteCacheStore = require_sqlite_cache_store(); + module2.exports.cacheStores.SqliteCacheStore = SqliteCacheStore; + module2.exports.buildConnector = buildConnector; + module2.exports.errors = errors; + module2.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 path2 = opts.path; + if (!opts.path.startsWith('/')) { + path2 = `/${path2}`; + } + url = new URL(util.parseOrigin(url).origin + path2); + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {}; + } + url = util.parseURL(url); + } + const { agent, dispatcher = getGlobalDispatcher(), ...restOpts } = opts; + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?'); + } + return fn.call( + dispatcher, + { + ...restOpts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, + handler2 + ); + }; + } + module2.exports.setGlobalDispatcher = setGlobalDispatcher; + module2.exports.getGlobalDispatcher = getGlobalDispatcher; + var fetchImpl = require_fetch().fetch; + var currentFilename = typeof __filename !== 'undefined' ? __filename : void 0; + function appendFetchStackTrace(err, filename) { + if (!err || typeof err !== 'object') { + return; + } + const stack = typeof err.stack === 'string' ? err.stack : ''; + const normalizedFilename = filename.replace(/\\/g, '/'); + if (stack && (stack.includes(filename) || stack.includes(normalizedFilename))) { + return; + } + const capture = {}; + Error.captureStackTrace(capture, appendFetchStackTrace); + if (!capture.stack) { + return; + } + const captureLines = capture.stack.split('\n').slice(1).join('\n'); + err.stack = stack + ? `${stack} +${captureLines}` + : capture.stack; + } + module2.exports.fetch = function fetch2(init, options = void 0) { + return fetchImpl(init, options).catch(err => { + if (currentFilename) { + appendFetchStackTrace(err, currentFilename); + } else if (err && typeof err === 'object') { + Error.captureStackTrace(err, module2.exports.fetch); + } + throw err; + }); + }; + module2.exports.Headers = require_headers().Headers; + module2.exports.Response = require_response().Response; + module2.exports.Request = require_request2().Request; + module2.exports.FormData = require_formdata().FormData; + var { setGlobalOrigin, getGlobalOrigin } = require_global(); + module2.exports.setGlobalOrigin = setGlobalOrigin; + module2.exports.getGlobalOrigin = getGlobalOrigin; + var { CacheStorage } = require_cachestorage(); + var { kConstruct } = require_symbols(); + module2.exports.caches = new CacheStorage(kConstruct); + var { deleteCookie, getCookies, getSetCookies, setCookie, parseCookie } = require_cookies(); + module2.exports.deleteCookie = deleteCookie; + module2.exports.getCookies = getCookies; + module2.exports.getSetCookies = getSetCookies; + module2.exports.setCookie = setCookie; + module2.exports.parseCookie = parseCookie; + var { parseMIMEType, serializeAMimeType } = require_data_url(); + module2.exports.parseMIMEType = parseMIMEType; + module2.exports.serializeAMimeType = serializeAMimeType; + var { CloseEvent, ErrorEvent, MessageEvent } = require_events(); + var { WebSocket, ping } = require_websocket(); + module2.exports.WebSocket = WebSocket; + module2.exports.CloseEvent = CloseEvent; + module2.exports.ErrorEvent = ErrorEvent; + module2.exports.MessageEvent = MessageEvent; + module2.exports.ping = ping; + module2.exports.WebSocketStream = require_websocketstream().WebSocketStream; + module2.exports.WebSocketError = require_websocketerror().WebSocketError; + module2.exports.request = makeDispatcher(api.request); + module2.exports.stream = makeDispatcher(api.stream); + module2.exports.pipeline = makeDispatcher(api.pipeline); + module2.exports.connect = makeDispatcher(api.connect); + module2.exports.upgrade = makeDispatcher(api.upgrade); + module2.exports.MockClient = MockClient; + module2.exports.MockCallHistory = MockCallHistory; + module2.exports.MockCallHistoryLog = MockCallHistoryLog; + module2.exports.MockPool = MockPool; + module2.exports.MockAgent = MockAgent; + module2.exports.SnapshotAgent = SnapshotAgent; + module2.exports.mockErrors = mockErrors; + var { EventSource } = require_eventsource(); + module2.exports.EventSource = EventSource; + function install() { + globalThis.fetch = module2.exports.fetch; + globalThis.Headers = module2.exports.Headers; + globalThis.Response = module2.exports.Response; + globalThis.Request = module2.exports.Request; + globalThis.FormData = module2.exports.FormData; + globalThis.WebSocket = module2.exports.WebSocket; + globalThis.CloseEvent = module2.exports.CloseEvent; + globalThis.ErrorEvent = module2.exports.ErrorEvent; + globalThis.MessageEvent = module2.exports.MessageEvent; + globalThis.EventSource = module2.exports.EventSource; + } + module2.exports.install = install; + } +}); + +// node_modules/@actions/github/node_modules/@actions/http-client/lib/proxy.js +var require_proxy = __commonJS({ + 'node_modules/@actions/github/node_modules/@actions/http-client/lib/proxy.js'(exports2) { + 'use strict'; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.getProxyUrl = getProxyUrl2; + exports2.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 (_a) { + 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; + } + }; + } +}); + +// node_modules/@actions/github/node_modules/@actions/http-client/lib/index.js +var require_lib = __commonJS({ + 'node_modules/@actions/github/node_modules/@actions/http-client/lib/index.js'(exports2) { + 'use strict'; + var __createBinding = + (exports2 && exports2.__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 = + (exports2 && exports2.__setModuleDefault) || + (Object.create + ? function (o, v) { + Object.defineProperty(o, 'default', { enumerable: true, value: v }); + } + : function (o, v) { + o['default'] = v; + }); + var __importStar = + (exports2 && exports2.__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 = + (exports2 && exports2.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function (resolve2, 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 ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.HttpClient = + exports2.HttpClientResponse = + exports2.HttpClientError = + exports2.MediaTypes = + exports2.Headers = + exports2.HttpCodes = + void 0; + exports2.getProxyUrl = getProxyUrl2; + exports2.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 || (exports2.HttpCodes = HttpCodes2 = {})); + var Headers2; + (function (Headers3) { + Headers3['Accept'] = 'accept'; + Headers3['ContentType'] = 'content-type'; + })(Headers2 || (exports2.Headers = Headers2 = {})); + var MediaTypes2; + (function (MediaTypes3) { + MediaTypes3['ApplicationJson'] = 'application/json'; + })(MediaTypes2 || (exports2.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); } - return this[impl].toJSON.apply(this[impl], args); }; - Object.defineProperty(URL2.prototype, 'href', { - get() { - return this[impl].href; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].href = V; - }, - enumerable: true, - configurable: true - }); - URL2.prototype.toString = function () { - if (!this || !module2.exports.is(this)) { - throw new TypeError('Illegal invocation'); + exports2.HttpClientError = HttpClientError; + var HttpClientResponse = class { + constructor(message) { + this.message = message; } - return this.href; - }; - Object.defineProperty(URL2.prototype, 'origin', { - get() { - return this[impl].origin; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'protocol', { - get() { - return this[impl].protocol; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].protocol = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'username', { - get() { - return this[impl].username; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].username = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'password', { - get() { - return this[impl].password; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].password = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'host', { - get() { - return this[impl].host; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].host = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'hostname', { - get() { - return this[impl].hostname; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].hostname = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'port', { - get() { - return this[impl].port; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].port = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'pathname', { - get() { - return this[impl].pathname; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].pathname = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'search', { - get() { - return this[impl].search; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].search = V; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(URL2.prototype, 'hash', { - get() { - return this[impl].hash; - }, - set(V) { - V = conversions['USVString'](V); - this[impl].hash = V; - }, - enumerable: true, - configurable: true - }); - module2.exports = { - is(obj) { - return !!obj && obj[impl] instanceof Impl.implementation; - }, - create(constructorArgs, privateData) { - let obj = Object.create(URL2.prototype); - this.setup(obj, constructorArgs, privateData); - return obj; - }, - setup(obj, constructorArgs, privateData) { - if (!privateData) privateData = {}; - privateData.wrapper = obj; - obj[impl] = new Impl.implementation(constructorArgs, privateData); - obj[impl][utils.wrapperSymbol] = obj; - }, - interface: URL2, - expose: { - Window: { URL: URL2 }, - Worker: { URL: URL2 } + readBody() { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise(resolve2 => + __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', () => { + resolve2(output.toString()); + }); + }) + ); + }); + } + readBodyBuffer() { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise(resolve2 => + __awaiter3(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', chunk => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve2(Buffer.concat(chunks)); + }); + }) + ); + }); } }; - } -}); - -// node_modules/whatwg-url/lib/public-api.js -var require_public_api = __commonJS({ - 'node_modules/whatwg-url/lib/public-api.js'(exports2) { - 'use strict'; - exports2.URL = require_URL().interface; - exports2.serializeURL = require_url_state_machine().serializeURL; - exports2.serializeURLOrigin = require_url_state_machine().serializeURLOrigin; - exports2.basicURLParse = require_url_state_machine().basicURLParse; - exports2.setTheUsername = require_url_state_machine().setTheUsername; - exports2.setThePassword = require_url_state_machine().setThePassword; - exports2.serializeHost = require_url_state_machine().serializeHost; - exports2.serializeInteger = require_url_state_machine().serializeInteger; - exports2.parseURL = require_url_state_machine().parseURL; - } -}); - -// node_modules/node-fetch/lib/index.js -var require_lib3 = __commonJS({ - 'node_modules/node-fetch/lib/index.js'(exports2, module2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function _interopDefault(ex) { - return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex; - } - var Stream = _interopDefault(require('stream')); - var http = _interopDefault(require('http')); - var Url = _interopDefault(require('url')); - var whatwgUrl = _interopDefault(require_public_api()); - var https = _interopDefault(require('https')); - var zlib = _interopDefault(require('zlib')); - var Readable = Stream.Readable; - var BUFFER = Symbol('buffer'); - var TYPE = Symbol('type'); - var Blob = class { - constructor() { - this[TYPE] = ''; - const blobParts = arguments[0]; - const options = arguments[1]; - const buffers = []; - let size = 0; - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); + exports2.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; } - } - this[BUFFER] = Buffer.concat(buffers); - let type = options && options.type !== void 0 && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; } } - get size() { - return this[BUFFER].length; + options(requestUrl, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); } - get type() { - return this[TYPE]; + get(requestUrl, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); } - text() { - return Promise.resolve(this[BUFFER].toString()); + del(requestUrl, additionalHeaders) { + return __awaiter3(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); + 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); + }); } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; + 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; + }); } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === void 0) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === void 0) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); } - const span = Math.max(relativeEnd - relativeStart, 0); - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } - }; - Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } - }); - Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true - }); - function FetchError(message, type, systemError) { - Error.call(this, message); - this.message = message; - this.type = type; - if (systemError) { - this.code = this.errno = systemError.code; - } - Error.captureStackTrace(this, this.constructor); - } - FetchError.prototype = Object.create(Error.prototype); - FetchError.prototype.constructor = FetchError; - FetchError.prototype.name = 'FetchError'; - var convert; - try { - convert = require('encoding').convert; - } catch (e) {} - var INTERNALS = Symbol('Body internals'); - var PassThrough = Stream.PassThrough; - function Body(body) { - var _this = this; - var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, - _ref$size = _ref.size; - let size = _ref$size === void 0 ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout; - if (body == null) { - body = null; - } else if (isURLSearchParams(body)) { - body = Buffer.from(body.toString()); - } else if (isBlob(body)); - else if (Buffer.isBuffer(body)); - else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream); - else { - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - if (body instanceof Stream) { - body.on('error', function (err) { - const error = - err.name === 'AbortError' - ? err - : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); + this._disposed = true; } - } - Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - blob() { - let ct = (this.headers && this.headers.get('content-type')) || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - new Blob([], { - type: ct.toLowerCase() - }), - { - [BUFFER]: buf + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info2, data) { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise((resolve2, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } else if (!res) { + reject(new Error('Unknown error')); + } else { + resolve2(res); + } } - ); - }); - }, - json() { - var _this2 = this; - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject( - new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json') - ); - } - }); - }, - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - buffer() { - return consumeBody.call(this); - }, - textConverted() { - var _this3 = this; - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); + this.requestRawWithCallback(info2, data, callbackForResult); + }); }); } - }; - Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } - }); - Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } - }; - function consumeBody() { - var _this4 = this; - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - this[INTERNALS].disturbed = true; - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - let body = this.body; - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - if (isBlob(body)) { - body = body.stream(); - } - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - let accum = []; - let accumBytes = 0; - let abort = false; - return new Body.Promise(function (resolve, reject) { - let resTimeout; - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject( - new FetchError( - `Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, - 'body-timeout' - ) - ); - }, _this4.timeout); + /** + * 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'); } - body.on('error', function (err) { - if (err.name === 'AbortError') { - abort = true; - reject(err); - } else { - reject( - new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err) - ); + 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); }); - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } - accumBytes += chunk.length; - accum.push(chunk); + let socket; + req.on('socket', sock => { + socket = sock; }); - body.on('end', function () { - if (abort) { - return; - } - clearTimeout(resTimeout); - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - reject( - new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err) - ); + req.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (socket) { + socket.end(); } + handleResult(new Error(`Request timeout: ${info2.options.path}`)); }); - }); - } - function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } - str = buffer.slice(0, 1024).toString(); - if (!res && str) { - res = / 0 && arguments[0] !== void 0 ? arguments[0] : void 0; - this[MAP] = Object.create(null); - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } + _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; } - return; } - if (init == null); - else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); + 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 { - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } + return additionalValue; } - } else { - throw new TypeError('Provided initializer must be an object'); } - } - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === void 0) { - return null; + if (clientHeader !== void 0) { + return clientHeader; } - return this[MAP][key].join(', '); + return _default; } - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0; - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; } - } - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== void 0 ? key : name] = [value]; - } - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== void 0) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; + 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; } - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== void 0; - } - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== void 0) { - delete this[MAP][key]; + _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; } - raw() { - return this[MAP]; - } - keys() { - return createHeadersIterator(this, 'key'); - } - values() { - return createHeadersIterator(this, 'value'); + _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(resolve2 => setTimeout(() => resolve2(), ms)); + }); } - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); + _processResponse(res, options) { + return __awaiter3(this, void 0, void 0, function* () { + return new Promise((resolve2, reject) => + __awaiter3(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + if (statusCode === HttpCodes2.NotFound) { + resolve2(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 { + resolve2(response); + } + }) + ); + }); } }; - Headers.prototype.entries = Headers.prototype[Symbol.iterator]; - Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true - }); - Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } - }); - function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'key+value'; - const keys = Object.keys(headers[MAP]).sort(); - return keys.map( - kind === 'key' - ? function (k) { - return k.toLowerCase(); - } - : kind === 'value' - ? function (k) { - return headers[MAP][k].join(', '); - } - : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - } - ); - } - var INTERNAL = Symbol('internal'); - function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; - } - var HeadersIteratorPrototype = Object.setPrototypeOf( - { - next() { - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: void 0, - done: true - }; + exports2.HttpClient = HttpClient3; + var lowercaseKeys2 = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); + } +}); + +// node_modules/content-type/dist/index.js +var require_dist = __commonJS({ + 'node_modules/content-type/dist/index.js'(exports2) { + 'use strict'; + Object.defineProperty(exports2, '__esModule', { value: true }); + exports2.format = format; + exports2.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 = /* @__PURE__ */ (() => { + const C = function () {}; + C.prototype = /* @__PURE__ */ Object.create(null); + return C; + })(); + function format(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}`); } - this[INTERNAL].index = index + 1; - return { - value: values[index], - done: false - }; + result += `; ${param}=${qstring(parameters[param])}`; } - }, - Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) - ); - Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true - }); - function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== void 0) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; } - return obj; + return result; } - function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; + 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; } - if (headers[MAP][name] === void 0) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); + 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; } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; + index++; } } - return headers; + return parameters; } - var INTERNALS$1 = Symbol('Response internals'); - var STATUS_CODES = http.STATUS_CODES; - var Response = class { - constructor() { - let body = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - Body.call(this, body, opts); - const status = opts.status || 200; - const headers = new Headers(opts.headers); - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } - get url() { - return this[INTERNALS$1].url || ''; - } - get status() { - return this[INTERNALS$1].status; - } - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } - get redirected() { - return this[INTERNALS$1].counter > 0; - } - get statusText() { - return this[INTERNALS$1].statusText; - } - get headers() { - return this[INTERNALS$1].headers; + function skipValue(str, index, len) { + while (index < len) { + const char = str.charCodeAt(index); + if (char === SEMI) break; + index++; } - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); + return index; + } + function skipOWS(header, index, len) { + while (index < len) { + const char = header.charCodeAt(index); + if (char !== SP && char !== HTAB) break; + index++; } - }; - Body.mixIn(Response.prototype); - Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } - }); - Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true - }); - var INTERNALS$2 = Symbol('Request internals'); - var URL2 = Url.URL || whatwgUrl.URL; - var parse_url = Url.parse; - var format_url = Url.format; - function parseURL(urlStr) { - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL2(urlStr).toString(); + return index; + } + function trailingOWS(header, start, end) { + while (end > start) { + const char = header.charCodeAt(end - 1); + if (char !== SP && char !== HTAB) break; + end--; } - return parse_url(urlStr); + return end; } - var streamDestructionSupported = 'destroy' in Stream.Readable.prototype; - function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; + 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}`); } - function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); + } +}); + +// node_modules/@actions/core/lib/command.js +var os = __toESM(require('os'), 1); + +// node_modules/@actions/core/lib/utils.js +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 + }; +} + +// node_modules/@actions/core/lib/command.js +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +var CMD_STRING = '::'; +var Command = class { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; } - var Request = class { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - let parsedURL; - if (!isRequest(input)) { - if (input && input.href) { - parsedURL = parseURL(input.href); - } else { - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); - if ((init.body != null || (isRequest(input) && input.body !== null)) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); - const headers = new Headers(init.headers || input.headers || {}); - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); + this.command = command; + 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)}`; } } - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; - this.follow = init.follow !== void 0 ? init.follow : input.follow !== void 0 ? input.follow : 20; - this.compress = init.compress !== void 0 ? init.compress : input.compress !== void 0 ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } - get method() { - return this[INTERNALS$2].method; - } - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } - get headers() { - return this[INTERNALS$2].headers; - } - get redirect() { - return this[INTERNALS$2].redirect; - } - get signal() { - return this[INTERNALS$2].signal; - } - clone() { - return new Request(this); - } - }; - Body.mixIn(Request.prototype); - Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true - }); - Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } - }); - function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); } - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); - } - function AbortError(message) { - Error.call(this, message); - this.type = 'aborted'; - this.message = message; - Error.captureStackTrace(this, this.constructor); } - AbortError.prototype = Object.create(Error.prototype); - AbortError.prototype.constructor = AbortError; - AbortError.prototype.name = 'AbortError'; - var URL$1 = Url.URL || whatwgUrl.URL; - var PassThrough$1 = Stream.PassThrough; - var isDomainOrSubdomain = function isDomainOrSubdomain2(destination, original) { - const orig = new URL$1(original).hostname; - const dest = new URL$1(destination).hostname; - return orig === dest || (orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest)); - }; - function fetch(url, opts) { - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } - Body.Promise = fetch.Promise; - return new fetch.Promise(function (resolve, reject) { - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; - let response = null; - const abort = function abort2() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; - if (signal && signal.aborted) { - abort(); - return; - } - const abortAndFinalize = function abortAndFinalize2() { - abort(); - finalize(); - }; - const req = send(options); - let reqTimeout; - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); - req.on('response', function (res) { - clearTimeout(reqTimeout); - const headers = createHeadersLenient(res.headers); - if (fetch.isRedirect(res.statusCode)) { - const location = headers.get('Location'); - let locationURL = null; - try { - locationURL = location === null ? null : new URL$1(location, request.url).toString(); - } catch (err) { - if (request.redirect !== 'manual') { - reject( - new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect') - ); - finalize(); - return; - } - } - switch (request.redirect) { - case 'error': - reject( - new FetchError( - `uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, - 'no-redirect' - ) - ); - finalize(); - return; - case 'manual': - if (locationURL !== null) { - try { - headers.set('Location', locationURL); - } catch (err) { - reject(err); - } - } - break; - case 'follow': - if (locationURL === null) { - break; - } - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - if (!isDomainOrSubdomain(request.url, locationURL)) { - for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { - requestOpts.headers.delete(name); - } - } - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } - if ( - res.statusCode === 303 || - ((res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') - ) { - requestOpts.method = 'GET'; - requestOpts.body = void 0; - requestOpts.headers.delete('content-length'); - } - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; - const codings = headers.get('Content-Encoding'); - if ( - !request.compress || - request.method === 'HEAD' || - codings === null || - res.statusCode === 204 || - res.statusCode === 304 - ) { - response = new Response(body, response_options); - resolve(response); - return; - } - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } - if (codings == 'deflate' || codings == 'x-deflate') { - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - if ((chunk[0] & 15) === 8) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } - response = new Response(body, response_options); - resolve(response); + 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'); +} + +// node_modules/@actions/core/lib/file-command.js +var crypto = __toESM(require('crypto'), 1); +var fs = __toESM(require('fs'), 1); +var os2 = __toESM(require('os'), 1); +function issueFileCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${toCommandValue(message)}${os2.EOL}`, { + encoding: 'utf8' + }); +} +function prepareKeyValueMessage(key, value) { + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = toCommandValue(value); + if (key.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + return `${key}<<${delimiter}${os2.EOL}${convertedValue}${os2.EOL}${delimiter}`; +} + +// node_modules/@actions/core/lib/core.js +var os4 = __toESM(require('os'), 1); + +// node_modules/@actions/http-client/lib/index.js +var tunnel = __toESM(require_tunnel2(), 1); +var import_undici = __toESM(require_undici(), 1); +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]; + +// node_modules/@actions/core/lib/summary.js +var import_os = require('os'); +var import_fs = require('fs'); +var __awaiter = function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve2) { + resolve2(value); }); - writeToStream(req, request); - }); + } + return new (P || (P = Promise))(function (resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } } - fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; - }; - fetch.Promise = global.Promise; - module2.exports = exports2 = fetch; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.default = exports2; - exports2.Headers = Headers; - exports2.Request = Request; - exports2.Response = Response; - exports2.FetchError = FetchError; + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var { access, appendFile, writeFile } = import_fs.promises; +var SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +var Summary = class { + constructor() { + this._buffer = ''; } -}); - -// node_modules/deprecation/dist-node/index.js -var require_dist_node3 = __commonJS({ - 'node_modules/deprecation/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var Deprecation = class extends Error { - constructor(message) { - super(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = 'Deprecation'; + /** + * 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.` + ); } - }; - exports2.Deprecation = Deprecation; + try { + yield access(pathFromEnv, import_fs.constants.R_OK | import_fs.constants.W_OK); + } catch (_a) { + 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(import_os.EOL); + } + /** + * 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 } = options || {}; + const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); + 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(); -// node_modules/wrappy/wrappy.js -var require_wrappy = __commonJS({ - 'node_modules/wrappy/wrappy.js'(exports2, module2) { - module2.exports = wrappy; - function wrappy(fn, cb) { - if (fn && cb) return wrappy(fn)(cb); - if (typeof fn !== 'function') throw new TypeError('need wrapper function'); - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k]; - }); - return wrapper; - function wrapper() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - var ret = fn.apply(this, args); - var cb2 = args[args.length - 1]; - if (typeof ret === 'function' && ret !== cb2) { - Object.keys(cb2).forEach(function (k) { - ret[k] = cb2[k]; - }); - } - return ret; +// node_modules/@actions/core/lib/platform.js +var import_os2 = __toESM(require('os'), 1); + +// node_modules/@actions/io/lib/io-util.js +var fs2 = __toESM(require('fs'), 1); +var { chmod, copyFile, lstat, mkdir, open, readdir, rename, rm, rmdir, stat, symlink, unlink } = fs2.promises; +var IS_WINDOWS = process.platform === 'win32'; +var READONLY = fs2.constants.O_RDONLY; + +// node_modules/@actions/exec/lib/toolrunner.js +var IS_WINDOWS2 = process.platform === 'win32'; + +// node_modules/@actions/core/lib/platform.js +var platform = import_os2.default.platform(); +var arch = import_os2.default.arch(); + +// node_modules/@actions/core/lib/core.js +var ExitCode; +(function (ExitCode2) { + ExitCode2[(ExitCode2['Success'] = 0)] = 'Success'; + ExitCode2[(ExitCode2['Failure'] = 1)] = 'Failure'; +})(ExitCode || (ExitCode = {})); +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 setOutput(name, value) { + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return issueFileCommand('OUTPUT', prepareKeyValueMessage(name, value)); + } + process.stdout.write(os4.EOL); + issueCommand('set-output', { name }, toCommandValue(value)); +} +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +function error(message, properties = {}) { + issueCommand('error', toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +function info(message) { + process.stdout.write(message + os4.EOL); +} + +// node_modules/@actions/github/lib/context.js +var import_fs2 = require('fs'); +var import_os3 = require('os'); +var Context = class { + /** + * Hydrate the context from the environment + */ + constructor() { + var _a, _b, _c; + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if ((0, import_fs2.existsSync)(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse((0, import_fs2.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); + } else { + const path2 = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path2} does not exist${import_os3.EOL}`); } } + 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 = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; + this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; + this.graphqlUrl = + (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; } -}); - -// node_modules/once/once.js -var require_once = __commonJS({ - 'node_modules/once/once.js'(exports2, module2) { - var wrappy = require_wrappy(); - module2.exports = wrappy(once); - module2.exports.strict = wrappy(onceStrict); - once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this); - }, - configurable: true - }); - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this); - }, - configurable: true - }); + get issue() { + const payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { + number: (payload.issue || payload.pull_request || payload).number }); - function once(fn) { - var f = function () { - if (f.called) return f.value; - f.called = true; - return (f.value = fn.apply(this, arguments)); - }; - f.called = false; - return f; - } - function onceStrict(fn) { - var f = function () { - if (f.called) throw new Error(f.onceError); - f.called = true; - return (f.value = fn.apply(this, arguments)); + } + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [owner2, repo2] = process.env.GITHUB_REPOSITORY.split('/'); + return { owner: owner2, repo: repo2 }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name }; - var name = fn.name || 'Function wrapped with `once`'; - f.onceError = name + " shouldn't be called more than once"; - f.called = false; - return f; } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); } -}); +}; -// node_modules/@octokit/request-error/dist-node/index.js -var require_dist_node4 = __commonJS({ - 'node_modules/@octokit/request-error/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function _interopDefault(ex) { - return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex; - } - var deprecation = require_dist_node3(); - var once = _interopDefault(require_once()); - var logOnceCode = once(deprecation2 => console.warn(deprecation2)); - var logOnceHeaders = once(deprecation2 => console.warn(deprecation2)); - var RequestError = class extends Error { - constructor(message, statusCode, options) { - super(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = 'HttpError'; - this.status = statusCode; - let headers; - if ('headers' in options && typeof options.headers !== 'undefined') { - headers = options.headers; - } - if ('response' in options) { - this.response = options.response; - headers = options.response.headers; - } - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, ' [REDACTED]') - }); - } - requestCopy.url = requestCopy.url - .replace(/\bclient_secret=\w+/g, 'client_secret=[REDACTED]') - .replace(/\baccess_token=\w+/g, 'access_token=[REDACTED]'); - this.request = requestCopy; - Object.defineProperty(this, 'code', { - get() { - logOnceCode( - new deprecation.Deprecation('[@octokit/request-error] `error.code` is deprecated, use `error.status`.') - ); - return statusCode; - } - }); - Object.defineProperty(this, 'headers', { - get() { - logOnceHeaders( - new deprecation.Deprecation( - '[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.' - ) - ); - return headers || {}; - } +// node_modules/@actions/github/lib/internal/utils.js +var httpClient = __toESM(require_lib(), 1); +var import_undici2 = __toESM(require_undici(), 1); +var __awaiter2 = function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve2) { + resolve2(value); }); - } - }; - exports2.RequestError = RequestError; } -}); - -// node_modules/@octokit/request/dist-node/index.js -var require_dist_node5 = __commonJS({ - 'node_modules/@octokit/request/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - function _interopDefault(ex) { - return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex; - } - var endpoint = require_dist_node2(); - var universalUserAgent = require_dist_node(); - var isPlainObject = require_is_plain_object(); - var nodeFetch = _interopDefault(require_lib3()); - var requestError = require_dist_node4(); - var VERSION = '5.6.3'; - function getBufferResponse(response) { - return response.arrayBuffer(); - } - function fetchWrapper(requestOptions) { - const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - let headers = {}; - let status; - let url; - const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch; - return fetch( - requestOptions.url, - Object.assign( - { - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect - }, - requestOptions.request - ) - ) - .then(async response => { - url = response.url; - status = response.status; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if ('deprecation' in headers) { - const matches = headers.link && headers.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 ${headers.sunset}${ - deprecationLink ? `. See ${deprecationLink}` : '' - }` - ); - } - if (status === 204 || status === 205) { - return; - } - if (requestOptions.method === 'HEAD') { - if (status < 400) { - return; - } - throw new requestError.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: void 0 - }, - request: requestOptions - }); - } - if (status === 304) { - throw new requestError.RequestError('Not modified', status, { - response: { - url, - status, - headers, - data: await getResponseData(response) - }, - request: requestOptions - }); - } - if (status >= 400) { - const data = await getResponseData(response); - const error = new requestError.RequestError(toErrorMessage(data), status, { - response: { - url, - status, - headers, - data - }, - request: requestOptions - }); - throw error; - } - return getResponseData(response); - }) - .then(data => { - return { - status, - url, - headers, - data - }; - }) - .catch(error => { - if (error instanceof requestError.RequestError) throw error; - throw new requestError.RequestError(error.message, 500, { - request: requestOptions - }); - }); - } - async function getResponseData(response) { - const contentType = response.headers.get('content-type'); - if (/application\/json/.test(contentType)) { - return response.json(); - } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); + return new (P || (P = Promise))(function (resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); } - return getBufferResponse(response); } - function toErrorMessage(data) { - if (typeof data === 'string') return data; - if ('message' in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(', ')}`; - } - return data.message; + function rejected(value) { + try { + step(generator['throw'](value)); + } catch (e) { + reject(e); } - return `Unknown error: ${JSON.stringify(data)}`; } - function withDefaults(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: withDefaults.bind(null, endpoint2) - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2) - }); + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); } - var request = withDefaults(endpoint.endpoint, { - headers: { - 'user-agent': `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` - } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +function getAuthString(token, options) { + if (!token && !options.auth) { + throw new Error('Parameter token or opts.auth is required'); + } else if (token && options.auth) { + throw new Error('Parameters token and opts.auth may not both be specified'); + } + return typeof options.auth === 'string' ? options.auth : `token ${token}`; +} +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 })); }); - exports2.request = request; + return proxyFetch; +} +function getApiBaseUrl() { + return process.env['GITHUB_API_URL'] || 'https://api.github.com'; +} +function getUserAgentWithOrchestrationId(baseUserAgent) { + var _a; + const orchId = (_a = process.env['ACTIONS_ORCHESTRATION_ID']) === null || _a === void 0 ? void 0 : _a.trim(); + if (orchId) { + const sanitizedId = orchId.replace(/[^a-z0-9_.-]/gi, '_'); + const tag = `actions_orchestration_id/${sanitizedId}`; + if (baseUserAgent === null || baseUserAgent === void 0 ? void 0 : baseUserAgent.includes(tag)) return baseUserAgent; + const ua = baseUserAgent ? `${baseUserAgent} ` : ''; + return `${ua}${tag}`; } -}); + return baseUserAgent; +} -// node_modules/@octokit/graphql/dist-node/index.js -var require_dist_node6 = __commonJS({ - 'node_modules/@octokit/graphql/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var request = require_dist_node5(); - var universalUserAgent = require_dist_node(); - var VERSION = '4.8.0'; - function _buildMessageForResponseErrors(data) { - return ( - `Request failed due to following response errors: -` + data.errors.map(e => ` - ${e.message}`).join('\n') - ); +// node_modules/universal-user-agent/index.js +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 ''; +} + +// node_modules/before-after-hook/lib/register.js +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); } - var GraphqlResponseError = class extends Error { - constructor(request2, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request2; - this.headers = headers; - this.response = response; - this.name = 'GraphqlResponseError'; - this.errors = response.errors; - this.data = response.data; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } + return state.registry[name].reduce((method2, registered) => { + return registered.hook.bind(null, method2, options); + }, method)(); + }); +} + +// node_modules/before-after-hook/lib/add.js +function addHook(state, kind, name, hook2) { + const orig = hook2; + if (!state.registry[name]) { + state.registry[name] = []; + } + if (kind === 'before') { + hook2 = (method, options) => { + return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); + }; + } + if (kind === 'after') { + hook2 = (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') { + hook2 = (method, options) => { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(error2 => { + return orig(error2, options); + }); }; - var NON_VARIABLE_OPTIONS = ['method', 'baseUrl', 'url', 'headers', 'request', 'query', 'mediaType']; - var FORBIDDEN_VARIABLE_OPTIONS = ['query', 'method', 'url']; - var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; - function graphql(request2, query, options) { - if (options) { - if (typeof query === 'string' && 'query' in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); + } + state.registry[name].push({ + hook: hook2, + orig + }); +} + +// node_modules/before-after-hook/lib/remove.js +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); +} + +// node_modules/before-after-hook/index.js +var bind = Function.bind; +var bindable = bind.bind(bind); +function bindApi(hook2, state, name) { + const removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); + hook2.api = { remove: removeHookRef }; + hook2.remove = removeHookRef; + ['before', 'error', 'after', 'wrap'].forEach(kind => { + const args = name ? [state, kind, name] : [state, kind]; + hook2[kind] = hook2.api[kind] = bindable(addHook, null).apply(null, args); + }); +} +function Singular() { + const singularHookName = /* @__PURE__ */ Symbol('Singular'); + const singularHookState = { + registry: {} + }; + const singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} +function Collection() { + const state = { + registry: {} + }; + const hook2 = register.bind(null, state); + bindApi(hook2, state); + return hook2; +} +var before_after_hook_default = { Singular, Collection }; + +// node_modules/@octokit/endpoint/dist-bundle/index.js +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(defaults2, options) { + const result = Object.assign({}, defaults2); + Object.keys(options).forEach(key => { + if (isPlainObject(options[key])) { + if (!(key in defaults2)) Object.assign(result, { [key]: options[key] }); + else result[key] = mergeDeep(defaults2[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(defaults2, 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(defaults2 || {}, options); + if (options.url === '/graphql') { + if (defaults2 && defaults2.mediaType.previews?.length) { + mergedOptions.mediaType.previews = defaults2.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('+'); } - 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`)); + 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)); + } + }); } - } - const parsedOptions = - typeof query === 'string' - ? Object.assign( - { - query - }, - options - ) - : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; + } 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 (!result.variables) { - result.variables = {}; + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + '=' + tmp.join(',')); + } else if (tmp.length !== 0) { + result.push(tmp.join(',')); } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.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 withDefaults(request$1, newDefaults) { - const newRequest = request$1.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: request.request.endpoint - }); + } else { + if (operator === ';') { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === '' && (operator === '&' || operator === '?')) { + result.push(encodeUnreserved(key) + '='); + } else if (value === '') { + result.push(''); } - var graphql$1 = withDefaults(request.request, { - headers: { - 'user-agent': `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` - }, - method: 'POST', - url: '/graphql' - }); - function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: 'POST', - url: '/graphql' + } + 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); } - exports2.GraphqlResponseError = GraphqlResponseError; - exports2.graphql = graphql$1; - exports2.withCustomRequest = withCustomRequest; + }); + if (template === '/') { + return template; + } else { + return template.replace(/\/$/, ''); } -}); - -// node_modules/@octokit/auth-token/dist-node/index.js -var require_dist_node7 = __commonJS({ - 'node_modules/@octokit/auth-token/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; - var REGEX_IS_INSTALLATION = /^ghs_/; - var REGEX_IS_USER_TO_SERVER = /^ghu_/; - async function auth(token) { - const isApp = token.split(/\./).length === 3; - const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); - const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); - const tokenType = isApp ? 'app' : isInstallation ? 'installation' : isUserToServer ? 'user-to-server' : 'oauth'; - return { - type: 'token', - token, - tokenType - }; +} +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(format => + format.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${options.mediaType.format}` + ) + ) + .join(','); } - function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; + if (url.endsWith('/graphql')) { + if (options.mediaType.previews?.length) { + const previewsFromAcceptHeader = headers.accept.match(/(? { + const format = options.mediaType.format ? `.${options.mediaType.format}` : '+json'; + return `application/vnd.github.${preview}-preview${format}`; + }) + .join(','); } - return `token ${token}`; } - async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); - } - 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'); + } + 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; } - token = token.replace(/^(token|bearer) +/i, ''); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); - }; - exports2.createTokenAuth = createTokenAuth; + } } -}); + 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(defaults2, route, options) { + return parse(merge(defaults2, 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); -// node_modules/@octokit/core/dist-node/index.js -var require_dist_node8 = __commonJS({ - 'node_modules/@octokit/core/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var universalUserAgent = require_dist_node(); - var beforeAfterHook = require_before_after_hook(); - var request = require_dist_node5(); - var graphql = require_dist_node6(); - var authToken = require_dist_node7(); - function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - return target; +// node_modules/@octokit/request/dist-bundle/index.js +var import_content_type = __toESM(require_dist(), 1); + +// node_modules/json-with-bigint/json-with-bigint.js +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)); +}; + +// node_modules/@octokit/request-error/dist-src/index.js +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; } - function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - var target = _objectWithoutPropertiesLoose(source, excluded); - var key, i; - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - return target; + if ('response' in options) { + this.response = options.response; } - var VERSION = '3.6.0'; - var _excluded = ['authStrategy']; - var Octokit = class { - constructor(options = {}) { - const hook = new beforeAfterHook.Collection(); - const requestDefaults = { - baseUrl: request.request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - hook: hook.bind(null, 'request') - }), - mediaType: { - previews: [], - format: '' - } - }; - requestDefaults.headers['user-agent'] = [ - options.userAgent, - `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}` - ] - .filter(Boolean) - .join(' '); - 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.request.defaults(requestDefaults); - this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign( - { - debug: () => {}, - info: () => {}, - warn: console.warn.bind(console), - error: console.error.bind(console) - }, - options.log - ); - this.hook = hook; - if (!options.authStrategy) { - if (!options.auth) { - this.auth = async () => ({ - type: 'unauthenticated' - }); - } else { - const auth = authToken.createTokenAuth(options.auth); - hook.wrap('request', auth.hook); - this.auth = auth; - } - } else { - const { authStrategy } = options, - otherOptions = _objectWithoutProperties(options, _excluded); - const auth = authStrategy( - Object.assign( - { - request: this.request, - log: this.log, - octokit: this, - octokitOptions: otherOptions - }, - options.auth - ) - ); - hook.wrap('request', auth.hook); - this.auth = auth; - } - const classConstructor = this.constructor; - classConstructor.plugins.forEach(plugin => { - Object.assign(this, plugin(this, options)); - }); - } - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === 'function') { - super(defaults(options)); - return; - } - super( - Object.assign( - {}, - defaults, - options, - options.userAgent && defaults.userAgent - ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } - : null - ) - ); - } - }; - return OctokitWithDefaults; - } - static plugin(...newPlugins) { - var _a; - const currentPlugins = this.plugins; - const NewOctokit = - ((_a = class extends this {}), - (_a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin)))), - _a); - return NewOctokit; - } - }; - Octokit.VERSION = VERSION; - Octokit.plugins = []; - exports2.Octokit = Octokit; + 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 fetch2 = requestOptions.request?.fetch || globalThis.fetch; + if (!fetch2) { + 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 fetch2(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; } - keys.push.apply(keys, symbols); } - return keys; } - function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - return target; + 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; } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; + 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; } - var Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: ['POST /orgs/{org}/actions/runners/{runner_id}/labels'], - addCustomLabelsToSelfHostedRunnerForRepo: ['POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels'], - addSelectedRepoToOrgSecret: ['PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}'], - approveWorkflowRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve'], - cancelWorkflowRun: ['POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel'], - createOrUpdateEnvironmentSecret: [ - 'PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}' - ], - createOrUpdateOrgSecret: ['PUT /orgs/{org}/actions/secrets/{secret_name}'], - createOrUpdateRepoSecret: ['PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}'], - 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'], - 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}'], - deleteEnvironmentSecret: [ - 'DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}' - ], - deleteOrgSecret: ['DELETE /orgs/{org}/actions/secrets/{secret_name}'], - deleteRepoSecret: ['DELETE /repos/{owner}/{repo}/actions/secrets/{secret_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'], - getActionsCacheList: ['GET /repos/{owner}/{repo}/actions/caches'], - getActionsCacheUsage: ['GET /repos/{owner}/{repo}/actions/cache/usage'], - getActionsCacheUsageByRepoForOrg: ['GET /orgs/{org}/actions/cache/usage-by-repository'], - getActionsCacheUsageForEnterprise: ['GET /enterprises/{enterprise}/actions/cache/usage'], - 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}'], - getEnvironmentPublicKey: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key'], - getEnvironmentSecret: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}'], - getGithubActionsDefaultWorkflowPermissionsEnterprise: ['GET /enterprises/{enterprise}/actions/permissions/workflow'], - 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'], - 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}'], - 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}'], - 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'], - listEnvironmentSecrets: ['GET /repositories/{repository_id}/environments/{environment_name}/secrets'], - 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'], - listRepoSecrets: ['GET /repos/{owner}/{repo}/actions/secrets'], - 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'], - 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}'], - 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'], - setGithubActionsDefaultWorkflowPermissionsEnterprise: ['PUT /enterprises/{enterprise}/actions/permissions/workflow'], - 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'], - setSelectedRepositoriesEnabledGithubActionsOrganization: ['PUT /orgs/{org}/actions/permissions/repositories'], - setWorkflowAccessToRepository: ['PUT /repos/{owner}/{repo}/actions/permissions/access'] - }, - 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'], - 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'], - 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'], - getGithubAdvancedSecurityBillingGhe: ['GET /enterprises/{enterprise}/settings/billing/advanced-security'], - getGithubAdvancedSecurityBillingOrg: ['GET /orgs/{org}/settings/billing/advanced-security'], - 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'] - }, - 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: { - deleteAnalysis: ['DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}'], - 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}'], - getSarif: ['GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}'], - 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'] - } - ], - listRecentAnalyses: ['GET /repos/{owner}/{repo}/code-scanning/analyses'], - updateAlert: ['PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}'], - uploadSarif: ['POST /repos/{owner}/{repo}/code-scanning/sarifs'] - }, - codesOfConduct: { - getAllCodesOfConduct: ['GET /codes_of_conduct'], - getConductCode: ['GET /codes_of_conduct/{key}'] - }, - codespaces: { - addRepositoryForSecretForAuthenticatedUser: [ - 'PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}' - ], - codespaceMachinesForAuthenticatedUser: ['GET /user/codespaces/{codespace_name}/machines'], - createForAuthenticatedUser: ['POST /user/codespaces'], - 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}'], - deleteRepoSecret: ['DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}'], - deleteSecretForAuthenticatedUser: ['DELETE /user/codespaces/secrets/{secret_name}'], - exportForAuthenticatedUser: ['POST /user/codespaces/{codespace_name}/exports'], - getExportDetailsForAuthenticatedUser: ['GET /user/codespaces/{codespace_name}/exports/{export_id}'], - getForAuthenticatedUser: ['GET /user/codespaces/{codespace_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'], - listRepoSecrets: ['GET /repos/{owner}/{repo}/codespaces/secrets'], - listRepositoriesForSecretForAuthenticatedUser: ['GET /user/codespaces/secrets/{secret_name}/repositories'], - listSecretsForAuthenticatedUser: ['GET /user/codespaces/secrets'], - removeRepositoryForSecretForAuthenticatedUser: [ - 'DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}' - ], - repoMachinesForAuthenticatedUser: ['GET /repos/{owner}/{repo}/codespaces/machines'], - setRepositoriesForSecretForAuthenticatedUser: ['PUT /user/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}'] - }, - 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}'], - 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}'], - 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}' - ], - setSelectedReposForOrgSecret: ['PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories'] - }, - dependencyGraph: { - createRepositorySnapshot: ['POST /repos/{owner}/{repo}/dependency-graph/snapshots'], - diffRange: ['GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}'] - }, - emojis: { - get: ['GET /emojis'] - }, - enterpriseAdmin: { - addCustomLabelsToSelfHostedRunnerForEnterprise: [ - 'POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels' - ], - disableSelectedOrganizationGithubActionsEnterprise: [ - 'DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}' - ], - enableSelectedOrganizationGithubActionsEnterprise: [ - 'PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}' - ], - getAllowedActionsEnterprise: ['GET /enterprises/{enterprise}/actions/permissions/selected-actions'], - getGithubActionsPermissionsEnterprise: ['GET /enterprises/{enterprise}/actions/permissions'], - getServerStatistics: ['GET /enterprise-installation/{enterprise_or_org}/server-statistics'], - listLabelsForSelfHostedRunnerForEnterprise: ['GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels'], - listSelectedOrganizationsEnabledGithubActionsEnterprise: [ - 'GET /enterprises/{enterprise}/actions/permissions/organizations' - ], - removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [ - 'DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels' - ], - removeCustomLabelFromSelfHostedRunnerForEnterprise: [ - 'DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}' - ], - setAllowedActionsEnterprise: ['PUT /enterprises/{enterprise}/actions/permissions/selected-actions'], - setCustomLabelsForSelfHostedRunnerForEnterprise: [ - 'PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels' - ], - setGithubActionsPermissionsEnterprise: ['PUT /enterprises/{enterprise}/actions/permissions'], - setSelectedOrganizationsEnabledGithubActionsEnterprise: [ - 'PUT /enterprises/{enterprise}/actions/permissions/organizations' - ] - }, - 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}'] - }, - 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'], - addLabels: ['POST /repos/{owner}/{repo}/issues/{issue_number}/labels'], - checkUserCanBeAssigned: ['GET /repos/{owner}/{repo}/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}'], - 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'], - 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'], - 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'], - removeLabel: ['DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}'], - 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'], - getOctocat: ['GET /octocat'], - getZen: ['GET /zen'], - root: ['GET /'] - }, - migrations: { - cancelImport: ['DELETE /repos/{owner}/{repo}/import'], - 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'], - getCommitAuthors: ['GET /repos/{owner}/{repo}/import/authors'], - getImportStatus: ['GET /repos/{owner}/{repo}/import'], - getLargeFiles: ['GET /repos/{owner}/{repo}/import/large_files'], - 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'] - } - ], - mapCommitAuthor: ['PATCH /repos/{owner}/{repo}/import/authors/{author_id}'], - setLfsPreference: ['PATCH /repos/{owner}/{repo}/import/lfs'], - startForAuthenticatedUser: ['POST /user/migrations'], - startForOrg: ['POST /orgs/{org}/migrations'], - startImport: ['PUT /repos/{owner}/{repo}/import'], - unlockRepoForAuthenticatedUser: ['DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock'], - unlockRepoForOrg: ['DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock'], - updateImport: ['PATCH /repos/{owner}/{repo}/import'] - }, - orgs: { - 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}'], - createInvitation: ['POST /orgs/{org}/invitations'], - createWebhook: ['POST /orgs/{org}/hooks'], - deleteWebhook: ['DELETE /orgs/{org}/hooks/{hook_id}'], - get: ['GET /orgs/{org}'], - getMembershipForAuthenticatedUser: ['GET /user/memberships/orgs/{org}'], - getMembershipForUser: ['GET /orgs/{org}/memberships/{username}'], - 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'], - listBlockedUsers: ['GET /orgs/{org}/blocks'], - listCustomRoles: ['GET /organizations/{organization_id}/custom_roles'], - listFailedInvitations: ['GET /orgs/{org}/failed_invitations'], - listForAuthenticatedUser: ['GET /user/orgs'], - listForUser: ['GET /users/{username}/orgs'], - listInvitationTeams: ['GET /orgs/{org}/invitations/{invitation_id}/teams'], - listMembers: ['GET /orgs/{org}/members'], - listMembershipsForAuthenticatedUser: ['GET /user/memberships/orgs'], - listOutsideCollaborators: ['GET /orgs/{org}/outside_collaborators'], - listPendingInvitations: ['GET /orgs/{org}/invitations'], - listPublicMembers: ['GET /orgs/{org}/public_members'], - 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}'], - setMembershipForUser: ['PUT /orgs/{org}/memberships/{username}'], - setPublicMembershipForAuthenticatedUser: ['PUT /orgs/{org}/public_members/{username}'], - unblockUser: ['DELETE /orgs/{org}/blocks/{username}'], - update: ['PATCH /orgs/{org}'], - updateMembershipForAuthenticatedUser: ['PATCH /user/memberships/orgs/{org}'], - 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}' - ], - 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' - ] - }, - projects: { - addCollaborator: ['PUT /projects/{project_id}/collaborators/{username}'], - createCard: ['POST /projects/columns/{column_id}/cards'], - createColumn: ['POST /projects/{project_id}/columns'], - createForAuthenticatedUser: ['POST /user/projects'], - createForOrg: ['POST /orgs/{org}/projects'], - createForRepo: ['POST /repos/{owner}/{repo}/projects'], - delete: ['DELETE /projects/{project_id}'], - deleteCard: ['DELETE /projects/columns/cards/{card_id}'], - deleteColumn: ['DELETE /projects/columns/{column_id}'], - get: ['GET /projects/{project_id}'], - getCard: ['GET /projects/columns/cards/{card_id}'], - getColumn: ['GET /projects/columns/{column_id}'], - getPermissionForUser: ['GET /projects/{project_id}/collaborators/{username}/permission'], - listCards: ['GET /projects/columns/{column_id}/cards'], - listCollaborators: ['GET /projects/{project_id}/collaborators'], - listColumns: ['GET /projects/{project_id}/columns'], - listForOrg: ['GET /orgs/{org}/projects'], - listForRepo: ['GET /repos/{owner}/{repo}/projects'], - listForUser: ['GET /users/{username}/projects'], - moveCard: ['POST /projects/columns/cards/{card_id}/moves'], - moveColumn: ['POST /projects/columns/{column_id}/moves'], - removeCollaborator: ['DELETE /projects/{project_id}/collaborators/{username}'], - update: ['PATCH /projects/{project_id}'], - updateCard: ['PATCH /projects/columns/cards/{card_id}'], - updateColumn: ['PATCH /projects/columns/{column_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' - } - ], - checkCollaborator: ['GET /repos/{owner}/{repo}/collaborators/{username}'], - 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}'], - 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'], - 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}'], - createPagesSite: ['POST /repos/{owner}/{repo}/pages'], - createRelease: ['POST /repos/{owner}/{repo}/releases'], - createTagProtection: ['POST /repos/{owner}/{repo}/tags/protection'], - createUsingTemplate: ['POST /repos/{template_owner}/{template_repo}/generate'], - createWebhook: ['POST /repos/{owner}/{repo}/hooks'], - 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}'], - deleteFile: ['DELETE /repos/{owner}/{repo}/contents/{path}'], - deleteInvitation: ['DELETE /repos/{owner}/{repo}/invitations/{invitation_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}'], - deleteTagProtection: ['DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}'], - deleteWebhook: ['DELETE /repos/{owner}/{repo}/hooks/{hook_id}'], - disableAutomatedSecurityFixes: ['DELETE /repos/{owner}/{repo}/automated-security-fixes'], - disableLfsForRepo: ['DELETE /repos/{owner}/{repo}/lfs'], - 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'], - enableLfsForRepo: ['PUT /repos/{owner}/{repo}/lfs'], - 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'], - 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'], - 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'], - getDeployKey: ['GET /repos/{owner}/{repo}/keys/{key_id}'], - getDeployment: ['GET /repos/{owner}/{repo}/deployments/{deployment_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'], - getPages: ['GET /repos/{owner}/{repo}/pages'], - getPagesBuild: ['GET /repos/{owner}/{repo}/pages/builds/{build_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}'], - 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}'], - 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'], - listDeployKeys: ['GET /repos/{owner}/{repo}/keys'], - 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'], - listTagProtection: ['GET /repos/{owner}/{repo}/tags/protection'], - 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}'], - updateInformationAboutPagesSite: ['PUT /repos/{owner}/{repo}/pages'], - updateInvitation: ['PATCH /repos/{owner}/{repo}/invitations/{invitation_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}'], - 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: { - getAlert: ['GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}'], - listAlertsForEnterprise: ['GET /enterprises/{enterprise}/secret-scanning/alerts'], - 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'], - updateAlert: ['PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}'] - }, - teams: { - addOrUpdateMembershipForUserInOrg: ['PUT /orgs/{org}/teams/{team_slug}/memberships/{username}'], - addOrUpdateProjectPermissionsInOrg: ['PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}'], - addOrUpdateRepoPermissionsInOrg: ['PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}'], - checkPermissionsForProjectInOrg: ['GET /orgs/{org}/teams/{team_slug}/projects/{project_id}'], - 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'], - listProjectsInOrg: ['GET /orgs/{org}/teams/{team_slug}/projects'], - listReposInOrg: ['GET /orgs/{org}/teams/{team_slug}/repos'], - removeMembershipForUserInOrg: ['DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}'], - removeProjectInOrg: ['DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}'], - 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'], - 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'], - 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}'], - follow: ['PUT /user/following/{username}'], - getAuthenticated: ['GET /user'], - 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}'], - list: ['GET /users'], - 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'], - 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 VERSION = '5.16.2'; - function endpointsToMethods(octokit2, endpointsMap) { - const newMethods = {}; - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url - }, - defaults - ); - if (!newMethods[scope]) { - newMethods[scope] = {}; - } - const scopeMethods = newMethods[scope]; - if (decorations) { - scopeMethods[methodName] = decorate(octokit2, scope, methodName, endpointDefaults, decorations); - continue; - } - scopeMethods[methodName] = octokit2.request.defaults(endpointDefaults); - } - } - return newMethods; + } 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 (typeof data === 'object' && data !== null && 'message' in data) { + const objectData = data; + const suffix = 'documentation_url' in objectData ? ` - ${objectData.documentation_url}` : ''; + return Array.isArray(objectData.errors) + ? `${objectData.message}: ${objectData.errors.map(v => JSON.stringify(v)).join(', ')}${suffix}` + : `${objectData.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)); } - function decorate(octokit2, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit2.request.defaults(defaults); - 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; - octokit2.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); - } - if (decorations.deprecated) { - octokit2.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) { - octokit2.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); + 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); + +// node_modules/@octokit/graphql/dist-bundle/index.js +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); } - function restEndpointMethods(octokit2) { - const api = endpointsToMethods(octokit2, Endpoints); - return { - rest: api - }; + } + 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, query, options) { + if (options) { + if (typeof query === 'string' && 'query' in options) { + return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); } - restEndpointMethods.VERSION = VERSION; - function legacyRestEndpointMethods(octokit2) { - const api = endpointsToMethods(octokit2, Endpoints); - return _objectSpread2( - _objectSpread2({}, api), - {}, - { - rest: api - } - ); + 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`)); } - legacyRestEndpointMethods.VERSION = VERSION; - exports2.legacyRestEndpointMethods = legacyRestEndpointMethods; - exports2.restEndpointMethods = restEndpointMethods; } -}); - -// node_modules/@octokit/plugin-paginate-rest/dist-node/index.js -var require_dist_node10 = __commonJS({ - 'node_modules/@octokit/plugin-paginate-rest/dist-node/index.js'(exports2) { - 'use strict'; - Object.defineProperty(exports2, '__esModule', { value: true }); - var VERSION = '2.21.3'; - function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - enumerableOnly && - (symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - })), - keys.push.apply(keys, symbols); - } - return keys; - } - function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - i % 2 - ? ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }) - : Object.getOwnPropertyDescriptors - ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) - : ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - return target; + const parsedOptions = typeof query === 'string' ? Object.assign({ query }, options) : query; + const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; + 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]; } - return obj; + throw new GraphqlResponseError(requestOptions, headers, response.data); } - function normalizePaginatedListResponse(response) { - if (!response.data) { - return _objectSpread2( - _objectSpread2({}, response), - {}, - { - data: [] - } + return response.data.data; + }); +} +function withDefaults3(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); + const newApi = (query, options) => { + return graphql(newRequest, query, 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' + }); +} + +// node_modules/@octokit/auth-token/dist-bundle/index.js +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) + }); +}; + +// node_modules/@octokit/core/dist-src/version.js +var VERSION4 = '7.0.6'; + +// node_modules/@octokit/core/dist-src/index.js +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(defaults2) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults2 === 'function') { + super(defaults2(options)); + return; + } + super( + Object.assign( + {}, + defaults2, + options, + options.userAgent && defaults2.userAgent + ? { + userAgent: `${options.userAgent} ${defaults2.userAgent}` + } + : null + ) ); } - const responseNeedsNormalization = 'total_count' 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; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - 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; - return response; + }; + 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 hook2 = 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: hook2.bind(null, 'request') + }), + mediaType: { + previews: [], + format: '' + } + }; + requestDefaults.headers['user-agent'] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; } - function iterator(octokit2, route, parameters) { - const options = - typeof route === 'function' ? route.endpoint(parameters) : octokit2.request.endpoint(route, parameters); - const requestMethod = typeof route === 'function' ? route : octokit2.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]; - return { - value: normalizedResponse - }; - } catch (error) { - if (error.status !== 409) throw error; - url = ''; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; - } - } - }) - }; + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; } - function paginate(octokit2, route, parameters, mapFn) { - if (typeof parameters === 'function') { - mapFn = parameters; - parameters = void 0; + 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 = hook2; + if (!options.authStrategy) { + if (!options.auth) { + this.auth = async () => ({ + type: 'unauthenticated' + }); + } else { + const auth2 = createTokenAuth(options.auth); + hook2.wrap('request', auth2.hook); + this.auth = auth2; } - return gather(octokit2, [], iterator(octokit2, route, parameters)[Symbol.asyncIterator](), mapFn); + } else { + const { authStrategy, ...otherOptions } = options; + const auth2 = 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 + ) + ); + hook2.wrap('request', auth2.hook); + this.auth = auth2; } - function gather(octokit2, 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(octokit2, results, iterator2, mapFn); - }); + const classConstructor = this.constructor; + for (let i = 0; i < classConstructor.plugins.length; ++i) { + Object.assign(this, classConstructor.plugins[i](this, options)); } - var composePaginateRest = Object.assign(paginate, { - iterator - }); - var paginatingEndpoints = [ - 'GET /app/hook/deliveries', - 'GET /app/installations', - 'GET /applications/grants', - 'GET /authorizations', - 'GET /enterprises/{enterprise}/actions/permissions/organizations', - 'GET /enterprises/{enterprise}/actions/runner-groups', - 'GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations', - 'GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners', - 'GET /enterprises/{enterprise}/actions/runners', - 'GET /enterprises/{enterprise}/audit-log', - 'GET /enterprises/{enterprise}/secret-scanning/alerts', - 'GET /enterprises/{enterprise}/settings/billing/advanced-security', - 'GET /events', - 'GET /gists', - 'GET /gists/public', - 'GET /gists/starred', - 'GET /gists/{gist_id}/comments', - 'GET /gists/{gist_id}/commits', - 'GET /gists/{gist_id}/forks', - 'GET /installation/repositories', - 'GET /issues', - 'GET /licenses', - 'GET /marketplace_listing/plans', - 'GET /marketplace_listing/plans/{plan_id}/accounts', - 'GET /marketplace_listing/stubbed/plans', - 'GET /marketplace_listing/stubbed/plans/{plan_id}/accounts', - 'GET /networks/{owner}/{repo}/events', - 'GET /notifications', - 'GET /organizations', - 'GET /orgs/{org}/actions/cache/usage-by-repository', - 'GET /orgs/{org}/actions/permissions/repositories', - 'GET /orgs/{org}/actions/runner-groups', - 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories', - 'GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners', - 'GET /orgs/{org}/actions/runners', - 'GET /orgs/{org}/actions/secrets', - 'GET /orgs/{org}/actions/secrets/{secret_name}/repositories', - 'GET /orgs/{org}/audit-log', - 'GET /orgs/{org}/blocks', - 'GET /orgs/{org}/code-scanning/alerts', - 'GET /orgs/{org}/codespaces', - 'GET /orgs/{org}/credential-authorizations', - 'GET /orgs/{org}/dependabot/secrets', - 'GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories', - 'GET /orgs/{org}/events', - 'GET /orgs/{org}/external-groups', - 'GET /orgs/{org}/failed_invitations', - 'GET /orgs/{org}/hooks', - 'GET /orgs/{org}/hooks/{hook_id}/deliveries', - 'GET /orgs/{org}/installations', - 'GET /orgs/{org}/invitations', - 'GET /orgs/{org}/invitations/{invitation_id}/teams', - 'GET /orgs/{org}/issues', - 'GET /orgs/{org}/members', - 'GET /orgs/{org}/migrations', - 'GET /orgs/{org}/migrations/{migration_id}/repositories', - 'GET /orgs/{org}/outside_collaborators', - 'GET /orgs/{org}/packages', - 'GET /orgs/{org}/packages/{package_type}/{package_name}/versions', - 'GET /orgs/{org}/projects', - 'GET /orgs/{org}/public_members', - 'GET /orgs/{org}/repos', - 'GET /orgs/{org}/secret-scanning/alerts', - 'GET /orgs/{org}/settings/billing/advanced-security', - 'GET /orgs/{org}/team-sync/groups', - 'GET /orgs/{org}/teams', - 'GET /orgs/{org}/teams/{team_slug}/discussions', - 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments', - 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions', - 'GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions', - 'GET /orgs/{org}/teams/{team_slug}/invitations', - 'GET /orgs/{org}/teams/{team_slug}/members', - 'GET /orgs/{org}/teams/{team_slug}/projects', - 'GET /orgs/{org}/teams/{team_slug}/repos', - 'GET /orgs/{org}/teams/{team_slug}/teams', - 'GET /projects/columns/{column_id}/cards', - 'GET /projects/{project_id}/collaborators', - 'GET /projects/{project_id}/columns', - 'GET /repos/{owner}/{repo}/actions/artifacts', - 'GET /repos/{owner}/{repo}/actions/caches', - 'GET /repos/{owner}/{repo}/actions/runners', - 'GET /repos/{owner}/{repo}/actions/runs', - 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', - 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs', - 'GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs', - 'GET /repos/{owner}/{repo}/actions/secrets', - 'GET /repos/{owner}/{repo}/actions/workflows', - 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs', - 'GET /repos/{owner}/{repo}/assignees', - 'GET /repos/{owner}/{repo}/branches', - 'GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations', - 'GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs', - 'GET /repos/{owner}/{repo}/code-scanning/alerts', + } + // assigned during constructor + request; + graphql; + log; + hook; + // TODO: type `octokit.auth` based on passed options.authStrategy + auth; +}; + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js +var VERSION5 = '17.0.0'; + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js +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', - 'GET /repos/{owner}/{repo}/code-scanning/analyses', - 'GET /repos/{owner}/{repo}/codespaces', - 'GET /repos/{owner}/{repo}/codespaces/devcontainers', - 'GET /repos/{owner}/{repo}/codespaces/secrets', - 'GET /repos/{owner}/{repo}/collaborators', - 'GET /repos/{owner}/{repo}/comments', - 'GET /repos/{owner}/{repo}/comments/{comment_id}/reactions', - 'GET /repos/{owner}/{repo}/commits', - 'GET /repos/{owner}/{repo}/commits/{commit_sha}/comments', - 'GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls', - 'GET /repos/{owner}/{repo}/commits/{ref}/check-runs', - 'GET /repos/{owner}/{repo}/commits/{ref}/check-suites', - 'GET /repos/{owner}/{repo}/commits/{ref}/status', - 'GET /repos/{owner}/{repo}/commits/{ref}/statuses', - 'GET /repos/{owner}/{repo}/contributors', - 'GET /repos/{owner}/{repo}/dependabot/secrets', - 'GET /repos/{owner}/{repo}/deployments', - 'GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses', - 'GET /repos/{owner}/{repo}/environments', - 'GET /repos/{owner}/{repo}/events', - 'GET /repos/{owner}/{repo}/forks', - 'GET /repos/{owner}/{repo}/git/matching-refs/{ref}', - 'GET /repos/{owner}/{repo}/hooks', - 'GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries', - 'GET /repos/{owner}/{repo}/invitations', - 'GET /repos/{owner}/{repo}/issues', - 'GET /repos/{owner}/{repo}/issues/comments', - 'GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions', - 'GET /repos/{owner}/{repo}/issues/events', - 'GET /repos/{owner}/{repo}/issues/{issue_number}/comments', - 'GET /repos/{owner}/{repo}/issues/{issue_number}/events', - 'GET /repos/{owner}/{repo}/issues/{issue_number}/labels', - 'GET /repos/{owner}/{repo}/issues/{issue_number}/reactions', - 'GET /repos/{owner}/{repo}/issues/{issue_number}/timeline', - 'GET /repos/{owner}/{repo}/keys', - 'GET /repos/{owner}/{repo}/labels', - 'GET /repos/{owner}/{repo}/milestones', - 'GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels', - 'GET /repos/{owner}/{repo}/notifications', - 'GET /repos/{owner}/{repo}/pages/builds', - 'GET /repos/{owner}/{repo}/projects', - 'GET /repos/{owner}/{repo}/pulls', - 'GET /repos/{owner}/{repo}/pulls/comments', - 'GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions', - 'GET /repos/{owner}/{repo}/pulls/{pull_number}/comments', - 'GET /repos/{owner}/{repo}/pulls/{pull_number}/commits', - 'GET /repos/{owner}/{repo}/pulls/{pull_number}/files', - 'GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers', - 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews', - 'GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments', - 'GET /repos/{owner}/{repo}/releases', - 'GET /repos/{owner}/{repo}/releases/{release_id}/assets', - 'GET /repos/{owner}/{repo}/releases/{release_id}/reactions', - 'GET /repos/{owner}/{repo}/secret-scanning/alerts', - 'GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations', - 'GET /repos/{owner}/{repo}/stargazers', - 'GET /repos/{owner}/{repo}/subscribers', - 'GET /repos/{owner}/{repo}/tags', - 'GET /repos/{owner}/{repo}/teams', - 'GET /repos/{owner}/{repo}/topics', - 'GET /repositories', - 'GET /repositories/{repository_id}/environments/{environment_name}/secrets', - 'GET /search/code', - 'GET /search/commits', - 'GET /search/issues', - 'GET /search/labels', - 'GET /search/repositories', - 'GET /search/topics', - 'GET /search/users', - 'GET /teams/{team_id}/discussions', - 'GET /teams/{team_id}/discussions/{discussion_number}/comments', - 'GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions', - 'GET /teams/{team_id}/discussions/{discussion_number}/reactions', - 'GET /teams/{team_id}/invitations', - 'GET /teams/{team_id}/members', - 'GET /teams/{team_id}/projects', - 'GET /teams/{team_id}/repos', - 'GET /teams/{team_id}/teams', - 'GET /user/blocks', - 'GET /user/codespaces', - 'GET /user/codespaces/secrets', - 'GET /user/emails', - 'GET /user/followers', - 'GET /user/following', - 'GET /user/gpg_keys', - 'GET /user/installations', - 'GET /user/installations/{installation_id}/repositories', - 'GET /user/issues', - 'GET /user/keys', - 'GET /user/marketplace_purchases', - 'GET /user/marketplace_purchases/stubbed', - 'GET /user/memberships/orgs', - 'GET /user/migrations', + {}, + { 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', - 'GET /user/orgs', - 'GET /user/packages', + {}, + { 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', - 'GET /user/repos', - 'GET /user/repository_invitations', - 'GET /user/starred', - 'GET /user/subscriptions', - 'GET /user/teams', - 'GET /users', - 'GET /users/{username}/events', - 'GET /users/{username}/events/orgs/{org}', - 'GET /users/{username}/events/public', - 'GET /users/{username}/followers', - 'GET /users/{username}/following', - 'GET /users/{username}/gists', - 'GET /users/{username}/gpg_keys', - 'GET /users/{username}/keys', - 'GET /users/{username}/orgs', - 'GET /users/{username}/packages', - 'GET /users/{username}/projects', - 'GET /users/{username}/received_events', - 'GET /users/{username}/received_events/public', - 'GET /users/{username}/repos', - 'GET /users/{username}/starred', - 'GET /users/{username}/subscriptions' - ]; - function isPaginatingEndpoint(arg) { - if (typeof arg === 'string') { - return paginatingEndpoints.includes(arg); - } else { - return false; - } + {}, + { 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; + +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint2] of Object.entries(endpoints)) { + const [route, defaults2, decorations] = endpoint2; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults2 + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); } - function paginateRest(octokit2) { - return { - paginate: Object.assign(paginate.bind(null, octokit2), { - iterator: iterator.bind(null, octokit2) - }) - }; + 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: octokit2, 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(octokit2, scope, methodName, endpointDefaults, decorations); + } else { + cache[methodName] = octokit2.request.defaults(endpointDefaults); } - paginateRest.VERSION = VERSION; - exports2.composePaginateRest = composePaginateRest; - exports2.isPaginatingEndpoint = isPaginatingEndpoint; - exports2.paginateRest = paginateRest; - exports2.paginatingEndpoints = paginatingEndpoints; + return cache[methodName]; } -}); - -// node_modules/@actions/github/lib/utils.js -var require_utils4 = __commonJS({ - 'node_modules/@actions/github/lib/utils.js'(exports2) { - 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); +}; +function endpointsToMethods(octokit2) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit: octokit2, scope, cache: {} }, handler); + } + return newMethods; +} +function decorate(octokit2, scope, methodName, defaults2, decorations) { + const requestWithDefaults = octokit2.request.defaults(defaults2); + 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; + octokit2.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + if (decorations.deprecated) { + octokit2.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) { + octokit2.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + delete options2[name]; } - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getOctokitOptions = exports2.GitHub = exports2.defaults = exports2.context = void 0; - var Context = __importStar(require_context()); - var Utils = __importStar(require_utils2()); - var core_1 = require_dist_node8(); - var plugin_rest_endpoint_methods_1 = require_dist_node9(); - var plugin_paginate_rest_1 = require_dist_node10(); - exports2.context = new Context.Context(); - var baseUrl = Utils.getApiBaseUrl(); - exports2.defaults = { - baseUrl, - request: { - agent: Utils.getProxyAgent(baseUrl) - } - }; - exports2.GitHub = core_1.Octokit.plugin( - plugin_rest_endpoint_methods_1.restEndpointMethods, - plugin_paginate_rest_1.paginateRest - ).defaults(exports2.defaults); - function getOctokitOptions(token, options) { - const opts = Object.assign({}, options || {}); - const auth = Utils.getAuthString(token, opts); - if (auth) { - opts.auth = auth; - } - return opts; - } - exports2.getOctokitOptions = getOctokitOptions; + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); } -}); + return Object.assign(withDecorations, requestWithDefaults); +} -// node_modules/@actions/github/lib/github.js -var require_github = __commonJS({ - 'node_modules/@actions/github/lib/github.js'(exports2) { - 'use strict'; - var __createBinding = - (exports2 && exports2.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - } - }); - } - : function (o, m, k, k2) { - if (k2 === void 0) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (exports2 && exports2.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, 'default', { enumerable: true, value: v }); +// node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js +function restEndpointMethods(octokit2) { + const api = endpointsToMethods(octokit2); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION5; +function legacyRestEndpointMethods(octokit2) { + const api = endpointsToMethods(octokit2); + return { + ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION5; + +// node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js +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(octokit2, route, parameters) { + const options = typeof route === 'function' ? route.endpoint(parameters) : octokit2.request.endpoint(route, parameters); + const requestMethod = typeof route === 'function' ? route : octokit2.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 params = parsedUrl.searchParams; + const page = parseInt(params.get('page') || '1', 10); + const per_page = parseInt(params.get('per_page') || '250', 10); + if (page * per_page < normalizedResponse.data.total_commits) { + params.set('page', String(page + 1)); + url = parsedUrl.toString(); + } } - : function (o, v) { - o['default'] = v; - }); - var __importStar = - (exports2 && exports2.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== 'default' && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + return { value: normalizedResponse }; + } catch (error2) { + if (error2.status !== 409) throw error2; + url = ''; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; } - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports2, '__esModule', { value: true }); - exports2.getOctokit = exports2.context = void 0; - var Context = __importStar(require_context()); - var utils_1 = require_utils4(); - exports2.context = new Context.Context(); - function getOctokit(token, options, ...additionalPlugins) { - const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); - return new GitHubWithPlugins(utils_1.getOctokitOptions(token, options)); - } - exports2.getOctokit = getOctokit; + } + }) + }; +} +function paginate(octokit2, route, parameters, mapFn) { + if (typeof parameters === 'function') { + mapFn = parameters; + parameters = void 0; } + return gather(octokit2, [], iterator(octokit2, route, parameters)[Symbol.asyncIterator](), mapFn); +} +function gather(octokit2, 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(octokit2, results, iterator2, mapFn); + }); +} +var composePaginateRest = Object.assign(paginate, { + iterator }); +function paginateRest(octokit2) { + return { + paginate: Object.assign(paginate.bind(null, octokit2), { + iterator: iterator.bind(null, octokit2) + }) + }; +} +paginateRest.VERSION = VERSION6; + +// node_modules/@actions/github/lib/utils.js +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); +function getOctokitOptions(token, options) { + const opts = Object.assign({}, options || {}); + const auth2 = getAuthString(token, opts); + if (auth2) { + opts.auth = auth2; + } + const userAgent2 = getUserAgentWithOrchestrationId(opts.userAgent); + if (userAgent2) { + opts.userAgent = userAgent2; + } + return opts; +} + +// node_modules/@actions/github/lib/github.js +var context2 = new Context(); +function getOctokit(token, options, ...additionalPlugins) { + const GitHubWithPlugins = GitHub.plugin(...additionalPlugins); + return new GitHubWithPlugins(getOctokitOptions(token, options)); +} // src/main.js -var core = require_core(); -var github = require_github(); -var fs = require('fs'); -var path = require('path'); +var import_fs3 = __toESM(require('fs'), 1); +var path = __toESM(require('path'), 1); var requiredArgOptions = { required: true, trimWhitespace: true }; -var ghToken = core.getInput('github-token', requiredArgOptions); -var summaryFile = core.getInput('summary-file', requiredArgOptions); -var reportName = core.getInput('report-name'); -var checkName = core.getInput('check-name'); -var shouldCreateStatusCheck = core.getBooleanInput('create-status-check'); -var shouldCreatePRComment = core.getBooleanInput('create-pr-comment'); -var updateCommentIfOneExists = core.getBooleanInput('update-comment-if-one-exists'); -var ignoreFailures = core.getBooleanInput('ignore-threshold-failures'); -var lineThreshold = parseInt(core.getInput('line-threshold')); -var branchThreshold = parseInt(core.getInput('branch-threshold')); -var octokit = github.getOctokit(ghToken); -var owner = github.context.repo.owner; -var repo = github.context.repo.repo; +var ghToken = getInput('github-token', requiredArgOptions); +var summaryFile = getInput('summary-file', requiredArgOptions); +var reportName = getInput('report-name'); +var checkName = getInput('check-name'); +var shouldCreateStatusCheck = getBooleanInput('create-status-check'); +var shouldCreatePRComment = getBooleanInput('create-pr-comment'); +var updateCommentIfOneExists = getBooleanInput('update-comment-if-one-exists'); +var ignoreFailures = getBooleanInput('ignore-threshold-failures'); +var lineThreshold = parseInt(getInput('line-threshold')); +var branchThreshold = parseInt(getInput('branch-threshold')); +var octokit = getOctokit(ghToken); +var owner = context2.repo.owner; +var repo = context2.repo.repo; var jobAndStep = `${process.env.GITHUB_JOB}_${process.env.GITHUB_ACTION}`; -var commentIdentifier = core.getInput('update-comment-key') || jobAndStep; +var commentIdentifier = getInput('update-comment-key') || jobAndStep; function createResultsFile(results, jobAndStep2) { const resultsFileName = `coverage-results-${jobAndStep2}.md`; - core.info(` + info(` Writing results to ${resultsFileName}`); let resultsFilePath = null; - fs.writeFile(resultsFileName, results, err => { + import_fs3.default.writeFile(resultsFileName, results, err => { if (err) { - core.info(`Error writing results to file. Error: ${err}`); + info(`Error writing results to file. Error: ${err}`); } else { - core.info('Successfully created results file.'); - core.info(`File: ${resultsFileName}`); + info('Successfully created results file.'); + info(`File: ${resultsFileName}`); } }); resultsFilePath = path.resolve(resultsFileName); @@ -16634,42 +30268,42 @@ async function lookForExistingComment(octokit2, markdownPrefix) { .paginate(octokit2.rest.issues.listComments, { owner, repo, - issue_number: github.context.payload.pull_request.number + issue_number: context2.payload.pull_request.number }) .then(comments => { if (comments.length === 0) { - core.info('There are no comments on the PR. A new comment will be created.'); + info('There are no comments on the PR. A new comment will be created.'); } else { const existingComment = comments.find(c => c.body.startsWith(markdownPrefix)); if (existingComment) { - core.info(`An existing code coverage summary comment (${existingComment.id}) was found and will be updated.`); + info(`An existing code coverage summary comment (${existingComment.id}) was found and will be updated.`); commentId = existingComment.id; } else { - core.info('No comments were found. A new comment will be created.'); + info('No comments were found. A new comment will be created.'); } } }) - .catch(error => { - core.info(`Failed to list PR comments. Error code: ${error.message}. A new comment will be created.`); + .catch(error2 => { + info(`Failed to list PR comments. Error code: ${error2.message}. A new comment will be created.`); }); - core.info(`Finished getting comments for PR #${github.context.payload.pull_request.number}.`); + info(`Finished getting comments for PR #${context2.payload.pull_request.number}.`); return commentId; } async function createPrComment(markdown, updateCommentIfOneExists2, commentIdentifier2) { - if (github.context.eventName != 'pull_request') { - core.info('This event was not triggered by a pull_request. No comment will be created or updated.'); + if (context2.eventName != 'pull_request') { + info('This event was not triggered by a pull_request. No comment will be created or updated.'); return; } const markdownPrefix = ``; - core.info(`The markdown prefix will be: '${markdownPrefix}'`); + info(`The markdown prefix will be: '${markdownPrefix}'`); let commentIdToReturn; let existingCommentId = null; if (updateCommentIfOneExists2) { - core.info('Checking for existing comment on PR....'); + info('Checking for existing comment on PR....'); existingCommentId = await lookForExistingComment(octokit, markdownPrefix); } if (existingCommentId) { - core.info(`Updating existing PR #${existingCommentId} comment...`); + info(`Updating existing PR #${existingCommentId} comment...`); commentIdToReturn = existingCommentId; await octokit.rest.issues .updateComment({ @@ -16680,49 +30314,48 @@ ${markdown}`, comment_id: existingCommentId }) .then(response => { - core.info(`PR comment was updated. ID: ${response.data.id}.`); + info(`PR comment was updated. ID: ${response.data.id}.`); }) - .catch(error => { - core.setFailed(`An error occurred trying to update the PR comment: ${error.message}`); + .catch(error2 => { + setFailed(`An error occurred trying to update the PR comment: ${error2.message}`); }); } else { - core.info(`Creating a new PR comment...`); + info(`Creating a new PR comment...`); await octokit.rest.issues .createComment({ owner, repo, body: `${markdownPrefix} ${markdown}`, - issue_number: github.context.payload.pull_request.number + issue_number: context2.payload.pull_request.number }) .then(response => { - core.info(`PR comment was created. ID: ${response.data.id}.`); + info(`PR comment was created. ID: ${response.data.id}.`); commentIdToReturn = response.data.id; }) - .catch(error => { - core.setFailed(`An error occurred trying to create the PR comment: ${error.message}`); + .catch(error2 => { + setFailed(`An error occurred trying to create the PR comment: ${error2.message}`); }); } return commentIdToReturn; } async function createStatusCheck(reportName2, checkName2, markdown, conclusion) { - core.info(` + info(` Creating Status check for ${reportName2}...`); - const git_sha = - github.context.eventName === 'pull_request' ? github.context.payload.pull_request.head.sha : github.context.sha; + const git_sha = context2.eventName === 'pull_request' ? context2.payload.pull_request.head.sha : context2.sha; const name = `status check - ${checkName2}`; const status = 'completed'; - const checkTime = new Date().toUTCString(); - const summary = `This run completed at \`${checkTime}\``; + const checkTime = /* @__PURE__ */ new Date().toUTCString(); + const summary2 = `This run completed at \`${checkTime}\``; const propMessage = ` Name: ${name} GitSha: ${git_sha} - Event: ${github.context.eventName} + Event: ${context2.eventName} Status: ${status} Conclusion: ${conclusion} Check time: ${checkTime} Title: ${reportName2} - Summary: ${summary}`; - core.info(propMessage); + Summary: ${summary2}`; + info(propMessage); let statusCheckId; await octokit.rest.checks .create({ @@ -16734,16 +30367,16 @@ Creating Status check for ${reportName2}...`); conclusion, output: { title: reportName2, - summary, + summary: summary2, text: markdown } }) .then(response => { - core.info(`Created check: '${response.data.name}' with id '${response.data.id}'`); + info(`Created check: '${response.data.name}' with id '${response.data.id}'`); statusCheckId = response.data.id; }) - .catch(error => { - core.setFailed(`An error occurred trying to create the status check: ${error.message}`); + .catch(error2 => { + setFailed(`An error occurred trying to create the status check: ${error2.message}`); }); return statusCheckId; } @@ -16803,52 +30436,52 @@ function getIndividualCoverageInfo(summaryInputData, coverageType, threshold, ig return infoToReturn; } function getCoverageInfo(summaryInputData, lineThreshold2, branchThreshold2, ignoreFailures2) { - const info = { + const info2 = { statusCheckConclusion: 'success', coverageOutcome: 'Passed', line: getIndividualCoverageInfo(summaryInputData, 'line', lineThreshold2, ignoreFailures2), branch: getIndividualCoverageInfo(summaryInputData, 'branch', branchThreshold2, ignoreFailures2) }; - if (info.branch.conclusion == 'failure' || info.line.conclusion == 'failure') { - info.statusCheckConclusion = 'failure'; - info.coverageOutcome = 'Failed'; - } else if (info.branch.conclusion == 'neutral' || info.line.conclusion == 'neutral') { - info.statusCheckConclusion = 'neutral'; - info.coverageOutcome = 'Passed'; + if (info2.branch.conclusion == 'failure' || info2.line.conclusion == 'failure') { + info2.statusCheckConclusion = 'failure'; + info2.coverageOutcome = 'Failed'; + } else if (info2.branch.conclusion == 'neutral' || info2.line.conclusion == 'neutral') { + info2.statusCheckConclusion = 'neutral'; + info2.coverageOutcome = 'Passed'; } - return info; + return info2; } async function run() { try { let summaryInput; - if (fs.existsSync(summaryFile)) { - summaryInput = fs.readFileSync(summaryFile, 'utf8'); + if (import_fs3.default.existsSync(summaryFile)) { + summaryInput = import_fs3.default.readFileSync(summaryFile, 'utf8'); if (!summaryInput) { - core.info('The summary file does not contain any data. No status check or pr comment will be created.'); - core.setOutput('coverage-outcome', 'Failed'); + info('The summary file does not contain any data. No status check or pr comment will be created.'); + setOutput('coverage-outcome', 'Failed'); return; } } else { - core.setFailed(`The summary file '${summaryFile}' does not exist. No status check or PR comment will be created.`); - core.setOutput('coverage-outcome', 'Failed'); + setFailed(`The summary file '${summaryFile}' does not exist. No status check or PR comment will be created.`); + setOutput('coverage-outcome', 'Failed'); return; } const coverageInfo = getCoverageInfo(summaryInput, lineThreshold, branchThreshold, ignoreFailures); - core.setOutput('coverage-outcome', coverageInfo.coverageOutcome); + setOutput('coverage-outcome', coverageInfo.coverageOutcome); const markdownResults = getMarkdownFromSummary(summaryInput, reportName, coverageInfo); if (shouldCreateStatusCheck) { const checkId = await createStatusCheck(reportName, checkName, markdownResults, coverageInfo.statusCheckConclusion); - core.setOutput('status-check-id', checkId); + setOutput('status-check-id', checkId); } if (shouldCreatePRComment) { - core.info(` + info(` Creating a PR comment with length ${markdownResults.length}...`); const characterLimit = 65535; let truncated = false; let mdForPrComment = markdownResults; if (mdForPrComment.length > characterLimit) { const message = `Truncating markdown data due to character limit exceeded for GitHub API. Markdown data length: ${mdForPrComment.length}/${characterLimit}`; - core.info(message); + info(message); truncated = true; const truncatedMessage = `> [!Important] > Coverage results truncated due to character limit. See full report in output. @@ -16856,21 +30489,37 @@ Creating a PR comment with length ${markdownResults.length}...`); mdForPrComment = `${truncatedMessage} ${mdForPrComment.substring(0, characterLimit - 100)}`; } - core.setOutput('coverage-results-truncated', truncated); + setOutput('coverage-results-truncated', truncated); const commentId = await createPrComment(mdForPrComment, updateCommentIfOneExists, commentIdentifier); - core.setOutput('pr-comment-id', commentId); + setOutput('pr-comment-id', commentId); } const resultsFilePath = createResultsFile(markdownResults, jobAndStep); - core.setOutput('coverage-results-file-path', resultsFilePath); - } catch (error) { - core.setFailed(`An error occurred processing the summary file: ${error.message}`); - core.setOutput('coverage-outcome', 'Failed'); + setOutput('coverage-results-file-path', resultsFilePath); + } catch (error2) { + setFailed(`An error occurred processing the summary file: ${error2.message}`); + setOutput('coverage-outcome', 'Failed'); } } run(); -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT 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 *) +*/ diff --git a/package-lock.json b/package-lock.json index 2d2facf..c8274b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,162 +9,704 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^5.1.1" + "@actions/core": "^3.0.1", + "@actions/github": "^9.1.1" }, "devDependencies": { - "esbuild": "^0.12.8", + "esbuild": "^0.28.1", "install": "^0.13.0", - "prettier": "^2.3.0" + "prettier": "^3.9.4" } }, "node_modules/@actions/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", - "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.1.tgz", + "integrity": "sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==", + "license": "MIT", + "dependencies": { + "@actions/exec": "^3.0.0", + "@actions/http-client": "^4.0.0" + } + }, + "node_modules/@actions/exec": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-3.0.0.tgz", + "integrity": "sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==", + "license": "MIT", "dependencies": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" + "@actions/io": "^3.0.2" } }, "node_modules/@actions/github": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-9.1.1.tgz", + "integrity": "sha512-tL5JbYOBZHc0ngEnCsaDcryUizIUIlQyIMwy1Wkx93H5HzbBJ7TbiPx2PnFjBwZW0Vh05JmfFZhecE6gglYegA==", + "license": "MIT", "dependencies": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + "@actions/http-client": "^3.0.2", + "@octokit/core": "^7.0.6", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-rest-endpoint-methods": "^17.0.0", + "@octokit/request": "^10.0.7", + "@octokit/request-error": "^7.1.0", + "undici": "^6.23.0" + } + }, + "node_modules/@actions/github/node_modules/@actions/http-client": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", + "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^6.23.0" } }, "node_modules/@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.1.tgz", + "integrity": "sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==", + "license": "MIT", "dependencies": { - "tunnel": "^0.0.6" + "tunnel": "^0.0.6", + "undici": "^6.23.0" + } + }, + "node_modules/@actions/io": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-3.0.2.tgz", + "integrity": "sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dependencies": { - "@octokit/types": "^6.0.3" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", + "license": "MIT", + "engines": { + "node": ">= 20" } }, "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", + "license": "MIT", "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", + "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" } }, "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", + "license": "MIT", "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" } }, "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.40.0" + "@octokit/types": "^16.0.0" + }, + "engines": { + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": ">=2" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", + "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" + "@octokit/types": "^16.0.0" + }, + "engines": { + "node": ">= 20" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": ">=6" } }, "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.11.tgz", + "integrity": "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q==", + "license": "MIT", "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^11.0.3", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "content-type": "^2.0.0", + "json-with-bigint": "^3.5.3", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" } }, "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", + "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", + "license": "MIT", "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^16.0.0" + }, + "engines": { + "node": ">= 20" } }, "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "@octokit/openapi-types": "^27.0.0" } }, "node_modules/before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", + "license": "Apache-2.0" }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + "node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/esbuild": { - "version": "0.12.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz", - "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" } }, "node_modules/install": { @@ -176,238 +718,423 @@ "node": ">= 0.10" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } + "node_modules/json-with-bigint": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz", + "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==", + "license": "MIT" }, "node_modules/prettier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", - "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.4.tgz", + "integrity": "sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==", "dev": true, + "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "node_modules/undici": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", + "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==", + "license": "MIT", + "engines": { + "node": ">=22.19.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "node_modules/universal-user-agent": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", + "license": "ISC" } }, "dependencies": { "@actions/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", - "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.1.tgz", + "integrity": "sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==", + "requires": { + "@actions/exec": "^3.0.0", + "@actions/http-client": "^4.0.0" + } + }, + "@actions/exec": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-3.0.0.tgz", + "integrity": "sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==", "requires": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" + "@actions/io": "^3.0.2" } }, "@actions/github": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-9.1.1.tgz", + "integrity": "sha512-tL5JbYOBZHc0ngEnCsaDcryUizIUIlQyIMwy1Wkx93H5HzbBJ7TbiPx2PnFjBwZW0Vh05JmfFZhecE6gglYegA==", "requires": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + "@actions/http-client": "^3.0.2", + "@octokit/core": "^7.0.6", + "@octokit/plugin-paginate-rest": "^14.0.0", + "@octokit/plugin-rest-endpoint-methods": "^17.0.0", + "@octokit/request": "^10.0.7", + "@octokit/request-error": "^7.1.0", + "undici": "^8.5.0" + }, + "dependencies": { + "@actions/http-client": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", + "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", + "requires": { + "tunnel": "^0.0.6", + "undici": "^8.5.0" + } + } } }, "@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.1.tgz", + "integrity": "sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==", "requires": { - "tunnel": "^0.0.6" + "tunnel": "^0.0.6", + "undici": "^8.5.0" } }, + "@actions/io": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-3.0.2.tgz", + "integrity": "sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==" + }, + "@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "dev": true, + "optional": true + }, + "@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "dev": true, + "optional": true + }, "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "requires": { - "@octokit/types": "^6.0.3" - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==" }, "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" } }, "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz", + "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==", "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" } }, "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" } }, "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==" }, "@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "requires": { - "@octokit/types": "^6.40.0" + "@octokit/types": "^16.0.0" } }, "@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz", + "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==", "requires": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" + "@octokit/types": "^16.0.0" } }, "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.11.tgz", + "integrity": "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q==", "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^11.0.3", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "content-type": "^2.0.0", + "json-with-bigint": "^3.5.8", + "universal-user-agent": "^7.0.2" } }, "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz", + "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==", "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^16.0.0" } }, "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz", + "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==", "requires": { - "@octokit/openapi-types": "^12.11.0" + "@octokit/openapi-types": "^27.0.0" } }, "before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==" }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + "content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==" }, "esbuild": { - "version": "0.12.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz", - "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==", - "dev": true + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } }, "install": { "version": "0.13.0", @@ -415,71 +1142,31 @@ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", "dev": true }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } + "json-with-bigint": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.8.tgz", + "integrity": "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==" }, "prettier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", - "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.4.tgz", + "integrity": "sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==", "dev": true }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "undici": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", + "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==" }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "universal-user-agent": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==" } } } diff --git a/package.json b/package.json index c914bae..72447cf 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "", "main": "index.js", + "type": "module", "scripts": { "build": "npm ci && esbuild ./src/main.js --bundle --platform=node --outfile=dist/index.js && npm run format && git add dist/*", "bundle": "esbuild ./src/main.js --bundle --platform=node --outfile=dist/index.js", @@ -13,12 +14,16 @@ "author": "wtw", "license": "ISC", "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^5.1.1" + "@actions/core": "^3.0.1", + "@actions/github": "^9.1.1" }, "devDependencies": { - "esbuild": "^0.12.8", + "esbuild": "^0.28.1", "install": "^0.13.0", - "prettier": "^2.3.0" + "prettier": "^3.9.4" + }, + "overrides": { + "undici": "^8.5.0", + "json-with-bigint": "^3.5.8" } } diff --git a/src/main.js b/src/main.js index a5da387..c5f7607 100644 --- a/src/main.js +++ b/src/main.js @@ -1,43 +1,43 @@ -const core = require('@actions/core'); -const github = require('@actions/github'); -const fs = require('fs'); -const path = require('path'); +import { getInput, getBooleanInput, info as _info, setFailed, setOutput } from '@actions/core'; +import { getOctokit, context } from '@actions/github'; +import fs from 'fs'; +import * as path from 'path'; const requiredArgOptions = { required: true, trimWhitespace: true }; -const ghToken = core.getInput('github-token', requiredArgOptions); -const summaryFile = core.getInput('summary-file', requiredArgOptions); -const reportName = core.getInput('report-name'); -const checkName = core.getInput('check-name'); -const shouldCreateStatusCheck = core.getBooleanInput('create-status-check'); -const shouldCreatePRComment = core.getBooleanInput('create-pr-comment'); -const updateCommentIfOneExists = core.getBooleanInput('update-comment-if-one-exists'); -const ignoreFailures = core.getBooleanInput('ignore-threshold-failures'); -const lineThreshold = parseInt(core.getInput('line-threshold')); -const branchThreshold = parseInt(core.getInput('branch-threshold')); - -const octokit = github.getOctokit(ghToken); -const owner = github.context.repo.owner; -const repo = github.context.repo.repo; +const ghToken = getInput('github-token', requiredArgOptions); +const summaryFile = getInput('summary-file', requiredArgOptions); +const reportName = getInput('report-name'); +const checkName = getInput('check-name'); +const shouldCreateStatusCheck = getBooleanInput('create-status-check'); +const shouldCreatePRComment = getBooleanInput('create-pr-comment'); +const updateCommentIfOneExists = getBooleanInput('update-comment-if-one-exists'); +const ignoreFailures = getBooleanInput('ignore-threshold-failures'); +const lineThreshold = parseInt(getInput('line-threshold')); +const branchThreshold = parseInt(getInput('branch-threshold')); + +const octokit = getOctokit(ghToken); +const owner = context.repo.owner; +const repo = context.repo.repo; const jobAndStep = `${process.env.GITHUB_JOB}_${process.env.GITHUB_ACTION}`; -const commentIdentifier = core.getInput('update-comment-key') || jobAndStep; +const commentIdentifier = getInput('update-comment-key') || jobAndStep; function createResultsFile(results, jobAndStep) { const resultsFileName = `coverage-results-${jobAndStep}.md`; - core.info(`\nWriting results to ${resultsFileName}`); + _info(`\nWriting results to ${resultsFileName}`); let resultsFilePath = null; fs.writeFile(resultsFileName, results, err => { if (err) { - core.info(`Error writing results to file. Error: ${err}`); + _info(`Error writing results to file. Error: ${err}`); } else { - core.info('Successfully created results file.'); - core.info(`File: ${resultsFileName}`); + _info('Successfully created results file.'); + _info(`File: ${resultsFileName}`); } }); resultsFilePath = path.resolve(resultsFileName); @@ -51,48 +51,48 @@ async function lookForExistingComment(octokit, markdownPrefix) { .paginate(octokit.rest.issues.listComments, { owner, repo, - issue_number: github.context.payload.pull_request.number + issue_number: context.payload.pull_request.number }) .then(comments => { if (comments.length === 0) { - core.info('There are no comments on the PR. A new comment will be created.'); + _info('There are no comments on the PR. A new comment will be created.'); } else { const existingComment = comments.find(c => c.body.startsWith(markdownPrefix)); if (existingComment) { - core.info(`An existing code coverage summary comment (${existingComment.id}) was found and will be updated.`); + _info(`An existing code coverage summary comment (${existingComment.id}) was found and will be updated.`); commentId = existingComment.id; } else { - core.info('No comments were found. A new comment will be created.'); + _info('No comments were found. A new comment will be created.'); } } }) .catch(error => { - core.info(`Failed to list PR comments. Error code: ${error.message}. A new comment will be created.`); + _info(`Failed to list PR comments. Error code: ${error.message}. A new comment will be created.`); }); - core.info(`Finished getting comments for PR #${github.context.payload.pull_request.number}.`); + _info(`Finished getting comments for PR #${context.payload.pull_request.number}.`); return commentId; } async function createPrComment(markdown, updateCommentIfOneExists, commentIdentifier) { - if (github.context.eventName != 'pull_request') { - core.info('This event was not triggered by a pull_request. No comment will be created or updated.'); + if (context.eventName != 'pull_request') { + _info('This event was not triggered by a pull_request. No comment will be created or updated.'); return; } const markdownPrefix = ``; - core.info(`The markdown prefix will be: '${markdownPrefix}'`); + _info(`The markdown prefix will be: '${markdownPrefix}'`); let commentIdToReturn; let existingCommentId = null; if (updateCommentIfOneExists) { - core.info('Checking for existing comment on PR....'); + _info('Checking for existing comment on PR....'); existingCommentId = await lookForExistingComment(octokit, markdownPrefix); } if (existingCommentId) { - core.info(`Updating existing PR #${existingCommentId} comment...`); + _info(`Updating existing PR #${existingCommentId} comment...`); commentIdToReturn = existingCommentId; await octokit.rest.issues @@ -103,36 +103,35 @@ async function createPrComment(markdown, updateCommentIfOneExists, commentIdenti comment_id: existingCommentId }) .then(response => { - core.info(`PR comment was updated. ID: ${response.data.id}.`); + _info(`PR comment was updated. ID: ${response.data.id}.`); }) .catch(error => { - core.setFailed(`An error occurred trying to update the PR comment: ${error.message}`); + setFailed(`An error occurred trying to update the PR comment: ${error.message}`); }); } else { - core.info(`Creating a new PR comment...`); + _info(`Creating a new PR comment...`); await octokit.rest.issues .createComment({ owner, repo, body: `${markdownPrefix}\n${markdown}`, - issue_number: github.context.payload.pull_request.number + issue_number: context.payload.pull_request.number }) .then(response => { - core.info(`PR comment was created. ID: ${response.data.id}.`); + _info(`PR comment was created. ID: ${response.data.id}.`); commentIdToReturn = response.data.id; }) .catch(error => { - core.setFailed(`An error occurred trying to create the PR comment: ${error.message}`); + setFailed(`An error occurred trying to create the PR comment: ${error.message}`); }); } return commentIdToReturn; } async function createStatusCheck(reportName, checkName, markdown, conclusion) { - core.info(`\nCreating Status check for ${reportName}...`); + _info(`\nCreating Status check for ${reportName}...`); - const git_sha = - github.context.eventName === 'pull_request' ? github.context.payload.pull_request.head.sha : github.context.sha; + const git_sha = context.eventName === 'pull_request' ? context.payload.pull_request.head.sha : context.sha; const name = `status check - ${checkName}`; const status = 'completed'; const checkTime = new Date().toUTCString(); @@ -140,13 +139,13 @@ async function createStatusCheck(reportName, checkName, markdown, conclusion) { const propMessage = ` Name: ${name} GitSha: ${git_sha} - Event: ${github.context.eventName} + Event: ${context.eventName} Status: ${status} Conclusion: ${conclusion} Check time: ${checkTime} Title: ${reportName} Summary: ${summary}`; - core.info(propMessage); + _info(propMessage); let statusCheckId; await octokit.rest.checks @@ -164,11 +163,11 @@ async function createStatusCheck(reportName, checkName, markdown, conclusion) { } }) .then(response => { - core.info(`Created check: '${response.data.name}' with id '${response.data.id}'`); + _info(`Created check: '${response.data.name}' with id '${response.data.id}'`); statusCheckId = response.data.id; }) .catch(error => { - core.setFailed(`An error occurred trying to create the status check: ${error.message}`); + setFailed(`An error occurred trying to create the status check: ${error.message}`); }); return statusCheckId; } @@ -262,13 +261,13 @@ async function run() { if (fs.existsSync(summaryFile)) { summaryInput = fs.readFileSync(summaryFile, 'utf8'); if (!summaryInput) { - core.info('The summary file does not contain any data. No status check or pr comment will be created.'); - core.setOutput('coverage-outcome', 'Failed'); + _info('The summary file does not contain any data. No status check or pr comment will be created.'); + setOutput('coverage-outcome', 'Failed'); return; } } else { - core.setFailed(`The summary file '${summaryFile}' does not exist. No status check or PR comment will be created.`); - core.setOutput('coverage-outcome', 'Failed'); + setFailed(`The summary file '${summaryFile}' does not exist. No status check or PR comment will be created.`); + setOutput('coverage-outcome', 'Failed'); return; } @@ -279,17 +278,17 @@ async function run() { // |actual < threshold & ignoreFailures | neutral | FAILED | Passed | // |actual >= threshold | success | PASSED | Passed | const coverageInfo = getCoverageInfo(summaryInput, lineThreshold, branchThreshold, ignoreFailures); - core.setOutput('coverage-outcome', coverageInfo.coverageOutcome); + setOutput('coverage-outcome', coverageInfo.coverageOutcome); const markdownResults = getMarkdownFromSummary(summaryInput, reportName, coverageInfo); if (shouldCreateStatusCheck) { const checkId = await createStatusCheck(reportName, checkName, markdownResults, coverageInfo.statusCheckConclusion); - core.setOutput('status-check-id', checkId); // This is mainly for testing purposes + setOutput('status-check-id', checkId); // This is mainly for testing purposes } if (shouldCreatePRComment) { - core.info(`\nCreating a PR comment with length ${markdownResults.length}...`); + _info(`\nCreating a PR comment with length ${markdownResults.length}...`); // GitHub API has a limit of 65535 characters for a comment so truncate the markup if we need to const characterLimit = 65535; @@ -298,24 +297,24 @@ async function run() { if (mdForPrComment.length > characterLimit) { const message = `Truncating markdown data due to character limit exceeded for GitHub API. Markdown data length: ${mdForPrComment.length}/${characterLimit}`; - core.info(message); + _info(message); truncated = true; const truncatedMessage = `> [!Important]\n> Coverage results truncated due to character limit. See full report in output.\n`; mdForPrComment = `${truncatedMessage}\n${mdForPrComment.substring(0, characterLimit - 100)}`; } - core.setOutput('coverage-results-truncated', truncated); + setOutput('coverage-results-truncated', truncated); const commentId = await createPrComment(mdForPrComment, updateCommentIfOneExists, commentIdentifier); - core.setOutput('pr-comment-id', commentId); // This is mainly for testing purposes + setOutput('pr-comment-id', commentId); // This is mainly for testing purposes } // Create this automatically to facilitate testing const resultsFilePath = createResultsFile(markdownResults, jobAndStep); - core.setOutput('coverage-results-file-path', resultsFilePath); + setOutput('coverage-results-file-path', resultsFilePath); } catch (error) { - core.setFailed(`An error occurred processing the summary file: ${error.message}`); - core.setOutput('coverage-outcome', 'Failed'); + setFailed(`An error occurred processing the summary file: ${error.message}`); + setOutput('coverage-outcome', 'Failed'); } } diff --git a/test/assert-pr-comment-exists.js b/test/assert-pr-comment-exists.cjs similarity index 100% rename from test/assert-pr-comment-exists.js rename to test/assert-pr-comment-exists.cjs diff --git a/test/assert-pr-comment-matches-expectations.js b/test/assert-pr-comment-matches-expectations.cjs similarity index 100% rename from test/assert-pr-comment-matches-expectations.js rename to test/assert-pr-comment-matches-expectations.cjs diff --git a/test/assert-status-check-exists.js b/test/assert-status-check-exists.cjs similarity index 100% rename from test/assert-status-check-exists.js rename to test/assert-status-check-exists.cjs diff --git a/test/assert-status-check-matches-expectations.js b/test/assert-status-check-matches-expectations.cjs similarity index 100% rename from test/assert-status-check-matches-expectations.js rename to test/assert-status-check-matches-expectations.cjs diff --git a/test/delete-pr-comment.js b/test/delete-pr-comment.cjs similarity index 100% rename from test/delete-pr-comment.js rename to test/delete-pr-comment.cjs diff --git a/test/delete-pre-existing-comments.js b/test/delete-pre-existing-comments.cjs similarity index 100% rename from test/delete-pre-existing-comments.js rename to test/delete-pre-existing-comments.cjs diff --git a/test/update-failing-status-check.js b/test/update-failing-status-check.cjs similarity index 100% rename from test/update-failing-status-check.js rename to test/update-failing-status-check.cjs